@hoilab/ada-cli 0.85.0 → 0.85.1
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.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/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.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/npm-shrinkwrap.json +2 -2
- 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/computer/motor/platform/macos/helper-path.mjs +0 -34
- package/dist/core/export-html/template.css +0 -1066
- package/dist/core/export-html/template.html +0 -55
- package/dist/core/export-html/template.js +0 -1864
- package/dist/core/export-html/vendor/highlight.min.js +0 -1213
- package/dist/core/export-html/vendor/marked.min.js +0 -78
- package/dist/core/prompts/sistema.md +0 -134
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/theme/dark.json +0 -90
- package/dist/modes/interactive/theme/light.json +0 -89
- package/dist/modes/interactive/theme/theme-schema.json +0 -352
- package/dist/skills/ada-engine/SKILL.md +0 -153
- package/dist/skills/skill-creator/SKILL.md +0 -90
- /package/dist/core/{commit → commits}/diff.d.ts +0 -0
- /package/dist/core/{commit → commits}/diff.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reposo.js","sourceRoot":"","sources":["../../../src/core/credenciales/reposo.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cifrado en reposo de `<agentDir>/auth.json`.\n *\n * EL HUECO: vendemos \"vault cifrado con clasificación y auditoría\"\n * (memory-engine/vault.ts) mientras las claves de API y los tokens OAuth de\n * los proveedores viven en auth.json EN CLARO, con permisos 0600 pero\n * legibles por cualquier proceso del usuario. La política de aprobación\n * (aprobacion/politica.ts) ya le impide leerlo a NUESTRO agente; esto le\n * cierra la puerta a cualquier OTRO proceso.\n *\n * DISEÑO — envolver, no sustituir:\n * `auth-storage.ts` es de upstream y el presupuesto de fork está agotado\n * (ver scripts/sync-ada.sh --check). No podemos reescribir su lectura/\n * escritura de fichero ni su bloqueo entre procesos (proper-lockfile) sin\n * pagar hunks que no tenemos. En vez de eso, ENVOLVEMOS su\n * `AuthStorageBackend`: el interior (`FileAuthStorageBackend`) sigue\n * poseyendo el candado y el `ensureFileExists`/`ensureParentDir`; nosotros\n * solo transformamos el CONTENIDO que entra y sale del candado. Todo el\n * cifrado ocurre DENTRO de la sección crítica del candado que ya existía,\n * así que la seguridad frente a otros procesos de Ada no cambia.\n *\n * CLAVE: un secreto aleatorio de 256 bits en el LLAVERO del sistema (no una\n * passphrase memorizable — nadie va a teclear una contraseña para que el\n * CLI arranque). Se deriva de nada: se genera con randomBytes y se guarda\n * en Keychain la primera vez que hace falta. Sin llavero disponible (CI,\n * contenedor, Linux sin secret-service) NO SE CIFRA: una clave que vive en\n * el mismo disco que el fichero que protege es ofuscación, no cifrado, y\n * llamarlo cifrado sería mentir en la única parte del producto donde no se\n * puede mentir. Se avisa una vez, con una línea clara, y se sigue\n * funcionando en claro (mismo comportamiento que hoy).\n *\n * FORMATO: una cabecera literal al principio del fichero distingue claro de\n * cifrado — nunca adivinamos intentando JSON.parse (un fichero cifrado\n * corrupto a medias podría parsear igual como JSON basura y confundirse con\n * \"en claro\", perdiendo credenciales calladamente).\n *\n * MIGRACIÓN: en cada lectura, si el contenido está en claro se devuelve tal\n * cual (nunca bloquea al llamador) y se agenda un recifrado en segundo\n * plano con `setImmediate` — nunca DENTRO del candado que la propia lectura\n * mantiene abierto, porque volver a pedirlo desde dentro se autobloquearía.\n * En cada escritura (a través del wrapper) se cifra antes de tocar disco,\n * con copia de seguridad y escritura atómica (fichero temporal + rename):\n * si esto corrompe auth.json, el usuario pierde el acceso a TODOS sus\n * proveedores, así que no se sustituye el fichero real hasta que el\n * temporal esté completo en disco.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { createCipheriv, createDecipheriv, randomBytes } from \"node:crypto\";\nimport { chmodSync, existsSync, readFileSync, renameSync, statSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { AuthOperationOptions, Credential } from \"@earendil-works/pi-ai\";\nimport { getAgentDir } from \"../../config.ts\";\nimport { stripBom } from \"../../utils/text.ts\";\nimport type { AuthStorageBackend } from \"../auth-storage.ts\";\n\n// ─── Formato: cabecera literal, nunca \"adivinada\" por JSON.parse ───────────\n\nconst CABECERA_CIFRADO = \"ADA-AUTHJSON-CIFRADO-V1\\n\";\n\ninterface SobreCifrado {\n\tiv: string; // base64\n\ttag: string; // base64 (GCM auth tag)\n\tdatos: string; // base64\n}\n\nfunction esFormatoCifrado(contenido: string): boolean {\n\treturn contenido.startsWith(CABECERA_CIFRADO);\n}\n\n// ─── Llavero del sistema (macOS Keychain vía `security`, sin bindings nativos) ───\n\nconst SERVICIO_LLAVERO_PRODUCCION = \"ada-cli-credenciales\";\nconst CUENTA_LLAVERO = \"auth-json-clave-maestra\";\nconst TIMEOUT_LLAVERO_MS = 5_000;\n\n/**\n * Bajo qué nombre vive la clave maestra en el llavero REAL de la máquina.\n *\n * Se puede sustituir por entorno porque las pruebas de este módulo necesitan un\n * llavero de verdad —no hay bindings nativos que fingir, y fingir `execFileSync`\n * probaría el mock, no el Keychain— y hasta ahora usaban la entrada de\n * PRODUCCIÓN. Con `__eliminarClaveDeLlaveroParaPruebas()` en su `afterEach`,\n * cada corrida de la suite BORRABA la clave maestra del usuario y creaba otra.\n *\n * Lo que eso deja detrás no es un inconveniente: el `~/.ada/agent/auth.json`\n * del usuario quedó cifrado con la clave anterior, así que pasa a ser\n * indescifrable PARA SIEMPRE, y su `.bak` también (se recifra con la misma\n * clave). Medido en esta máquina, con la huella SHA-256 de la clave del\n * llavero antes y después:\n *\n * == antes == 15900260def30338\n * npx vitest --run test/commit-mensaje.test.ts\n * == después == 15900260def30338 (intacta)\n * npx vitest --run test/credenciales-reposo.test.ts\n * == después == c8b382bb95b2285b (OTRA)\n *\n * Y AGENTS.md manda ejecutar la suite antes de dar nada por terminado, así que\n * el flujo de trabajo del propio proyecto rompía las credenciales del usuario.\n *\n * Falla CERRADO bajo vitest: si alguien quita el ajuste de `vitest.config.ts`,\n * las pruebas del llavero se caen con este mensaje en vez de volver\n * calladamente a morder la entrada de producción.\n */\nfunction servicioLlavero(): string {\n\tconst propio = process.env.ADA_LLAVERO_SERVICIO;\n\tif (propio) return propio;\n\tif (process.env.VITEST) {\n\t\tthrow new Error(\n\t\t\t\"Una prueba ha intentado usar la entrada de llavero de PRODUCCIÓN \" +\n\t\t\t\t`(\"${SERVICIO_LLAVERO_PRODUCCION}\"). Eso borra la clave maestra del usuario y deja su ` +\n\t\t\t\t\"auth.json indescifrable. Define ADA_LLAVERO_SERVICIO (lo hace vitest.config.ts).\",\n\t\t);\n\t}\n\treturn SERVICIO_LLAVERO_PRODUCCION;\n}\n\nfunction esMacOS(): boolean {\n\treturn typeof process !== \"undefined\" && process.platform === \"darwin\";\n}\n\n/**\n * True cuando hay un llavero de sistema utilizable en esta máquina.\n *\n * `ADA_SIN_LLAVERO=1` fuerza \"no disponible\" aunque estemos en macOS — es la\n * única forma de probar de verdad la rama \"sin llavero\" (headless/CI) sin\n * necesitar una máquina Linux, y también sirve de escape manual para quien\n * quiera desactivar el uso del Keychain explícitamente.\n */\nexport function hayLlaveroDisponible(): boolean {\n\treturn esMacOS() && process.env.ADA_SIN_LLAVERO !== \"1\";\n}\n\n/**\n * Tres estados, y la diferencia entre el segundo y el tercero costó las\n * credenciales de esta máquina.\n *\n * Antes esto devolvía `Buffer | null` y `null` significaba a la vez «todavía no\n * hay clave» y «no he podido leerla». Quien llamaba entendía lo primero,\n * generaba una clave nueva y la guardaba con `-U` (sobrescribir). Un fallo\n * PASAJERO de `security` —un tiempo de espera agotado con la máquina cargada,\n * el llavero bloqueado— bastaba para rotar la clave maestra y dejar\n * PERMANENTEMENTE ilegible todo `auth.json` cifrado con la anterior.\n *\n * Pasó de verdad el 2026-08-24 sobre `~/.ada/agent/auth.json`: seis\n * proveedores perdidos, sin recuperación posible, porque el llavero de macOS no\n * guarda historial.\n *\n * Es la familia de siempre —«no puedo» leído como «no hay»— pero aquí no\n * informa mal: DESTRUYE DATOS. Por eso son tres estados y no dos.\n */\ntype LecturaDeClave =\n\t| { estado: \"leida\"; clave: Buffer }\n\t| { estado: \"no-existe\" }\n\t| { estado: \"error\"; motivo: string };\n\n/** `security` devuelve 44 (errSecItemNotFound) cuando la entrada no está. */\nconst CODIGO_NO_ENCONTRADO = 44;\n\nfunction leerClaveDelLlavero(): LecturaDeClave {\n\tif (!hayLlaveroDisponible()) return { estado: \"no-existe\" };\n\t// Fuera del try a propósito: si `servicioLlavero()` se planta porque una\n\t// prueba iba a morder la entrada de producción, ese error tiene que SALIR.\n\t// Dentro del try acabaría clasificado como un `estado: \"error\"` cualquiera,\n\t// y lo que hay que hacer con él es parar, no seguir sin cifrar.\n\tconst servicio = servicioLlavero();\n\tlet salida: string;\n\ttry {\n\t\tsalida = execFileSync(\n\t\t\t\"/usr/bin/security\",\n\t\t\t[\"find-generic-password\", \"-s\", servicio, \"-a\", CUENTA_LLAVERO, \"-w\"],\n\t\t\t// stdio \"pipe\" en los tres canales: sin esto, `security` hereda\n\t\t\t// nuestro stderr y el \"could not be found in the keychain\" (normal\n\t\t\t// en el primer arranque, antes de crear la clave) se ve como si\n\t\t\t// algo hubiera ido mal.\n\t\t\t{ timeout: TIMEOUT_LLAVERO_MS, encoding: \"utf-8\", windowsHide: true, stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n\t\t).trim();\n\t} catch (error) {\n\t\tconst e = error as NodeJS.ErrnoException & { status?: number | null };\n\t\tif (e.status === CODIGO_NO_ENCONTRADO) return { estado: \"no-existe\" };\n\t\t// Todo lo demás es un fallo del que NO se puede deducir que no haya\n\t\t// clave: tiempo agotado (`ETIMEDOUT`), llavero bloqueado, `security`\n\t\t// que no arranca. Rotar aquí es lo que destruyó las credenciales.\n\t\treturn { estado: \"error\", motivo: e.code ?? `security salió con ${e.status}` };\n\t}\n\tif (!salida) return { estado: \"error\", motivo: \"el llavero devolvió una entrada vacía\" };\n\tconst clave = Buffer.from(salida, \"base64\");\n\t// Una entrada presente pero con el tamaño equivocado también es un error, no\n\t// una ausencia: sobrescribirla tiraría la clave buena si el fallo está en la\n\t// lectura y no en el dato.\n\tif (clave.length !== 32)\n\t\treturn { estado: \"error\", motivo: `la clave del llavero mide ${clave.length} bytes, no 32` };\n\treturn { estado: \"leida\", clave };\n}\n\nfunction guardarClaveEnLlavero(clave: Buffer): boolean {\n\tif (!hayLlaveroDisponible()) return false;\n\tconst servicio = servicioLlavero(); // fuera del try: ver `leerClaveDelLlavero`\n\ttry {\n\t\t// -w sin valor en argv: la contraseña se pasa por stdin para que no quede\n\t\t// visible en `ps`/el historial del proceso (mismo patrón que\n\t\t// memory-engine/keychain.ts). Comprobado a mano: `security` pide el valor\n\t\t// DOS VECES por stdin (password + confirmación) aunque no haya terminal;\n\t\t// una sola línea deja la segunda lectura vacía y falla con \"passwords\n\t\t// don't match\".\n\t\tconst valor = clave.toString(\"base64\");\n\t\texecFileSync(\n\t\t\t\"/usr/bin/security\",\n\t\t\t// SIN `-U`. Con `-U` esto SOBRESCRIBE la entrada existente, y ese es el\n\t\t\t// segundo camino por el que se perdieron las credenciales de esta\n\t\t\t// máquina: un fallo de lectura hacía creer que no había clave y este\n\t\t\t// `-U` remataba tirando la buena. Sin él, `security` falla si ya existe,\n\t\t\t// que es justo la señal que quien llama necesita para releer.\n\t\t\t//\n\t\t\t// El PRIMER camino lo encontró la revisión de `hueco-commit` y es\n\t\t\t// distinto: las pruebas de este módulo borraban la entrada de\n\t\t\t// PRODUCCIÓN en su `afterEach`. Los dos arreglos hacen falta —\n\t\t\t// `servicioLlavero()` impide que una prueba toque la clave real, y esto\n\t\t\t// impide que un fallo pasajero la rote.\n\t\t\t[\"add-generic-password\", \"-s\", servicio, \"-a\", CUENTA_LLAVERO, \"-w\"],\n\t\t\t{\n\t\t\t\ttimeout: TIMEOUT_LLAVERO_MS,\n\t\t\t\twindowsHide: true,\n\t\t\t\tinput: `${valor}\\n${valor}\\n`,\n\t\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t\t},\n\t\t);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nlet claveEnCache: Buffer | null | undefined; // undefined = aún no consultada\n\n/**\n * Clave maestra. `null` = no hay llavero en esta máquina (CI, contenedor), que\n * es el caso legítimo de \"no se cifra\". **Lanza** si el llavero está pero no se\n * ha podido leer: ahí seguir sería inventarse una clave nueva y perder lo\n * cifrado con la anterior.\n */\nfunction obtenerOCrearClave(): Buffer | null {\n\tif (!hayLlaveroDisponible()) return null;\n\tif (claveEnCache !== undefined) return claveEnCache;\n\n\tconst lectura = leerClaveDelLlavero();\n\tif (lectura.estado === \"leida\") {\n\t\tclaveEnCache = lectura.clave;\n\t\treturn claveEnCache;\n\t}\n\tif (lectura.estado === \"error\") {\n\t\t// Fallar cerrado. Un error aquí NO se cachea: el fallo puede ser pasajero\n\t\t// y el siguiente intento debe volver a preguntarle al llavero.\n\t\tthrow new Error(\n\t\t\t`No se ha podido leer la clave maestra del llavero (${lectura.motivo}).\\n` +\n\t\t\t\t\"No se genera una nueva a propósito: eso dejaría ilegible para siempre el auth.json\\n\" +\n\t\t\t\t\"ya cifrado. Desbloquea el llavero y vuelve a intentarlo, o exporta ADA_SIN_LLAVERO=1\\n\" +\n\t\t\t\t\"para trabajar sin cifrado en reposo.\",\n\t\t);\n\t}\n\n\t// No existe: primera vez. Se crea SIN `-U`, para que dos procesos a la vez no\n\t// se pisen — quien pierde la carrera relee en vez de sobrescribir.\n\tconst nueva = randomBytes(32);\n\tif (guardarClaveEnLlavero(nueva)) {\n\t\tclaveEnCache = nueva;\n\t\treturn claveEnCache;\n\t}\n\tconst segunda = leerClaveDelLlavero();\n\tif (segunda.estado === \"leida\") {\n\t\tclaveEnCache = segunda.clave;\n\t\treturn claveEnCache;\n\t}\n\t// Ni se pudo crear ni leer: sin llavero utilizable. Se deja sin cifrar, que\n\t// es el comportamiento documentado, y se avisa una vez.\n\tclaveEnCache = null;\n\treturn null;\n}\n\n// ─── AES-256-GCM ────────────────────────────────────────────────────────────\n\nfunction cifrar(contenidoClaro: string, clave: Buffer): string {\n\tconst iv = randomBytes(12);\n\tconst cipher = createCipheriv(\"aes-256-gcm\", clave, iv);\n\tconst datos = Buffer.concat([cipher.update(contenidoClaro, \"utf-8\"), cipher.final()]);\n\tconst sobre: SobreCifrado = {\n\t\tiv: iv.toString(\"base64\"),\n\t\ttag: cipher.getAuthTag().toString(\"base64\"),\n\t\tdatos: datos.toString(\"base64\"),\n\t};\n\treturn CABECERA_CIFRADO + JSON.stringify(sobre);\n}\n\nfunction descifrar(contenidoFichero: string, clave: Buffer): string {\n\tconst sobre = JSON.parse(contenidoFichero.slice(CABECERA_CIFRADO.length)) as SobreCifrado;\n\tconst decipher = createDecipheriv(\"aes-256-gcm\", clave, Buffer.from(sobre.iv, \"base64\"));\n\tdecipher.setAuthTag(Buffer.from(sobre.tag, \"base64\"));\n\tconst claro = Buffer.concat([decipher.update(Buffer.from(sobre.datos, \"base64\")), decipher.final()]);\n\treturn claro.toString(\"utf-8\");\n}\n\n// ─── Error legible: nunca un stack para un fichero dañado ─────────────────\n\n/**\n * auth.json cifrado que no se puede leer: auth tag inválido, JSON del sobre\n * truncado, o llavero sin la clave que lo cifró (p.ej. copiado desde otra\n * máquina). \"no he podido leerlo\" y \"no hay credenciales\" son cosas\n * distintas: esto SIEMPRE es lo primero, nunca se confunde con un auth.json\n * vacío legítimo.\n */\nexport class AuthJsonCorruptoError extends Error {\n\tconstructor(authPath: string, causa: unknown) {\n\t\tsuper(\n\t\t\t`auth.json está cifrado pero no se ha podido leer (${authPath}).\\n` +\n\t\t\t\t`Puede estar dañado, o cifrado con la clave de otra máquina.\\n` +\n\t\t\t\t`Qué hacer:\\n` +\n\t\t\t\t` 1. Si existe una copia de seguridad, restáurala:\\n` +\n\t\t\t\t` cp \"${authPath}.bak\" \"${authPath}\"\\n` +\n\t\t\t\t` 2. Si no, vuelve a iniciar sesión con cada proveedor:\\n` +\n\t\t\t\t` ada-cli auth login <proveedor>\\n` +\n\t\t\t\t(causa instanceof Error ? `(detalle técnico: ${causa.message})` : \"\"),\n\t\t);\n\t\tthis.name = \"AuthJsonCorruptoError\";\n\t}\n}\n\n// ─── Escritura: copia de seguridad + atómica (temporal + rename) ──────────\n\nfunction escrituraAtomicaConCopia(authPath: string, contenido: string, contenidoParaCopia?: string): void {\n\t// El permiso del fichero (0600, o 0660 si un administrador lo gestiona) es\n\t// intencional y no es nuestro para decidir — igual que\n\t// AUTH_FILE_WRITE_OPTIONS en auth-storage.ts, que solo fija el modo al\n\t// CREAR. Un rename sustituye el inodo entero, así que sin esto el permiso\n\t// original se perdería silenciosamente en cada recifrado.\n\tconst modoExistente = existsSync(authPath) ? statSync(authPath).mode & 0o777 : 0o600;\n\t// Copia ANTES de tocar el fichero real: si el rename de abajo no llegara a\n\t// completarse (disco lleno a mitad, proceso matado entre write y rename),\n\t// .bak es la única vía para no perder el acceso a TODOS los proveedores.\n\t//\n\t// `contenidoParaCopia` (si se pasa) sustituye lo que hay en disco: la\n\t// primera migración de un auth.json en claro pasa por aquí con el fichero\n\t// TODAVÍA en claro sobre disco, y una copia literal (`readFileSync`)\n\t// dejaría el secreto en claro para siempre en `.bak` — con el mismo modo\n\t// 0600 que el propio auth.json ya tenía, así que no cierra nada: reabre\n\t// exactamente el agujero que este módulo existe para tapar. Quien llama\n\t// (`escribirConCifradoSiHayClave`) cifra ese contenido antes de pasarlo.\n\tif (existsSync(authPath)) {\n\t\tconst backupPath = `${authPath}.bak`;\n\t\twriteFileSync(backupPath, contenidoParaCopia ?? readFileSync(authPath), { mode: modoExistente });\n\t\tchmodSync(backupPath, modoExistente); // mismo motivo que el temporal: el umask no debe recortar el modo\n\t}\n\tconst tmpPath = `${authPath}.tmp-${process.pid}-${Date.now()}`;\n\twriteFileSync(tmpPath, contenido, { encoding: \"utf-8\", mode: modoExistente });\n\t// El `mode` de writeFileSync pasa por el umask del proceso al CREAR un\n\t// fichero (0660 con umask 022 se queda en 0640) — algo que un `writeFileSync`\n\t// normal sobre un fichero YA existente no sufre, porque el modo se ignora\n\t// del todo si no hay creación. Como el temporal siempre es nuevo, hace\n\t// falta un chmod explícito (ignora el umask) para replicar ese mismo\n\t// comportamiento y no perder un modo gestionado por un administrador.\n\tchmodSync(tmpPath, modoExistente);\n\trenameSync(tmpPath, authPath); // rename es atómico dentro del mismo filesystem\n}\n\nlet avisoSinLlaveroMostrado = false;\n\n/** Se llama tanto al detectar un fichero en claro sin poder cifrarlo como al querer escribir sin llavero. */\nfunction avisarSinLlaveroUnaVez(): void {\n\tif (avisoSinLlaveroMostrado) return;\n\tavisoSinLlaveroMostrado = true;\n\tconsole.error(\n\t\t`[ada] auth.json NO se cifra: no hay llavero del sistema disponible en esta máquina ` +\n\t\t\t`(CI, contenedor, o Linux sin secret-service). Una clave guardada en el mismo disco que ` +\n\t\t\t`el fichero que protege sería ofuscación, no cifrado — se deja en claro con permisos 0600, ` +\n\t\t\t`como hasta ahora.`,\n\t);\n}\n\nfunction escribirConCifradoSiHayClave(authPath: string, contenidoClaro: string): void {\n\tconst clave = obtenerOCrearClave();\n\tif (!clave) {\n\t\tavisarSinLlaveroUnaVez();\n\t\tescrituraAtomicaConCopia(authPath, contenidoClaro);\n\t\treturn;\n\t}\n\t// Si lo que hay AHORA en disco está en claro (primera migración), la copia\n\t// de seguridad se cifra también con la misma clave — en vez de dejar que\n\t// `escrituraAtomicaConCopia` copie los bytes tal cual. `.bak` sigue\n\t// sirviendo para recuperar de una escritura a medias: al restaurarlo,\n\t// `decodificarParaLectura` reconoce la cabecera y lo descifra igual que al\n\t// auth.json real.\n\tconst actual = existsSync(authPath) ? readFileSync(authPath, \"utf-8\") : undefined;\n\tconst copiaSegura = actual !== undefined && !esFormatoCifrado(actual) ? cifrar(actual, clave) : actual;\n\tescrituraAtomicaConCopia(authPath, cifrar(contenidoClaro, clave), copiaSegura);\n}\n\nlet avisoCorruptoMostrado = false;\n\n/**\n * `AuthStorage.reload()` (upstream, `auth-storage.ts`) atrapa CUALQUIER error\n * de su backend y lo trata como \"transitorio, conserva el último estado\n * bueno\" — y sin `signal`, `readLatestData()` hace lo mismo. Si solo\n * lanzáramos, ese catch se come el error y el llamador ve \"no hay\n * credenciales\" en vez de \"no he podido leerlas\": exactamente la confusión\n * que no puede pasar (ver AGENTS.md, regla de errores). Por eso esto SIEMPRE\n * imprime la guía en stderr, una vez, ANTES de lanzar: quien atrape la\n * excepción se la queda para sí, pero el aviso ya salió por su cuenta.\n */\nfunction lanzarCorrupto(authPath: string, causa: unknown): never {\n\tconst error = new AuthJsonCorruptoError(authPath, causa);\n\tif (!avisoCorruptoMostrado) {\n\t\tavisoCorruptoMostrado = true;\n\t\tconsole.error(`[ada] ${error.message}`);\n\t}\n\tthrow error;\n}\n\n/** Descifra si hace falta; el contenido en claro se devuelve tal cual, sin adivinar. */\nfunction decodificarParaLectura(authPath: string, contenidoBruto: string | undefined): string | undefined {\n\tif (contenidoBruto === undefined || !esFormatoCifrado(contenidoBruto)) return contenidoBruto;\n\tconst clave = obtenerOCrearClave();\n\tif (!clave) {\n\t\tlanzarCorrupto(\n\t\t\tauthPath,\n\t\t\tnew Error(\"el fichero está cifrado pero no hay llavero disponible para descifrarlo aquí\"),\n\t\t);\n\t}\n\ttry {\n\t\treturn descifrar(contenidoBruto, clave);\n\t} catch (error) {\n\t\tlanzarCorrupto(authPath, error);\n\t}\n}\n\n// ─── Migración en segundo plano (nunca dentro del candado de la lectura) ──\n\nconst migracionEnCursoPara = new Set<string>();\n\nfunction programarMigracionEnSegundoPlano(interno: AuthStorageBackend, authPath: string): void {\n\tif (!hayLlaveroDisponible()) {\n\t\t// Sin llavero no hay nada que recifrar: pedir el candado igualmente\n\t\t// solo para reescribir el mismo texto en claro es trabajo (y contención\n\t\t// entre procesos) sin beneficio. Basta con avisar.\n\t\tavisarSinLlaveroUnaVez();\n\t\treturn;\n\t}\n\tif (migracionEnCursoPara.has(authPath)) return; // ya hay una en vuelo; la lectura repetida no acumula trabajo\n\tmigracionEnCursoPara.add(authPath);\n\t// setImmediate: la lectura que detectó \"en claro\" todavía mantiene el\n\t// candado de `interno` abierto en su propia pila de llamadas. Pedirlo de\n\t// nuevo aquí mismo se autobloquearía; con setImmediate se agenda para\n\t// DESPUÉS de que esa lectura suelte el candado.\n\tsetImmediate(() => {\n\t\tvoid interno\n\t\t\t.withLockAsync(async (actual) => {\n\t\t\t\tif (actual === undefined || esFormatoCifrado(actual)) {\n\t\t\t\t\treturn { result: undefined }; // otro proceso ya migró, o no hay nada que migrar\n\t\t\t\t}\n\t\t\t\tescribirConCifradoSiHayClave(authPath, actual);\n\t\t\t\t// Ya escribimos nosotros mismos (copia + atómico); devolver `next`\n\t\t\t\t// aquí haría que el backend interno reescribiera SIN copia de\n\t\t\t\t// seguridad, pisando la que acabamos de crear.\n\t\t\t\treturn { result: undefined };\n\t\t\t}, {})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[ada] no se pudo recifrar auth.json en segundo plano: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tmigracionEnCursoPara.delete(authPath);\n\t\t\t});\n\t});\n}\n\n// ─── El wrapper ─────────────────────────────────────────────────────────────\n\n/**\n * Envuelve un `AuthStorageBackend` (normalmente un `FileAuthStorageBackend`\n * ya construido, que sigue poseyendo el candado entre procesos) para que\n * cifre/descifre en reposo de forma transparente para quien lo use.\n */\nexport function envolverBackendCifrado(interno: AuthStorageBackend, authPath: string): AuthStorageBackend {\n\treturn {\n\t\twithLock<T>(fn: (current: string | undefined) => { result: T; next?: string }): T {\n\t\t\treturn interno.withLock((actual) => {\n\t\t\t\tconst claro = decodificarParaLectura(authPath, actual);\n\t\t\t\tif (actual !== undefined && !esFormatoCifrado(actual)) {\n\t\t\t\t\tprogramarMigracionEnSegundoPlano(interno, authPath);\n\t\t\t\t}\n\t\t\t\tconst { result, next } = fn(claro);\n\t\t\t\tif (next !== undefined) escribirConCifradoSiHayClave(authPath, next);\n\t\t\t\treturn { result }; // `next` siempre undefined hacia `interno`: la escritura ya ocurrió arriba\n\t\t\t});\n\t\t},\n\t\tasync withLockAsync<T>(\n\t\t\tfn: (current: string | undefined) => Promise<{ result: T; next?: string }>,\n\t\t\toptions?: AuthOperationOptions,\n\t\t): Promise<T> {\n\t\t\treturn interno.withLockAsync(async (actual) => {\n\t\t\t\tconst claro = decodificarParaLectura(authPath, actual);\n\t\t\t\tif (actual !== undefined && !esFormatoCifrado(actual)) {\n\t\t\t\t\tprogramarMigracionEnSegundoPlano(interno, authPath);\n\t\t\t\t}\n\t\t\t\tconst { result, next } = await fn(claro);\n\t\t\t\tif (next !== undefined) escribirConCifradoSiHayClave(authPath, next);\n\t\t\t\treturn { result };\n\t\t\t}, options);\n\t\t},\n\t};\n}\n\n/**\n * Lectura síncrona de UNA credencial ya guardada, descifrando si hace falta.\n *\n * Sustituye a `readStoredCredential` (upstream, `auth-storage.ts`), exportada\n * en `index.ts` como parte de la API pública del SDK (`@hoilab/ada-cli`) para\n * lecturas puntuales sin instanciar `AuthStorage`. Esa función hace su propio\n * `readFileSync` + `JSON.parse` sin pasar por este módulo: con auth.json ya\n * migrado a cifrado, la cabecera `ADA-AUTHJSON-CIFRADO-V1\\n` delante del JSON\n * hace que `JSON.parse` lance un `SyntaxError` que su `catch { return\n * undefined; }` convierte en \"no hay credencial\" — indistinguible de un\n * proveedor sin configurar, para CUALQUIER consumidor de esta función\n * pública, presente o futuro. Mismo nombre y misma firma (con el mismo valor\n * por defecto de `authPath`) para seguir siendo un reemplazo directo.\n */\nexport function leerCredencialGuardada(\n\tproviderId: string,\n\tauthPath: string = join(getAgentDir(), \"auth.json\"),\n): Credential | undefined {\n\ttry {\n\t\tconst bruto = stripBom(readFileSync(authPath, \"utf-8\"));\n\t\tconst claro = decodificarParaLectura(authPath, bruto);\n\t\tif (claro === undefined) return undefined;\n\t\tconst datos = JSON.parse(claro) as Record<string, Credential>;\n\t\treturn datos[providerId];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** Solo para pruebas: limpia el estado en memoria del módulo entre casos. */\nexport function __resetEstadoParaPruebas(): void {\n\tclaveEnCache = undefined;\n\tavisoSinLlaveroMostrado = false;\n\tavisoCorruptoMostrado = false;\n\tmigracionEnCursoPara.clear();\n}\n\n/** Solo para pruebas: borra la clave maestra del llavero real de esta máquina. */\nexport function __eliminarClaveDeLlaveroParaPruebas(): void {\n\tif (!esMacOS()) return;\n\tconst servicio = servicioLlavero(); // fuera del try: ver `leerClaveDelLlavero`\n\ttry {\n\t\texecFileSync(\"/usr/bin/security\", [\"delete-generic-password\", \"-s\", servicio, \"-a\", CUENTA_LLAVERO], {\n\t\t\ttimeout: TIMEOUT_LLAVERO_MS,\n\t\t\twindowsHide: true,\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t});\n\t} catch {\n\t\t// no había clave que borrar\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reposo.js","sourceRoot":"","sources":["../../../src/core/credenciales/reposo.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import type { LibroDeSesion } from "../audit/libro.ts";
|
|
25
25
|
import type { CredencialPool } from "./pool.ts";
|
|
26
|
+
import type { RegistroEnfriamiento } from "./ratelimit.ts";
|
|
26
27
|
export declare const DEFAULT_BROKER_BIND = "127.0.0.1:8765";
|
|
27
28
|
export interface OpcionesServidorBroker {
|
|
28
29
|
pool: CredencialPool;
|
|
@@ -40,6 +41,13 @@ export interface OpcionesServidorBroker {
|
|
|
40
41
|
* es auditable— en vez de en un aviso que se va con el scroll.
|
|
41
42
|
*/
|
|
42
43
|
inseguroSinTls?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Registro persistente de rate-limits. Si se pasa, un 429 reportado con
|
|
46
|
+
* `retryTrasSegundos` enfriía la credencial (por huella, nunca por clave)
|
|
47
|
+
* hasta el epoch indicado — y el descanso sobrevive a un reinicio del
|
|
48
|
+
* broker. Sin registro, el 429 sigue sin bloquear la cuenta, como siempre.
|
|
49
|
+
*/
|
|
50
|
+
enfriamiento?: RegistroEnfriamiento;
|
|
43
51
|
}
|
|
44
52
|
export interface ServidorBroker {
|
|
45
53
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servidor.d.ts","sourceRoot":"","sources":["../../../src/core/credenciales/servidor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,cAAc,CAAC;IACrB,0GAAwG;IACxG,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,8FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAuCD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2JrG","sourcesContent":["/**\n * Servidor HTTP del broker de credenciales.\n *\n * No es un producto nuevo: es un MODO de `ada-cli serve` (ver\n * `cli/serve-command.ts`). El gateway de oh-my-pi resuelve la credencial en el\n * servidor y la inyecta para que el cliente nunca vea el token; aquí no hay\n * proxy de peticiones a proveedores (fuera de alcance), así que `/v1/credential`\n * SÍ entrega el secreto — es lo mínimo para que un cliente pueda llamar al\n * proveedor sin tenerlo nunca en su disco. Lo que sí se copia sin rebajar:\n *\n * - **Fallar cerrado.** Sin bearer configurado, `iniciarServidorBroker` lanza\n * antes de abrir el socket de escucha. Un broker que arrancara sin auth\n * \"por ahora\" es exactamente el tipo de atajo que se queda para siempre.\n * - **Comparación en tiempo constante del bearer**, para no dar una guía de\n * temporización a quien intente adivinarlo por fuerza bruta.\n * - **Todo excepto `/v1/health` exige bearer.** La salud tiene que poder\n * contestar aunque el token esté mal configurado en quien pregunta — es lo\n * único que un balanceador o un `curl` de comprobación necesita sin secreto.\n *\n * Cada resolución de credencial y cada reporte de uso quedan en el libro de\n * sesión (`core/audit/libro.ts`) — es la pieza que oh-my-pi no tiene: quién\n * usó qué cuenta y cuándo, auditable.\n */\n\nimport { timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\nimport type { CredencialPool } from \"./pool.ts\";\n\nexport const DEFAULT_BROKER_BIND = \"127.0.0.1:8765\";\n\nexport interface OpcionesServidorBroker {\n\tpool: CredencialPool;\n\t/** Bearer requerido en cada petición salvo `/v1/health`. Vacío = error: ver `iniciarServidorBroker`. */\n\ttoken: string;\n\tlibro: LibroDeSesion;\n\t/** `host:puerto`. Por defecto `127.0.0.1:8765` — solo loopback, sin exposición externa. */\n\tbind?: string;\n\t/**\n\t * Permite escuchar FUERA de loopback aun sabiendo que el transporte es HTTP\n\t * sin cifrar. Sin esto, un `bind` a una interfaz real no arranca.\n\t *\n\t * El nombre es largo y feo a propósito: quien lo escribe no puede decir\n\t * después que no lo sabía, y queda escrito en el fichero de despliegue —que\n\t * es auditable— en vez de en un aviso que se va con el scroll.\n\t */\n\tinseguroSinTls?: boolean;\n}\n\nexport interface ServidorBroker {\n\turl: string;\n\tpuerto: number;\n\tcerrar(): Promise<void>;\n}\n\nfunction leerCuerpo(req: IncomingMessage): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst trozos: Buffer[] = [];\n\t\treq.on(\"data\", (t) => trozos.push(t));\n\t\treq.on(\"end\", () => resolve(Buffer.concat(trozos).toString(\"utf-8\")));\n\t\treq.on(\"error\", reject);\n\t});\n}\n\nfunction enviarJson(res: ServerResponse, estado: number, cuerpo: unknown): void {\n\tconst texto = JSON.stringify(cuerpo);\n\tres.writeHead(estado, {\n\t\t\"content-type\": \"application/json; charset=utf-8\",\n\t\t\"content-length\": Buffer.byteLength(texto),\n\t});\n\tres.end(texto);\n}\n\n/** `true` si `host` no sale de la máquina — lo único que hace inofensivo el HTTP sin cifrar. */\nfunction esLoopback(host: string): boolean {\n\treturn host === \"127.0.0.1\" || host === \"localhost\" || host === \"::1\" || host === \"[::1]\";\n}\n\n/**\n * Compara el bearer en tiempo constante. `timingSafeEqual` exige buffers de\n * igual longitud, así que una longitud distinta ya es \"no coincide\" sin pasar\n * por la comparación — no hay atajo de timing ahí porque la longitud de un\n * bearer típico no es secreta (va en la URL de configuración de cada cliente).\n */\nfunction bearerValido(cabecera: string | undefined, token: string): boolean {\n\tif (!cabecera?.startsWith(\"Bearer \")) return false;\n\tconst recibido = Buffer.from(cabecera.slice(\"Bearer \".length));\n\tconst esperado = Buffer.from(token);\n\tif (recibido.length !== esperado.length) return false;\n\treturn timingSafeEqual(recibido, esperado);\n}\n\n/**\n * Arranca el broker. Lanza SIN escuchar si no hay bearer — fallar cerrado, no\n * \"escuchar sin auth por ahora\". Esto es lo que la puerta de verificación\n * comprueba forzando el caso vacío y confirmando que no hay servidor.\n */\nexport async function iniciarServidorBroker(opciones: OpcionesServidorBroker): Promise<ServidorBroker> {\n\tconst token = opciones.token?.trim() ?? \"\";\n\tif (token === \"\") {\n\t\tthrow new Error(\n\t\t\t\"El broker no arranca sin un bearer configurado (ADA_BROKER_TOKEN). \" +\n\t\t\t\t\"Escuchar sin auth expondría las credenciales de todo el equipo a quien alcance el puerto.\",\n\t\t);\n\t}\n\n\tconst { pool, libro } = opciones;\n\tconst [host, puertoTexto] = (opciones.bind ?? DEFAULT_BROKER_BIND).split(\":\");\n\tconst puertoPedido = Number(puertoTexto);\n\n\t// El bearer viaja en texto plano: HTTP, no HTTPS. En loopback eso es\n\t// inofensivo (no sale de la máquina). En cuanto el bind apunta a una interfaz\n\t// real —que es justo lo que hace falta para que el equipo lo alcance desde\n\t// otro portátil, el caso de uso que motiva este módulo— el bearer y las\n\t// credenciales que reparte cruzan la red sin cifrar: quien esnife ese\n\t// segmento se lleva el token y, con él, cualquier credencial.\n\t//\n\t// Aquí SE FALLA CERRADO, y no es lo mismo que avisar. Un aviso por stderr\n\t// compite con la señal de éxito («broker escuchando en 0.0.0.0:8765») y\n\t// pierde: el operador lee que arrancó y sigue. Es un fallo que se lee como\n\t// éxito, la familia de defectos que más nos ha costado en este repositorio.\n\t//\n\t// El despliegue legítimo —un proxy TLS terminando por delante de este mismo\n\t// bind— sigue siendo posible: escribe `inseguroSinTls` una vez y queda en su\n\t// fichero de configuración, que es auditable. Un aviso no queda en ninguna\n\t// parte, y «te avisamos por stderr» no se sostiene delante de un auditor.\n\tif (!esLoopback(host) && opciones.inseguroSinTls !== true) {\n\t\tthrow new Error(\n\t\t\t`El broker no arranca en ${host}: fuera de loopback el bearer y todas las credenciales que ` +\n\t\t\t\t\"reparte viajarían en HTTP sin cifrar, y cualquiera en esa red podría esnifarlos.\\n\\n\" +\n\t\t\t\t\" · Recomendado: déjalo en 127.0.0.1 y llega a él por un túnel (SSH, WireGuard) o por un\\n\" +\n\t\t\t\t\" proxy TLS que termine delante.\\n\" +\n\t\t\t\t\" · Si YA tienes ese proxy TLS delante de este mismo bind, pasa `inseguroSinTls: true`\\n\" +\n\t\t\t\t\" (CLI: --inseguro-sin-tls) para confirmarlo de forma explícita.\",\n\t\t);\n\t}\n\tif (!esLoopback(host)) {\n\t\t// Llegar aquí es haberlo pedido a conciencia. Se deja constancia igualmente:\n\t\t// el que lo escribió no es siempre el que lee los registros seis meses después.\n\t\tconsole.error(\n\t\t\t`AVISO: el broker escucha en ${host} sin TLS propio, por --inseguro-sin-tls. Solo es seguro si ` +\n\t\t\t\t\"hay un proxy TLS terminando delante de este bind.\",\n\t\t);\n\t}\n\n\tconst manejar = async (req: IncomingMessage, res: ServerResponse): Promise<void> => {\n\t\tconst url = new URL(req.url ?? \"/\", \"http://localhost\");\n\n\t\tif (req.method === \"GET\" && url.pathname === \"/v1/health\") {\n\t\t\tenviarJson(res, 200, { ok: true });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!bearerValido(req.headers.authorization, token)) {\n\t\t\tenviarJson(res, 401, { error: \"bearer-invalido\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"GET\" && url.pathname === \"/v1/snapshot\") {\n\t\t\tenviarJson(res, 200, { credenciales: pool.snapshot() });\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"POST\" && url.pathname === \"/v1/credential\") {\n\t\t\tlet cuerpo: { proveedor?: string; promptCacheKey?: string; cliente?: string };\n\t\t\ttry {\n\t\t\t\tcuerpo = JSON.parse(await leerCuerpo(req));\n\t\t\t} catch {\n\t\t\t\tenviarJson(res, 400, { error: \"cuerpo-invalido\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst proveedor = cuerpo.proveedor;\n\t\t\tif (!proveedor) {\n\t\t\t\tenviarJson(res, 400, { error: \"falta-proveedor\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst elegida = pool.elegir(proveedor, cuerpo.promptCacheKey);\n\t\t\tawait libro.anotar({\n\t\t\t\ttipo: \"credencial\",\n\t\t\t\taccion: \"resuelta\",\n\t\t\t\tproveedor,\n\t\t\t\tcredencialId: elegida?.id ?? null,\n\t\t\t\tresultado: elegida ? \"ok\" : \"sin-credencial-activa\",\n\t\t\t\tcliente: cuerpo.cliente,\n\t\t\t});\n\t\t\tif (!elegida) {\n\t\t\t\t// \"No hay nada\" (todas bloqueadas o proveedor desconocido), no \"no he\n\t\t\t\t// podido\": por eso 404 con un motivo, no un 500.\n\t\t\t\tenviarJson(res, 404, { error: \"sin-credencial-activa\", proveedor });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tenviarJson(res, 200, elegida);\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"POST\" && url.pathname === \"/v1/usage\") {\n\t\t\tlet cuerpo: { id?: string; ok?: boolean; estadoHttp?: number; mensaje?: string; proveedor?: string };\n\t\t\ttry {\n\t\t\t\tcuerpo = JSON.parse(await leerCuerpo(req));\n\t\t\t} catch {\n\t\t\t\tenviarJson(res, 400, { error: \"cuerpo-invalido\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!cuerpo.id) {\n\t\t\t\tenviarJson(res, 400, { error: \"falta-id\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst resultado =\n\t\t\t\tcuerpo.ok === true\n\t\t\t\t\t? ({ ok: true } as const)\n\t\t\t\t\t: ({ ok: false, estadoHttp: cuerpo.estadoHttp, mensaje: cuerpo.mensaje ?? \"\" } as const);\n\t\t\tconst efecto = pool.marcarUso(cuerpo.id, resultado);\n\t\t\tif (!efecto) {\n\t\t\t\tenviarJson(res, 404, { error: \"credencial-desconocida\", id: cuerpo.id });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait libro.anotar({\n\t\t\t\ttipo: \"credencial\",\n\t\t\t\taccion: \"uso\",\n\t\t\t\tproveedor: cuerpo.proveedor ?? \"desconocido\",\n\t\t\t\tcredencialId: cuerpo.id,\n\t\t\t\tresultado: efecto.clase,\n\t\t\t});\n\t\t\tenviarJson(res, 200, efecto);\n\t\t\treturn;\n\t\t}\n\n\t\tenviarJson(res, 404, { error: \"ruta-desconocida\" });\n\t};\n\n\tconst server: Server = createServer((req, res) => {\n\t\tmanejar(req, res).catch((error) => {\n\t\t\tenviarJson(res, 500, {\n\t\t\t\terror: \"fallo-interno\",\n\t\t\t\tmensaje: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t});\n\t});\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tserver.once(\"error\", reject);\n\t\tserver.listen(puertoPedido, host, () => resolve());\n\t});\n\n\tconst direccion = server.address();\n\tconst puerto = typeof direccion === \"object\" && direccion ? direccion.port : puertoPedido;\n\n\treturn {\n\t\turl: `http://${host}:${puerto}`,\n\t\tpuerto,\n\t\tcerrar: () => new Promise<void>((resolve) => server.close(() => resolve())),\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"servidor.d.ts","sourceRoot":"","sources":["../../../src/core/credenciales/servidor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,cAAc,CAAC;IACrB,wGAAwG;IACxG,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAuCD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyKrG"}
|
|
@@ -70,7 +70,7 @@ export async function iniciarServidorBroker(opciones) {
|
|
|
70
70
|
throw new Error("El broker no arranca sin un bearer configurado (ADA_BROKER_TOKEN). " +
|
|
71
71
|
"Escuchar sin auth expondría las credenciales de todo el equipo a quien alcance el puerto.");
|
|
72
72
|
}
|
|
73
|
-
const { pool, libro } = opciones;
|
|
73
|
+
const { pool, libro, enfriamiento } = opciones;
|
|
74
74
|
const [host, puertoTexto] = (opciones.bind ?? DEFAULT_BROKER_BIND).split(":");
|
|
75
75
|
const puertoPedido = Number(puertoTexto);
|
|
76
76
|
// El bearer viaja en texto plano: HTTP, no HTTPS. En loopback eso es
|
|
@@ -170,6 +170,14 @@ export async function iniciarServidorBroker(opciones) {
|
|
|
170
170
|
enviarJson(res, 404, { error: "credencial-desconocida", id: cuerpo.id });
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
|
+
// Un 429 con Retry-After enfrió la cuenta (no la bloquea: sigue siendo
|
|
174
|
+
// buena). La marca por HUELLA en el registro persistente, así el
|
|
175
|
+
// descanso sobrevive al reinicio del broker y ninguna clave toca disco.
|
|
176
|
+
if (efecto.clase === "limite-de-tasa" && enfriamiento && (cuerpo.retryTrasSegundos ?? 0) > 0) {
|
|
177
|
+
const huella = pool.huellaDe(cuerpo.id);
|
|
178
|
+
if (huella)
|
|
179
|
+
enfriamiento.marcarEnfriada(huella, Date.now() + (cuerpo.retryTrasSegundos ?? 0) * 1000);
|
|
180
|
+
}
|
|
173
181
|
await libro.anotar({
|
|
174
182
|
tipo: "credencial",
|
|
175
183
|
accion: "uso",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servidor.js","sourceRoot":"","sources":["../../../src/core/credenciales/servidor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Servidor HTTP del broker de credenciales.\n *\n * No es un producto nuevo: es un MODO de `ada-cli serve` (ver\n * `cli/serve-command.ts`). El gateway de oh-my-pi resuelve la credencial en el\n * servidor y la inyecta para que el cliente nunca vea el token; aquí no hay\n * proxy de peticiones a proveedores (fuera de alcance), así que `/v1/credential`\n * SÍ entrega el secreto — es lo mínimo para que un cliente pueda llamar al\n * proveedor sin tenerlo nunca en su disco. Lo que sí se copia sin rebajar:\n *\n * - **Fallar cerrado.** Sin bearer configurado, `iniciarServidorBroker` lanza\n * antes de abrir el socket de escucha. Un broker que arrancara sin auth\n * \"por ahora\" es exactamente el tipo de atajo que se queda para siempre.\n * - **Comparación en tiempo constante del bearer**, para no dar una guía de\n * temporización a quien intente adivinarlo por fuerza bruta.\n * - **Todo excepto `/v1/health` exige bearer.** La salud tiene que poder\n * contestar aunque el token esté mal configurado en quien pregunta — es lo\n * único que un balanceador o un `curl` de comprobación necesita sin secreto.\n *\n * Cada resolución de credencial y cada reporte de uso quedan en el libro de\n * sesión (`core/audit/libro.ts`) — es la pieza que oh-my-pi no tiene: quién\n * usó qué cuenta y cuándo, auditable.\n */\n\nimport { timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\nimport type { CredencialPool } from \"./pool.ts\";\n\nexport const DEFAULT_BROKER_BIND = \"127.0.0.1:8765\";\n\nexport interface OpcionesServidorBroker {\n\tpool: CredencialPool;\n\t/** Bearer requerido en cada petición salvo `/v1/health`. Vacío = error: ver `iniciarServidorBroker`. */\n\ttoken: string;\n\tlibro: LibroDeSesion;\n\t/** `host:puerto`. Por defecto `127.0.0.1:8765` — solo loopback, sin exposición externa. */\n\tbind?: string;\n\t/**\n\t * Permite escuchar FUERA de loopback aun sabiendo que el transporte es HTTP\n\t * sin cifrar. Sin esto, un `bind` a una interfaz real no arranca.\n\t *\n\t * El nombre es largo y feo a propósito: quien lo escribe no puede decir\n\t * después que no lo sabía, y queda escrito en el fichero de despliegue —que\n\t * es auditable— en vez de en un aviso que se va con el scroll.\n\t */\n\tinseguroSinTls?: boolean;\n}\n\nexport interface ServidorBroker {\n\turl: string;\n\tpuerto: number;\n\tcerrar(): Promise<void>;\n}\n\nfunction leerCuerpo(req: IncomingMessage): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst trozos: Buffer[] = [];\n\t\treq.on(\"data\", (t) => trozos.push(t));\n\t\treq.on(\"end\", () => resolve(Buffer.concat(trozos).toString(\"utf-8\")));\n\t\treq.on(\"error\", reject);\n\t});\n}\n\nfunction enviarJson(res: ServerResponse, estado: number, cuerpo: unknown): void {\n\tconst texto = JSON.stringify(cuerpo);\n\tres.writeHead(estado, {\n\t\t\"content-type\": \"application/json; charset=utf-8\",\n\t\t\"content-length\": Buffer.byteLength(texto),\n\t});\n\tres.end(texto);\n}\n\n/** `true` si `host` no sale de la máquina — lo único que hace inofensivo el HTTP sin cifrar. */\nfunction esLoopback(host: string): boolean {\n\treturn host === \"127.0.0.1\" || host === \"localhost\" || host === \"::1\" || host === \"[::1]\";\n}\n\n/**\n * Compara el bearer en tiempo constante. `timingSafeEqual` exige buffers de\n * igual longitud, así que una longitud distinta ya es \"no coincide\" sin pasar\n * por la comparación — no hay atajo de timing ahí porque la longitud de un\n * bearer típico no es secreta (va en la URL de configuración de cada cliente).\n */\nfunction bearerValido(cabecera: string | undefined, token: string): boolean {\n\tif (!cabecera?.startsWith(\"Bearer \")) return false;\n\tconst recibido = Buffer.from(cabecera.slice(\"Bearer \".length));\n\tconst esperado = Buffer.from(token);\n\tif (recibido.length !== esperado.length) return false;\n\treturn timingSafeEqual(recibido, esperado);\n}\n\n/**\n * Arranca el broker. Lanza SIN escuchar si no hay bearer — fallar cerrado, no\n * \"escuchar sin auth por ahora\". Esto es lo que la puerta de verificación\n * comprueba forzando el caso vacío y confirmando que no hay servidor.\n */\nexport async function iniciarServidorBroker(opciones: OpcionesServidorBroker): Promise<ServidorBroker> {\n\tconst token = opciones.token?.trim() ?? \"\";\n\tif (token === \"\") {\n\t\tthrow new Error(\n\t\t\t\"El broker no arranca sin un bearer configurado (ADA_BROKER_TOKEN). \" +\n\t\t\t\t\"Escuchar sin auth expondría las credenciales de todo el equipo a quien alcance el puerto.\",\n\t\t);\n\t}\n\n\tconst { pool, libro } = opciones;\n\tconst [host, puertoTexto] = (opciones.bind ?? DEFAULT_BROKER_BIND).split(\":\");\n\tconst puertoPedido = Number(puertoTexto);\n\n\t// El bearer viaja en texto plano: HTTP, no HTTPS. En loopback eso es\n\t// inofensivo (no sale de la máquina). En cuanto el bind apunta a una interfaz\n\t// real —que es justo lo que hace falta para que el equipo lo alcance desde\n\t// otro portátil, el caso de uso que motiva este módulo— el bearer y las\n\t// credenciales que reparte cruzan la red sin cifrar: quien esnife ese\n\t// segmento se lleva el token y, con él, cualquier credencial.\n\t//\n\t// Aquí SE FALLA CERRADO, y no es lo mismo que avisar. Un aviso por stderr\n\t// compite con la señal de éxito («broker escuchando en 0.0.0.0:8765») y\n\t// pierde: el operador lee que arrancó y sigue. Es un fallo que se lee como\n\t// éxito, la familia de defectos que más nos ha costado en este repositorio.\n\t//\n\t// El despliegue legítimo —un proxy TLS terminando por delante de este mismo\n\t// bind— sigue siendo posible: escribe `inseguroSinTls` una vez y queda en su\n\t// fichero de configuración, que es auditable. Un aviso no queda en ninguna\n\t// parte, y «te avisamos por stderr» no se sostiene delante de un auditor.\n\tif (!esLoopback(host) && opciones.inseguroSinTls !== true) {\n\t\tthrow new Error(\n\t\t\t`El broker no arranca en ${host}: fuera de loopback el bearer y todas las credenciales que ` +\n\t\t\t\t\"reparte viajarían en HTTP sin cifrar, y cualquiera en esa red podría esnifarlos.\\n\\n\" +\n\t\t\t\t\" · Recomendado: déjalo en 127.0.0.1 y llega a él por un túnel (SSH, WireGuard) o por un\\n\" +\n\t\t\t\t\" proxy TLS que termine delante.\\n\" +\n\t\t\t\t\" · Si YA tienes ese proxy TLS delante de este mismo bind, pasa `inseguroSinTls: true`\\n\" +\n\t\t\t\t\" (CLI: --inseguro-sin-tls) para confirmarlo de forma explícita.\",\n\t\t);\n\t}\n\tif (!esLoopback(host)) {\n\t\t// Llegar aquí es haberlo pedido a conciencia. Se deja constancia igualmente:\n\t\t// el que lo escribió no es siempre el que lee los registros seis meses después.\n\t\tconsole.error(\n\t\t\t`AVISO: el broker escucha en ${host} sin TLS propio, por --inseguro-sin-tls. Solo es seguro si ` +\n\t\t\t\t\"hay un proxy TLS terminando delante de este bind.\",\n\t\t);\n\t}\n\n\tconst manejar = async (req: IncomingMessage, res: ServerResponse): Promise<void> => {\n\t\tconst url = new URL(req.url ?? \"/\", \"http://localhost\");\n\n\t\tif (req.method === \"GET\" && url.pathname === \"/v1/health\") {\n\t\t\tenviarJson(res, 200, { ok: true });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!bearerValido(req.headers.authorization, token)) {\n\t\t\tenviarJson(res, 401, { error: \"bearer-invalido\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"GET\" && url.pathname === \"/v1/snapshot\") {\n\t\t\tenviarJson(res, 200, { credenciales: pool.snapshot() });\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"POST\" && url.pathname === \"/v1/credential\") {\n\t\t\tlet cuerpo: { proveedor?: string; promptCacheKey?: string; cliente?: string };\n\t\t\ttry {\n\t\t\t\tcuerpo = JSON.parse(await leerCuerpo(req));\n\t\t\t} catch {\n\t\t\t\tenviarJson(res, 400, { error: \"cuerpo-invalido\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst proveedor = cuerpo.proveedor;\n\t\t\tif (!proveedor) {\n\t\t\t\tenviarJson(res, 400, { error: \"falta-proveedor\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst elegida = pool.elegir(proveedor, cuerpo.promptCacheKey);\n\t\t\tawait libro.anotar({\n\t\t\t\ttipo: \"credencial\",\n\t\t\t\taccion: \"resuelta\",\n\t\t\t\tproveedor,\n\t\t\t\tcredencialId: elegida?.id ?? null,\n\t\t\t\tresultado: elegida ? \"ok\" : \"sin-credencial-activa\",\n\t\t\t\tcliente: cuerpo.cliente,\n\t\t\t});\n\t\t\tif (!elegida) {\n\t\t\t\t// \"No hay nada\" (todas bloqueadas o proveedor desconocido), no \"no he\n\t\t\t\t// podido\": por eso 404 con un motivo, no un 500.\n\t\t\t\tenviarJson(res, 404, { error: \"sin-credencial-activa\", proveedor });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tenviarJson(res, 200, elegida);\n\t\t\treturn;\n\t\t}\n\n\t\tif (req.method === \"POST\" && url.pathname === \"/v1/usage\") {\n\t\t\tlet cuerpo: { id?: string; ok?: boolean; estadoHttp?: number; mensaje?: string; proveedor?: string };\n\t\t\ttry {\n\t\t\t\tcuerpo = JSON.parse(await leerCuerpo(req));\n\t\t\t} catch {\n\t\t\t\tenviarJson(res, 400, { error: \"cuerpo-invalido\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!cuerpo.id) {\n\t\t\t\tenviarJson(res, 400, { error: \"falta-id\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst resultado =\n\t\t\t\tcuerpo.ok === true\n\t\t\t\t\t? ({ ok: true } as const)\n\t\t\t\t\t: ({ ok: false, estadoHttp: cuerpo.estadoHttp, mensaje: cuerpo.mensaje ?? \"\" } as const);\n\t\t\tconst efecto = pool.marcarUso(cuerpo.id, resultado);\n\t\t\tif (!efecto) {\n\t\t\t\tenviarJson(res, 404, { error: \"credencial-desconocida\", id: cuerpo.id });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait libro.anotar({\n\t\t\t\ttipo: \"credencial\",\n\t\t\t\taccion: \"uso\",\n\t\t\t\tproveedor: cuerpo.proveedor ?? \"desconocido\",\n\t\t\t\tcredencialId: cuerpo.id,\n\t\t\t\tresultado: efecto.clase,\n\t\t\t});\n\t\t\tenviarJson(res, 200, efecto);\n\t\t\treturn;\n\t\t}\n\n\t\tenviarJson(res, 404, { error: \"ruta-desconocida\" });\n\t};\n\n\tconst server: Server = createServer((req, res) => {\n\t\tmanejar(req, res).catch((error) => {\n\t\t\tenviarJson(res, 500, {\n\t\t\t\terror: \"fallo-interno\",\n\t\t\t\tmensaje: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t});\n\t});\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tserver.once(\"error\", reject);\n\t\tserver.listen(puertoPedido, host, () => resolve());\n\t});\n\n\tconst direccion = server.address();\n\tconst puerto = typeof direccion === \"object\" && direccion ? direccion.port : puertoPedido;\n\n\treturn {\n\t\turl: `http://${host}:${puerto}`,\n\t\tpuerto,\n\t\tcerrar: () => new Promise<void>((resolve) => server.close(() => resolve())),\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"servidor.js","sourceRoot":"","sources":["../../../src/core/credenciales/servidor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAO,MAAM,sBAAsB,EAAE,aAAwB,CAAC;AAC9D,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAQ1D,CAAC"
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAO,MAAM,sBAAsB,EAAE,aAAwB,CAAC;AAC9D,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAQ1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAkB,QAAQ,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC/D,KAAK;IACL,SAAS;IACT,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACL,CAAC"
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAkB,QAAQ,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC/D,KAAK;IACL,SAAS;IACT,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comandos.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/comandos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AA+BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,+BAA+B,CAoC9E"
|
|
1
|
+
{"version":3,"file":"comandos.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/comandos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AA+BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,+BAA+B,CAoC9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comandos.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/comandos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAkB9D,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAEtC,6DAA6D;AAC7D,SAAS,UAAU,CAAC,GAAW,EAAE,MAAgB
|
|
1
|
+
{"version":3,"file":"comandos.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/comandos.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,20 @@ export interface ServidorMcpDescubierto {
|
|
|
23
23
|
transporte: "http" | "stdio";
|
|
24
24
|
url?: string;
|
|
25
25
|
comando?: string;
|
|
26
|
+
/** Argumentos del comando stdio (para comparar conexiones entre sí). */
|
|
27
|
+
args?: string[];
|
|
26
28
|
/** true solo si Ada puede hablar con él de verdad (HTTP y no desactivado). */
|
|
27
29
|
soportado: boolean;
|
|
28
30
|
/** Por qué no está soportado. Ausente cuando `soportado` es true. */
|
|
29
31
|
motivo?: string;
|
|
32
|
+
/**
|
|
33
|
+
* true si otra conexión de mayor precedencia (proyecto > usuario) es
|
|
34
|
+
* conectivamente igual (misma URL o mismo command+args normalizados) y la
|
|
35
|
+
* tapa. Sigue listándose: el shadowing es visible, nunca silencioso.
|
|
36
|
+
*/
|
|
37
|
+
_shadowed?: boolean;
|
|
38
|
+
/** Quién la tapa. Presente solo cuando `_shadowed` es true. */
|
|
39
|
+
tapadaPor?: string;
|
|
30
40
|
}
|
|
31
41
|
export interface ResultadoDescubrimientoMcp {
|
|
32
42
|
servidores: ServidorMcpDescubierto[];
|
|
@@ -39,4 +49,6 @@ export interface ResultadoDescubrimientoMcp {
|
|
|
39
49
|
}>;
|
|
40
50
|
}
|
|
41
51
|
export declare function descubrirServidoresMcp(cwd: string, home?: string): ResultadoDescubrimientoMcp;
|
|
52
|
+
/** Higiene B06: discovery con timeout — el handler compite vs timer; si llega a tiempo gana, si no fallback. */
|
|
53
|
+
export declare function descubrirServidoresMcpConTimeout(cwd: string, timeoutMs: number, fallback: ResultadoDescubrimientoMcp, home?: string): Promise<ResultadoDescubrimientoMcp>;
|
|
42
54
|
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACtC,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IAC1C,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,gDAAgD;IAChD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAqDD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,0BAA0B,CA4GxG;AAED,gHAAgH;AAChH,wBAAsB,gCAAgC,CACrD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,0BAA0B,EACpC,IAAI,GAAE,MAAkB,GACtB,OAAO,CAAC,0BAA0B,CAAC,CAGrC"}
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
import { existsSync, readFileSync } from "node:fs";
|
|
16
16
|
import { homedir } from "node:os";
|
|
17
17
|
import { join, resolve } from "node:path";
|
|
18
|
+
import { dedupFirstWins } from "../capability/index.js";
|
|
19
|
+
import { raceHandlerWithTimeout } from "../higiene/race-handler.js";
|
|
18
20
|
/**
|
|
19
21
|
* Dónde mira cada herramienta, tomado de sus propios adaptadores
|
|
20
22
|
* (oh-my-pi: claude.ts, cursor.ts, vscode.ts, gemini.ts, mcp-json.ts).
|
|
@@ -97,6 +99,9 @@ export function descubrirServidoresMcp(cwd, home = homedir()) {
|
|
|
97
99
|
? config.httpUrl
|
|
98
100
|
: undefined;
|
|
99
101
|
const comando = typeof config.command === "string" ? config.command : undefined;
|
|
102
|
+
const args = Array.isArray(config.args)
|
|
103
|
+
? config.args.filter((a) => typeof a === "string")
|
|
104
|
+
: undefined;
|
|
100
105
|
if (!url && !comando) {
|
|
101
106
|
errores.push({ ruta: absoluta, motivo: `servidor '${nombre}': sin 'url' ni 'command'` });
|
|
102
107
|
continue;
|
|
@@ -120,11 +125,38 @@ export function descubrirServidoresMcp(cwd, home = homedir()) {
|
|
|
120
125
|
transporte,
|
|
121
126
|
url,
|
|
122
127
|
comando,
|
|
128
|
+
args,
|
|
123
129
|
soportado,
|
|
124
130
|
motivo,
|
|
125
131
|
});
|
|
126
132
|
}
|
|
127
133
|
}
|
|
134
|
+
// Dedup conectivo reutilizando la máquina del capability registry
|
|
135
|
+
// (first-wins + `_shadowed`). FUENTES ya viene ordenada proyecto antes que
|
|
136
|
+
// usuario, así que first-wins == precedencia proyecto > usuario.
|
|
137
|
+
const claveConexion = (s) => s.transporte === "http"
|
|
138
|
+
? `http:${(s.url ?? "").trim().replace(/\/+$/, "").toLowerCase()}`
|
|
139
|
+
: `stdio:${[s.comando ?? "", ...(s.args ?? [])].join(" ").trim().toLowerCase()}`;
|
|
140
|
+
const ganadorPorClave = new Map();
|
|
141
|
+
for (const s of servidores) {
|
|
142
|
+
const clave = claveConexion(s);
|
|
143
|
+
if (!ganadorPorClave.has(clave))
|
|
144
|
+
ganadorPorClave.set(clave, s);
|
|
145
|
+
}
|
|
146
|
+
dedupFirstWins(servidores, claveConexion);
|
|
147
|
+
for (const s of servidores) {
|
|
148
|
+
if (!s._shadowed || s.tapadaPor)
|
|
149
|
+
continue;
|
|
150
|
+
const ganador = ganadorPorClave.get(claveConexion(s));
|
|
151
|
+
s.tapadaPor = ganador
|
|
152
|
+
? `${ganador.nivel}: ${ganador.origen} '${ganador.nombre}' (${ganador.ruta})`
|
|
153
|
+
: "otra conexión equivalente de mayor precedencia";
|
|
154
|
+
}
|
|
128
155
|
return { servidores, ficherosMirados, errores };
|
|
129
156
|
}
|
|
157
|
+
/** Higiene B06: discovery con timeout — el handler compite vs timer; si llega a tiempo gana, si no fallback. */
|
|
158
|
+
export async function descubrirServidoresMcpConTimeout(cwd, timeoutMs, fallback, home = homedir()) {
|
|
159
|
+
const handler = Promise.resolve(descubrirServidoresMcp(cwd, home));
|
|
160
|
+
return raceHandlerWithTimeout(handler, timeoutMs, fallback);
|
|
161
|
+
}
|
|
130
162
|
//# sourceMappingURL=mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6C1C;;;;;;;GAOG;AACH,MAAM,OAAO,GAAgB;IAC5B,EAAE,MAAM,EAAE,0BAAyB,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IAChG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IACtF,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;IACxF,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/F,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;IACtF,EAAE,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAC3G,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;CACrF,CAAC;AAEF,SAAS,SAAS,CAAC,IAAa,EAAE,OAA6B,EAAE,GAAW,EAAkC;IAC7G,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAI,IAAgC,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAI,QAAoC,CAAC,KAAK,CAAC,IAAK,QAAoC,CAAC,GAAG,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3D,MAAM,OAAO,GAAI,QAAoC,CAAC,UAAU,CAAC;QACjE,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;IAC9D,MAAM,OAAO,GAAI,IAAgC,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,CAC5F;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,IAAI,GAAW,OAAO,EAAE,EAA8B;IACzG,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,OAAO,GAA4C,EAAE,CAAC;IAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,uEAAuE;QACvE,uEAAuE;QACvE,iBAAiB;QACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACJ,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACrG,SAAS;QACV,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAe,EAAE,CAAC,CAAC;YAC1D,SAAS;QACV,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrD,0EAAyE;QACzE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,MAAM,6BAA2B,EAAE,CAAC,CAAC;gBACzF,SAAS;YACV,CAAC;YACD,MAAM,MAAM,GAAG,GAA8B,CAAC;YAC9C,mEAAiE;YACjE,wDAAwD;YACxD,MAAM,GAAG,GACR,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;gBAC7B,CAAC,CAAC,MAAM,CAAC,GAAG;gBACZ,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;oBACnC,CAAC,CAAC,MAAM,CAAC,OAAO;oBAChB,CAAC,CAAC,SAAS,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAEhF,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,MAAM,2BAA2B,EAAE,CAAC,CAAC;gBACzF,SAAS;YACV,CAAC;YAED,MAAM,UAAU,GAAqB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;YAC7C,MAAM,SAAS,GAAG,UAAU,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC;YACxD,MAAM,MAAM,GAAG,WAAW;gBACzB,CAAC,CAAC,0DAAyD;gBAC3D,CAAC,CAAC,UAAU,KAAK,OAAO;oBACvB,CAAC,CAAC,yFAAwF;oBAC1F,CAAC,CAAC,SAAS,CAAC;YAEd,UAAU,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,QAAQ;gBACd,qEAAoE;gBACpE,qEAAmE;gBACnE,qEAAkE;gBAClE,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;gBACtE,MAAM;gBACN,UAAU;gBACV,GAAG;gBACH,OAAO;gBACP,SAAS;gBACT,MAAM;aACN,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AAAA,CAChD","sourcesContent":["/**\n * Servidores MCP que otras herramientas ya han configurado en este proyecto\n * (o para este usuario), leídos de sus propios ficheros de config.\n *\n * La decisión que no es obvia: un servidor `stdio` se LISTA, nunca se lanza.\n * `core/mcp/client.ts` solo habla Streamable HTTP a propósito — lanzar un\n * proceso arbitrario que otra herramienta dejó apuntado en un JSON es\n * superficie de ejecución que no se abre por defecto. Así que aquí no hay\n * \"activar\": hay \"encontrado y soportado\" frente a \"encontrado y no\n * soportado, y por qué\".\n *\n * Cada fichero mirado se anota exista o no: es lo único que permite decir\n * DÓNDE se ha buscado en un proyecto vacío, en vez de un \"nada\" mudo.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\n\nexport type NivelConfigMcp = \"usuario\" | \"proyecto\";\n\nexport interface ServidorMcpDescubierto {\n\t/** De qué herramienta viene la config. */\n\torigen: string;\n\t/** Ruta absoluta al fichero de config. */\n\truta: string;\n\tnivel: NivelConfigMcp;\n\tnombre: string;\n\ttransporte: \"http\" | \"stdio\";\n\turl?: string;\n\tcomando?: string;\n\t/** true solo si Ada puede hablar con él de verdad (HTTP y no desactivado). */\n\tsoportado: boolean;\n\t/** Por qué no está soportado. Ausente cuando `soportado` es true. */\n\tmotivo?: string;\n}\n\nexport interface ResultadoDescubrimientoMcp {\n\tservidores: ServidorMcpDescubierto[];\n\t/** Todos los ficheros mirados, existan o no. */\n\tficherosMirados: string[];\n\t/** Ficheros o entradas que existían pero no se pudieron leer/interpretar. */\n\terrores: Array<{ ruta: string; motivo: string }>;\n}\n\ninterface FuenteMcp {\n\torigen: string;\n\trelativa: string;\n\tbase: \"proyecto\" | \"usuario\";\n\t/**\n\t * \"plano\": {mcpServers:{...}} en la raíz (Cursor, Claude Code, Gemini CLI,\n\t * .mcp.json). \"vscode\": {servers:{...}} en la raíz — VS Code NO anida bajo\n\t * \"mcp\" en `.vscode/mcp.json`; eso solo pasa en su settings.json de\n\t * usuario, que aquí no se lee. \"claude-proyecto\": servidores que Claude\n\t * Code guarda para ESTE proyecto dentro de `~/.claude.json`, en\n\t * `projects[cwd].mcpServers` — el caso más común en la práctica (MCP\n\t * añadido con `claude mcp add` sin `--scope user`), y el que un `mcpServers`\n\t * de nivel superior nunca ve.\n\t */\n\tformato: \"plano\" | \"vscode\" | \"claude-proyecto\";\n}\n\n/**\n * Dónde mira cada herramienta, tomado de sus propios adaptadores\n * (oh-my-pi: claude.ts, cursor.ts, vscode.ts, gemini.ts, mcp-json.ts).\n *\n * `.claude/mcp.json` NO es un fichero real de Claude Code (fue una feature\n * request rechazada, anthropics/claude-code#5350) — se quitó de aquí porque\n * \"mirado en\" no puede incluir un sitio que la herramienta real nunca escribe.\n */\nconst FUENTES: FuenteMcp[] = [\n\t{ origen: \"MCP (raíz del proyecto)\", relativa: \".mcp.json\", base: \"proyecto\", formato: \"plano\" },\n\t{ origen: \"Cursor\", relativa: \".cursor/mcp.json\", base: \"proyecto\", formato: \"plano\" },\n\t{ origen: \"VS Code\", relativa: \".vscode/mcp.json\", base: \"proyecto\", formato: \"vscode\" },\n\t{ origen: \"Gemini CLI\", relativa: \".gemini/settings.json\", base: \"proyecto\", formato: \"plano\" },\n\t{ origen: \"Claude Code\", relativa: \".claude.json\", base: \"usuario\", formato: \"plano\" },\n\t{ origen: \"Claude Code (proyecto)\", relativa: \".claude.json\", base: \"usuario\", formato: \"claude-proyecto\" },\n\t{ origen: \"Cursor\", relativa: \".cursor/mcp.json\", base: \"usuario\", formato: \"plano\" },\n];\n\nfunction serversDe(json: unknown, formato: FuenteMcp[\"formato\"], cwd: string): Record<string, unknown> | null {\n\tif (!json || typeof json !== \"object\") return null;\n\tif (formato === \"claude-proyecto\") {\n\t\tconst projects = (json as Record<string, unknown>).projects;\n\t\tif (!projects || typeof projects !== \"object\") return null;\n\t\tconst clave = resolve(cwd);\n\t\tconst proyecto = (projects as Record<string, unknown>)[clave] ?? (projects as Record<string, unknown>)[cwd];\n\t\tif (!proyecto || typeof proyecto !== \"object\") return null;\n\t\tconst servers = (proyecto as Record<string, unknown>).mcpServers;\n\t\treturn servers && typeof servers === \"object\" ? (servers as Record<string, unknown>) : null;\n\t}\n\tconst clave = formato === \"vscode\" ? \"servers\" : \"mcpServers\";\n\tconst servers = (json as Record<string, unknown>)[clave];\n\treturn servers && typeof servers === \"object\" ? (servers as Record<string, unknown>) : null;\n}\n\nexport function descubrirServidoresMcp(cwd: string, home: string = homedir()): ResultadoDescubrimientoMcp {\n\tconst servidores: ServidorMcpDescubierto[] = [];\n\tconst ficherosMirados: string[] = [];\n\tconst errores: Array<{ ruta: string; motivo: string }> = [];\n\n\tfor (const fuente of FUENTES) {\n\t\tconst absoluta = join(fuente.base === \"usuario\" ? home : cwd, fuente.relativa);\n\t\t// Un mismo fichero puede aparecer en dos fuentes (p.ej. `.claude.json`\n\t\t// para el scope de usuario y para el de proyecto): se mira una vez, se\n\t\t// anota una vez.\n\t\tif (!ficherosMirados.includes(absoluta)) ficherosMirados.push(absoluta);\n\t\tif (!existsSync(absoluta)) continue;\n\n\t\tlet contenido: string;\n\t\ttry {\n\t\t\tcontenido = readFileSync(absoluta, \"utf-8\");\n\t\t} catch (error) {\n\t\t\terrores.push({ ruta: absoluta, motivo: error instanceof Error ? error.message : \"no se pudo leer\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet json: unknown;\n\t\ttry {\n\t\t\tjson = JSON.parse(contenido);\n\t\t} catch {\n\t\t\terrores.push({ ruta: absoluta, motivo: \"JSON inválido\" });\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst servers = serversDe(json, fuente.formato, cwd);\n\t\t// Fichero válido sin mcpServers: no hay nada que listar, no es un fallo.\n\t\tif (!servers) continue;\n\n\t\tfor (const [nombre, raw] of Object.entries(servers)) {\n\t\t\tif (!raw || typeof raw !== \"object\") {\n\t\t\t\terrores.push({ ruta: absoluta, motivo: `servidor '${nombre}': configuración inválida` });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst config = raw as Record<string, unknown>;\n\t\t\t// Gemini CLI usa `httpUrl` (no `url`) para transporte HTTP — ver\n\t\t\t// docs/tools/mcp-server.md de google-gemini/gemini-cli.\n\t\t\tconst url =\n\t\t\t\ttypeof config.url === \"string\"\n\t\t\t\t\t? config.url\n\t\t\t\t\t: typeof config.httpUrl === \"string\"\n\t\t\t\t\t\t? config.httpUrl\n\t\t\t\t\t\t: undefined;\n\t\t\tconst comando = typeof config.command === \"string\" ? config.command : undefined;\n\n\t\t\tif (!url && !comando) {\n\t\t\t\terrores.push({ ruta: absoluta, motivo: `servidor '${nombre}': sin 'url' ni 'command'` });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transporte: \"http\" | \"stdio\" = url ? \"http\" : \"stdio\";\n\t\t\tconst desactivado = config.enabled === false;\n\t\t\tconst soportado = transporte === \"http\" && !desactivado;\n\t\t\tconst motivo = desactivado\n\t\t\t\t? \"desactivado en su propia configuración (enabled: false)\"\n\t\t\t\t: transporte === \"stdio\"\n\t\t\t\t\t? \"servidor stdio: el cliente MCP de Ada solo habla HTTP a propósito (core/mcp/client.ts)\"\n\t\t\t\t\t: undefined;\n\n\t\t\tservidores.push({\n\t\t\t\torigen: fuente.origen,\n\t\t\t\truta: absoluta,\n\t\t\t\t// `claude-proyecto` vive físicamente en el fichero de usuario, pero\n\t\t\t\t// es config de ESTE proyecto — el nivel que importa para quien lee\n\t\t\t\t// la salida es el lógico, no dónde Claude Code decidió guardarlo.\n\t\t\t\tnivel: fuente.formato === \"claude-proyecto\" ? \"proyecto\" : fuente.base,\n\t\t\t\tnombre,\n\t\t\t\ttransporte,\n\t\t\t\turl,\n\t\t\t\tcomando,\n\t\t\t\tsoportado,\n\t\t\t\tmotivo,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn { servidores, ficherosMirados, errores };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reglas.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/reglas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,MAAM,WAAW,gBAAgB;IAChC
|
|
1
|
+
{"version":3,"file":"reglas.d.ts","sourceRoot":"","sources":["../../../src/core/descubrimiento/reglas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,MAAM,WAAW,gBAAgB;IAChC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAuDD,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CA4CvG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAG5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reglas.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/reglas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Las reglas que el proyecto YA tiene escritas, vengan de la herramienta que\n * vengan.\n *\n * Ada leía `AGENTS.md` y `CLAUDE.md`. Un repositorio real suele tener además\n * `.cursor/rules/*.mdc`, `.clinerules`, `GEMINI.md` o\n * `.github/copilot-instructions.md`, escritos con esfuerzo y que dicen cosas\n * como «este proyecto usa pnpm, no npm» o «nunca toques `generated/`».\n * Ignorarlas obliga a reescribirlas para que Ada sea útil, y esa media hora es\n * exactamente donde se abandona una herramienta nueva.\n *\n * oh-my-pi tiene un `discovery/` de 8.773 líneas que lee la configuración de\n * diez competidores: Claude, Cursor, Codex, Cline, Gemini, Windsurf, OpenCode,\n * VS Code, GitHub Copilot y sus plugins. Esto cubre la parte que se nota el\n * primer minuto: las REGLAS.\n *\n * Tres decisiones que no son obvias:\n *\n * - **`AGENTS.md` y `CLAUDE.md` no se tocan.** Los carga `resource-loader` con\n * su propia precedencia y su herencia por directorios. Duplicarlos aquí los\n * inyectaría dos veces.\n * - **Se deduplica por CONTENIDO**, no por ruta. Es muy común tener el mismo\n * texto en `CLAUDE.md` y en `.cursorrules`: quien mantiene los dos los copia.\n * Inyectarlo dos veces gasta contexto y le dice al modelo, sin querer, que\n * esa regla importa el doble.\n * - **Hay tope de tamaño y se dice cuando se corta.** Un `.cursor/rules/`\n * grande puede llevarse el contexto entero, y quedarse sin sitio para el\n * código es peor que perder una regla. Lo que no se hace es cortar en\n * silencio.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport interface ReglaDescubierta {\n\t/** De qué herramienta viene. Va en la etiqueta para que el modelo lo sepa. */\n\torigen: string;\n\t/** Ruta relativa al proyecto. */\n\truta: string;\n\tcontenido: string;\n}\n\n/** Presupuesto por defecto: suficiente para reglas, no para un manual. */\nconst TOPE_TOTAL = 64 * 1024;\nconst TOPE_FICHERO = 32 * 1024;\n\ninterface Fuente {\n\torigen: string;\n\t/** Fichero suelto. */\n\tfichero?: string;\n\t/** Directorio del que se leen todos los ficheros con estas extensiones. */\n\tdirectorio?: string;\n\textensiones?: string[];\n}\n\n/**\n * Dónde mira cada herramienta, tomado de sus propios adaptadores.\n *\n * No se incluyen `AGENTS.md` ni `CLAUDE.md`: de esos ya se encarga\n * `resource-loader`, con herencia por directorios.\n */\nconst FUENTES: Fuente[] = [\n\t{ origen: \"Gemini\", fichero: \"GEMINI.md\" },\n\t{ origen: \"Cursor\", fichero: \".cursorrules\" },\n\t{ origen: \"Cursor\", directorio: \".cursor/rules\", extensiones: [\".mdc\", \".md\"] },\n\t{ origen: \"Cline\", fichero: \".clinerules\" },\n\t{ origen: \"Cline\", directorio: \".clinerules\", extensiones: [\".md\"] },\n\t{ origen: \"Windsurf\", fichero: \".windsurfrules\" },\n\t{ origen: \"Windsurf\", directorio: \".windsurf/rules\", extensiones: [\".md\"] },\n\t{ origen: \"GitHub Copilot\", fichero: \".github/copilot-instructions.md\" },\n\t{ origen: \"GitHub Copilot\", directorio: \".github/instructions\", extensiones: [\".md\"] },\n];\n\nfunction leer(ruta: string): string | null {\n\ttry {\n\t\tif (!statSync(ruta).isFile()) return null;\n\t\tconst texto = readFileSync(ruta, \"utf-8\");\n\t\treturn texto.trim() === \"\" ? null : texto;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/** Los ficheros de un directorio de reglas, en orden estable. */\nfunction ficherosDe(dir: string, extensiones: string[]): string[] {\n\ttry {\n\t\tif (!statSync(dir).isDirectory()) return [];\n\t\treturn readdirSync(dir)\n\t\t\t.filter((n) => extensiones.some((e) => n.endsWith(e)))\n\t\t\t.sort();\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport interface ResultadoDescubrimiento {\n\treglas: ReglaDescubierta[];\n\t/** Rutas que existían y se dejaron fuera, con el motivo. Nunca se callan. */\n\tomitidas: Array<{ ruta: string; motivo: string }>;\n}\n\nexport function descubrirReglas(cwd: string, opciones?: { topeTotal?: number }): ResultadoDescubrimiento {\n\tconst topeTotal = opciones?.topeTotal ?? TOPE_TOTAL;\n\tconst reglas: ReglaDescubierta[] = [];\n\tconst omitidas: Array<{ ruta: string; motivo: string }> = [];\n\tconst huellas = new Set<string>();\n\tlet gastado = 0;\n\n\tfor (const fuente of FUENTES) {\n\t\tconst rutas: string[] = [];\n\t\tif (fuente.fichero) rutas.push(fuente.fichero);\n\t\tif (fuente.directorio) {\n\t\t\tfor (const n of ficherosDe(join(cwd, fuente.directorio), fuente.extensiones ?? [\".md\"])) {\n\t\t\t\trutas.push(join(fuente.directorio, n));\n\t\t\t}\n\t\t}\n\n\t\tfor (const relativa of rutas) {\n\t\t\tconst absoluta = join(cwd, relativa);\n\t\t\tif (!existsSync(absoluta)) continue;\n\t\t\tconst contenido = leer(absoluta);\n\t\t\tif (contenido === null) continue;\n\n\t\t\tif (contenido.length > TOPE_FICHERO) {\n\t\t\t\tomitidas.push({ ruta: relativa, motivo: `pasa de ${Math.round(TOPE_FICHERO / 1024)} KB` });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Por contenido, no por ruta: el mismo texto en CLAUDE.md y en\n\t\t\t// .cursorrules es lo normal cuando alguien mantiene las dos.\n\t\t\tconst huella = createHash(\"sha256\").update(contenido.trim()).digest(\"hex\");\n\t\t\tif (huellas.has(huella)) {\n\t\t\t\tomitidas.push({ ruta: relativa, motivo: \"mismo contenido que otra regla ya cargada\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (gastado + contenido.length > topeTotal) {\n\t\t\t\tomitidas.push({ ruta: relativa, motivo: \"no cabe en el presupuesto de contexto para reglas\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thuellas.add(huella);\n\t\t\tgastado += contenido.length;\n\t\t\treglas.push({ origen: fuente.origen, ruta: relativa, contenido });\n\t\t}\n\t}\n\n\treturn { reglas, omitidas };\n}\n\n/**\n * Las reglas en la forma que consume el prompt de sistema.\n *\n * La etiqueta lleva la herramienta de origen porque el modelo tiene que poder\n * decidir cuánto pesa: una regla de `.cursor/rules` es contexto del proyecto,\n * igual que `AGENTS.md`, pero saber de dónde sale ayuda cuando dos se\n * contradicen — que pasa, porque cada equipo actualiza una y olvida la otra.\n */\nexport function comoFicherosDeContexto(cwd: string): Array<{ path: string; content: string }> {\n\tconst { reglas } = descubrirReglas(cwd);\n\treturn reglas.map((r) => ({ path: `${r.ruta} (regla de ${r.origen})`, content: r.contenido }));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reglas.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/reglas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,0EAA0E;AAC1E,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC;AAW/B;;;;;GAKG;AACH,MAAM,OAAO,GAAa;IACzB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE;IAC1C,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;IAC7C,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;IAC/E,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE;IAC3C,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IACpE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE;IACjD,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC3E,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,iCAAiC,EAAE;IACxE,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;CACtF,CAAC;AAEF,SAAS,IAAI,CAAC,IAAY;IACzB,IAAI,CAAC;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,iEAAiE;AACjE,SAAS,UAAU,CAAC,GAAW,EAAE,WAAqB;IACrD,IAAI,CAAC;QACJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC,GAAG,CAAC;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACrD,IAAI,EAAE,CAAC;IACV,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAQD,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,QAAiC;IAC7E,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,UAAU,CAAC;IACpD,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAA4C,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,SAAS,KAAK,IAAI;gBAAE,SAAS;YAEjC,IAAI,SAAS,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3F,SAAS;YACV,CAAC;YACD,+DAA+D;YAC/D,6DAA6D;YAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC,CAAC;gBACvF,SAAS;YACV,CAAC;YACD,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC,CAAC;gBAC/F,SAAS;YACV,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery genérico unificado de runtimes locales y proxies.
|
|
3
|
+
*
|
|
4
|
+
* llama.cpp dedicado ya existe en `extensions/llama/` (LlamaClient + provider
|
|
5
|
+
* `llama.cpp`). Aquí NO se duplica; se documenta como familia ya cubierta y
|
|
6
|
+
* se excluye del agregador para no solapar. Ver `src/extensions/llama/`.
|
|
7
|
+
*
|
|
8
|
+
* Familias cubiertas aquí:
|
|
9
|
+
* - ollama (/api/tags + /api/show)
|
|
10
|
+
* - lm-studio + lm-studio-legacy (/v1/models, /api/v0/models, ctx desde preset INI)
|
|
11
|
+
* - openai-models-list enriquecido (/v1/models + /v1/models/:id)
|
|
12
|
+
* - litellm rich→fallback (/model/info → /v1/models) y proxies new-api/one-api
|
|
13
|
+
* (routing por supported_endpoint_types)
|
|
14
|
+
*
|
|
15
|
+
* Timeouts: loopback 150-250ms, remoto 10s. Dedup por URL normalizada.
|
|
16
|
+
*/
|
|
17
|
+
import type { DescubrirRuntimesOpts, ModelCatalog, RuntimeEndpoint } from "./tipos.ts";
|
|
18
|
+
export { descubrirLiteLlm, descubrirNewApi, descubrirOneApi, descubrirOpenAiModelsList } from "./litellm.ts";
|
|
19
|
+
export { descubrirLmStudio, descubrirLmStudioV0 } from "./lm-studio.ts";
|
|
20
|
+
export { descubrirOllama } from "./ollama.ts";
|
|
21
|
+
export type { DescubrirRuntimesOpts, ModelCatalog, ModelCatalogEntry, RuntimeEndpoint, RuntimeKind, RuntimeModel, } from "./tipos.ts";
|
|
22
|
+
export declare function modelosDisponibles(endpoints: RuntimeEndpoint[]): ModelCatalog;
|
|
23
|
+
export declare function descubrirRuntimes(opts?: DescubrirRuntimesOpts): Promise<RuntimeEndpoint[]>;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/descubrimiento/runtimes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EACX,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,YAAY,GACZ,MAAM,YAAY,CAAC;AAyBpB,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,YAAY,CAc7E;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAmDpG"}
|