@hoilab/ada-cli 0.84.21 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -2
- package/README.es.md +174 -0
- package/README.md +203 -658
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +85 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +862 -78
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +21 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +21 -6
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +56 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +100 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +32 -50
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +21 -4
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +219 -55
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -1
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +40 -12
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +41 -8
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +19 -7
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +58 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +326 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +156 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -12
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +234 -12
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +28 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +88 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +312 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +283 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +503 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +26 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +18 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +122 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +351 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +62 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +380 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +191 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +180 -56
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +709 -75
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +25 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +62 -51
- package/docs/index.md +15 -21
- package/docs/json.md +10 -5
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +18 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +21 -15
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +47 -22
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +14 -13
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/12-full-control.ts +9 -0
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +35 -261
- package/package.json +9 -3
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli import` — trae sesiones de Claude Code y de Codex.
|
|
3
|
+
*
|
|
4
|
+
* Es coste de cambio. Quien viene de otra herramienta tiene ahí meses de
|
|
5
|
+
* historial, y empezar de cero pesa más que cualquier comparativa de
|
|
6
|
+
* capacidades.
|
|
7
|
+
*
|
|
8
|
+
* Por defecto solo LISTA. Escribir sesiones en el directorio del agente sin que
|
|
9
|
+
* nadie lo haya pedido explícitamente es de las cosas que no se deshacen bien,
|
|
10
|
+
* y la lista es además lo que uno quiere ver primero.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
13
|
+
import { homedir } from "node:os";
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
import { convertir, resumir } from "../core/importar/formatos.js";
|
|
16
|
+
const AYUDA = `Uso:
|
|
17
|
+
ada-cli import [--from claude-code|codex] [--write] [--limit N]
|
|
18
|
+
|
|
19
|
+
--from <cual> Solo una de las dos fuentes (por defecto, las dos)
|
|
20
|
+
--write Escribe las sesiones. Sin esto solo se listan.
|
|
21
|
+
--limit N Cuántas traer, de la más reciente hacia atrás (por defecto 20)
|
|
22
|
+
|
|
23
|
+
Se importa la CONVERSACIÓN, no el estado: las llamadas a herramientas y sus
|
|
24
|
+
resultados se aplanan a texto legible porque no se pueden reproducir —los
|
|
25
|
+
ficheros han cambiado y los procesos murieron—. Una sesión importada sirve
|
|
26
|
+
para leerla, buscarla y continuarla con contexto; no para rebobinarla.`;
|
|
27
|
+
/** Dónde guarda cada herramienta sus transcripciones. */
|
|
28
|
+
function origenes(cual) {
|
|
29
|
+
const todos = [
|
|
30
|
+
{ formato: "claude-code", raiz: join(homedir(), ".claude", "projects") },
|
|
31
|
+
{ formato: "codex", raiz: join(homedir(), ".codex", "sessions") },
|
|
32
|
+
];
|
|
33
|
+
return cual ? todos.filter((o) => o.formato === cual) : todos;
|
|
34
|
+
}
|
|
35
|
+
/** Todos los .jsonl bajo un directorio, a cualquier profundidad. */
|
|
36
|
+
function jsonls(dir, acumulado = []) {
|
|
37
|
+
let entradas;
|
|
38
|
+
try {
|
|
39
|
+
entradas = readdirSync(dir, { withFileTypes: true });
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return acumulado;
|
|
43
|
+
}
|
|
44
|
+
for (const e of entradas) {
|
|
45
|
+
const ruta = join(dir, e.name);
|
|
46
|
+
if (e.isDirectory())
|
|
47
|
+
jsonls(ruta, acumulado);
|
|
48
|
+
else if (e.name.endsWith(".jsonl"))
|
|
49
|
+
acumulado.push(ruta);
|
|
50
|
+
}
|
|
51
|
+
return acumulado;
|
|
52
|
+
}
|
|
53
|
+
/** El nombre de proyecto que usa Ada para agrupar sesiones. */
|
|
54
|
+
function carpetaDeProyecto(cwd) {
|
|
55
|
+
return `-${(cwd || "desconocido").replace(/[/\\]/g, "-")}--`;
|
|
56
|
+
}
|
|
57
|
+
function marcaDeTiempo(ms) {
|
|
58
|
+
return new Date(ms || 0).toISOString().replace(/[:.]/g, "-");
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Busca (y opcionalmente escribe) las sesiones importables.
|
|
62
|
+
*
|
|
63
|
+
* Separado del comando para poder probarlo con directorios de mentira, sin
|
|
64
|
+
* tocar el `$HOME` de quien ejecuta las pruebas.
|
|
65
|
+
*/
|
|
66
|
+
export function importar(opciones) {
|
|
67
|
+
const candidatos = [];
|
|
68
|
+
for (const { raiz } of opciones.fuentes) {
|
|
69
|
+
for (const ruta of jsonls(raiz)) {
|
|
70
|
+
try {
|
|
71
|
+
candidatos.push({ ruta, cuando: statSync(ruta).mtimeMs });
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Un fichero que desaparece a mitad no es un error de importación.
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
candidatos.sort((a, b) => b.cuando - a.cuando);
|
|
79
|
+
const encontradas = [];
|
|
80
|
+
const escritas = [];
|
|
81
|
+
for (const { ruta } of candidatos.slice(0, opciones.limite)) {
|
|
82
|
+
let lineas;
|
|
83
|
+
try {
|
|
84
|
+
lineas = readFileSync(ruta, "utf8").split("\n").filter(Boolean);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const id = opciones.nuevoId(encontradas.length);
|
|
90
|
+
const convertido = convertir(lineas, id);
|
|
91
|
+
if (!convertido)
|
|
92
|
+
continue; // sin conversación: no se importa una sesión vacía
|
|
93
|
+
const resumen = resumir(convertido.entradas, convertido.formato, ruta);
|
|
94
|
+
encontradas.push(resumen);
|
|
95
|
+
if (!opciones.escribir)
|
|
96
|
+
continue;
|
|
97
|
+
const carpeta = join(opciones.destino, carpetaDeProyecto(resumen.cwd));
|
|
98
|
+
mkdirSync(carpeta, { recursive: true });
|
|
99
|
+
const fichero = join(carpeta, `${marcaDeTiempo(resumen.cuando)}_${id}.jsonl`);
|
|
100
|
+
writeFileSync(fichero, `${convertido.entradas.map((e) => JSON.stringify(e)).join("\n")}\n`, "utf8");
|
|
101
|
+
escritas.push(fichero);
|
|
102
|
+
}
|
|
103
|
+
return { encontradas, escritas };
|
|
104
|
+
}
|
|
105
|
+
/** Devuelve true si consumió los argumentos. */
|
|
106
|
+
export function runImportCommand(args, agentDir, nuevoId) {
|
|
107
|
+
if (args[0] !== "import")
|
|
108
|
+
return false;
|
|
109
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
110
|
+
console.log(AYUDA);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
const iFrom = args.indexOf("--from");
|
|
114
|
+
const cual = iFrom >= 0 ? args[iFrom + 1] : undefined;
|
|
115
|
+
if (cual && cual !== "claude-code" && cual !== "codex") {
|
|
116
|
+
console.error(`--from solo admite 'claude-code' o 'codex' (recibido: ${cual}).`);
|
|
117
|
+
process.exitCode = 1;
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
const iLimit = args.indexOf("--limit");
|
|
121
|
+
const limite = iLimit >= 0 ? Number(args[iLimit + 1]) : 20;
|
|
122
|
+
if (!Number.isFinite(limite) || limite <= 0) {
|
|
123
|
+
console.error("--limit necesita un número positivo.");
|
|
124
|
+
process.exitCode = 1;
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
const fuentes = origenes(cual).filter((o) => existsSync(o.raiz));
|
|
128
|
+
if (fuentes.length === 0) {
|
|
129
|
+
// Se nombra lo que se ha mirado: "no hay nada" sin decir dónde se buscó
|
|
130
|
+
// deja al usuario sin forma de saber si es que no tiene sesiones o es que
|
|
131
|
+
// las tiene en otro sitio.
|
|
132
|
+
console.log(`No hay nada que importar. Se ha mirado en:\n${origenes(cual)
|
|
133
|
+
.map((o) => ` ${o.raiz}`)
|
|
134
|
+
.join("\n")}`);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
const escribir = args.includes("--write");
|
|
138
|
+
const { encontradas, escritas } = importar({
|
|
139
|
+
fuentes,
|
|
140
|
+
destino: join(agentDir, "sessions"),
|
|
141
|
+
escribir,
|
|
142
|
+
limite,
|
|
143
|
+
nuevoId,
|
|
144
|
+
});
|
|
145
|
+
if (encontradas.length === 0) {
|
|
146
|
+
console.log("No se ha encontrado ninguna sesión con conversación en las fuentes revisadas.");
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
for (const s of encontradas) {
|
|
150
|
+
const fecha = new Date(s.cuando).toISOString().slice(0, 16).replace("T", " ");
|
|
151
|
+
console.log(`${s.formato.padEnd(12)} ${fecha} ${String(s.mensajes).padStart(5)} msg ${s.cwd}`);
|
|
152
|
+
if (s.primerPrompt)
|
|
153
|
+
console.log(` ${s.primerPrompt}`);
|
|
154
|
+
}
|
|
155
|
+
console.log("");
|
|
156
|
+
if (escribir) {
|
|
157
|
+
console.log(`Importadas ${escritas.length} sesión(es). Aparecen en \`ada-cli sessions\`.`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(`${encontradas.length} sesión(es) importable(s). Añade --write para traerlas.`);
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=import-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-command.js","sourceRoot":"","sources":["../../src/cli/import-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli import` — trae sesiones de Claude Code y de Codex.\n *\n * Es coste de cambio. Quien viene de otra herramienta tiene ahí meses de\n * historial, y empezar de cero pesa más que cualquier comparativa de\n * capacidades.\n *\n * Por defecto solo LISTA. Escribir sesiones en el directorio del agente sin que\n * nadie lo haya pedido explícitamente es de las cosas que no se deshacen bien,\n * y la lista es además lo que uno quiere ver primero.\n */\n\nimport type { Dirent } from \"node:fs\";\nimport { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { convertir, type Formato, type ResumenSesion, resumir } from \"../core/importar/formatos.ts\";\n\nconst AYUDA = `Uso:\n ada-cli import [--from claude-code|codex] [--write] [--limit N]\n\n --from <cual> Solo una de las dos fuentes (por defecto, las dos)\n --write Escribe las sesiones. Sin esto solo se listan.\n --limit N Cuántas traer, de la más reciente hacia atrás (por defecto 20)\n\nSe importa la CONVERSACIÓN, no el estado: las llamadas a herramientas y sus\nresultados se aplanan a texto legible porque no se pueden reproducir —los\nficheros han cambiado y los procesos murieron—. Una sesión importada sirve\npara leerla, buscarla y continuarla con contexto; no para rebobinarla.`;\n\n/** Dónde guarda cada herramienta sus transcripciones. */\nfunction origenes(cual: Formato | undefined): Array<{ formato: Formato; raiz: string }> {\n\tconst todos: Array<{ formato: Formato; raiz: string }> = [\n\t\t{ formato: \"claude-code\", raiz: join(homedir(), \".claude\", \"projects\") },\n\t\t{ formato: \"codex\", raiz: join(homedir(), \".codex\", \"sessions\") },\n\t];\n\treturn cual ? todos.filter((o) => o.formato === cual) : todos;\n}\n\n/** Todos los .jsonl bajo un directorio, a cualquier profundidad. */\nfunction jsonls(dir: string, acumulado: string[] = []): string[] {\n\tlet entradas: Dirent[];\n\ttry {\n\t\tentradas = readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn acumulado;\n\t}\n\tfor (const e of entradas) {\n\t\tconst ruta = join(dir, e.name);\n\t\tif (e.isDirectory()) jsonls(ruta, acumulado);\n\t\telse if (e.name.endsWith(\".jsonl\")) acumulado.push(ruta);\n\t}\n\treturn acumulado;\n}\n\n/** El nombre de proyecto que usa Ada para agrupar sesiones. */\nfunction carpetaDeProyecto(cwd: string): string {\n\treturn `-${(cwd || \"desconocido\").replace(/[/\\\\]/g, \"-\")}--`;\n}\n\nfunction marcaDeTiempo(ms: number): string {\n\treturn new Date(ms || 0).toISOString().replace(/[:.]/g, \"-\");\n}\n\nexport interface ResultadoImportacion {\n\tencontradas: ResumenSesion[];\n\tescritas: string[];\n}\n\n/**\n * Busca (y opcionalmente escribe) las sesiones importables.\n *\n * Separado del comando para poder probarlo con directorios de mentira, sin\n * tocar el `$HOME` de quien ejecuta las pruebas.\n */\nexport function importar(opciones: {\n\tfuentes: Array<{ formato: Formato; raiz: string }>;\n\tdestino: string;\n\tescribir: boolean;\n\tlimite: number;\n\tnuevoId: (indice: number) => string;\n}): ResultadoImportacion {\n\tconst candidatos: Array<{ ruta: string; cuando: number }> = [];\n\tfor (const { raiz } of opciones.fuentes) {\n\t\tfor (const ruta of jsonls(raiz)) {\n\t\t\ttry {\n\t\t\t\tcandidatos.push({ ruta, cuando: statSync(ruta).mtimeMs });\n\t\t\t} catch {\n\t\t\t\t// Un fichero que desaparece a mitad no es un error de importación.\n\t\t\t}\n\t\t}\n\t}\n\tcandidatos.sort((a, b) => b.cuando - a.cuando);\n\n\tconst encontradas: ResumenSesion[] = [];\n\tconst escritas: string[] = [];\n\tfor (const { ruta } of candidatos.slice(0, opciones.limite)) {\n\t\tlet lineas: string[];\n\t\ttry {\n\t\t\tlineas = readFileSync(ruta, \"utf8\").split(\"\\n\").filter(Boolean);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = opciones.nuevoId(encontradas.length);\n\t\tconst convertido = convertir(lineas, id);\n\t\tif (!convertido) continue; // sin conversación: no se importa una sesión vacía\n\t\tconst resumen = resumir(convertido.entradas, convertido.formato, ruta);\n\t\tencontradas.push(resumen);\n\n\t\tif (!opciones.escribir) continue;\n\t\tconst carpeta = join(opciones.destino, carpetaDeProyecto(resumen.cwd));\n\t\tmkdirSync(carpeta, { recursive: true });\n\t\tconst fichero = join(carpeta, `${marcaDeTiempo(resumen.cuando)}_${id}.jsonl`);\n\t\twriteFileSync(fichero, `${convertido.entradas.map((e) => JSON.stringify(e)).join(\"\\n\")}\\n`, \"utf8\");\n\t\tescritas.push(fichero);\n\t}\n\treturn { encontradas, escritas };\n}\n\n/** Devuelve true si consumió los argumentos. */\nexport function runImportCommand(args: string[], agentDir: string, nuevoId: () => string): boolean {\n\tif (args[0] !== \"import\") return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst iFrom = args.indexOf(\"--from\");\n\tconst cual = iFrom >= 0 ? (args[iFrom + 1] as Formato | undefined) : undefined;\n\tif (cual && cual !== \"claude-code\" && cual !== \"codex\") {\n\t\tconsole.error(`--from solo admite 'claude-code' o 'codex' (recibido: ${cual}).`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst iLimit = args.indexOf(\"--limit\");\n\tconst limite = iLimit >= 0 ? Number(args[iLimit + 1]) : 20;\n\tif (!Number.isFinite(limite) || limite <= 0) {\n\t\tconsole.error(\"--limit necesita un número positivo.\");\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst fuentes = origenes(cual).filter((o) => existsSync(o.raiz));\n\tif (fuentes.length === 0) {\n\t\t// Se nombra lo que se ha mirado: \"no hay nada\" sin decir dónde se buscó\n\t\t// deja al usuario sin forma de saber si es que no tiene sesiones o es que\n\t\t// las tiene en otro sitio.\n\t\tconsole.log(\n\t\t\t`No hay nada que importar. Se ha mirado en:\\n${origenes(cual)\n\t\t\t\t.map((o) => ` ${o.raiz}`)\n\t\t\t\t.join(\"\\n\")}`,\n\t\t);\n\t\treturn true;\n\t}\n\n\tconst escribir = args.includes(\"--write\");\n\tconst { encontradas, escritas } = importar({\n\t\tfuentes,\n\t\tdestino: join(agentDir, \"sessions\"),\n\t\tescribir,\n\t\tlimite,\n\t\tnuevoId,\n\t});\n\n\tif (encontradas.length === 0) {\n\t\tconsole.log(\"No se ha encontrado ninguna sesión con conversación en las fuentes revisadas.\");\n\t\treturn true;\n\t}\n\n\tfor (const s of encontradas) {\n\t\tconst fecha = new Date(s.cuando).toISOString().slice(0, 16).replace(\"T\", \" \");\n\t\tconsole.log(`${s.formato.padEnd(12)} ${fecha} ${String(s.mensajes).padStart(5)} msg ${s.cwd}`);\n\t\tif (s.primerPrompt) console.log(` ${s.primerPrompt}`);\n\t}\n\tconsole.log(\"\");\n\tif (escribir) {\n\t\tconsole.log(`Importadas ${escritas.length} sesión(es). Aparecen en \\`ada-cli sessions\\`.`);\n\t} else {\n\t\tconsole.log(`${encontradas.length} sesión(es) importable(s). Añade --write para traerlas.`);\n\t}\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli politica` — enseñar si la política del equipo está en vigor.
|
|
3
|
+
*
|
|
4
|
+
* Existe porque una política que nadie puede comprobar no sirve de nada. Un
|
|
5
|
+
* CISO que despliega `politica.json` por MDM a doscientos portátiles necesita
|
|
6
|
+
* poder contestar «sí, está puesta y muerde» sin abrir un editor de texto, y
|
|
7
|
+
* necesita que la respuesta distinga los tres estados que hay de verdad:
|
|
8
|
+
*
|
|
9
|
+
* · no hay fichero — no hay política. Es una respuesta.
|
|
10
|
+
* · hay y está en vigor — con qué techo y qué deniega.
|
|
11
|
+
* · hay y no se entiende — NO es «no hay»: se recorta a `manual` y se
|
|
12
|
+
* dice, porque una errata suya no puede acabar
|
|
13
|
+
* dando más permisos de los que quiso.
|
|
14
|
+
*
|
|
15
|
+
* Y dice aparte si el fichero lo puede editar el propio usuario, que es la
|
|
16
|
+
* diferencia entre una política y una sugerencia.
|
|
17
|
+
*/
|
|
18
|
+
export declare function esComandoPolitica(args: string[]): boolean;
|
|
19
|
+
export declare function runPoliticaCommand(args: string[]): Promise<boolean>;
|
|
20
|
+
//# sourceMappingURL=politica-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"politica-command.d.ts","sourceRoot":"","sources":["../../src/cli/politica-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA2BH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEzD;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA0DzE","sourcesContent":["/**\n * `ada-cli politica` — enseñar si la política del equipo está en vigor.\n *\n * Existe porque una política que nadie puede comprobar no sirve de nada. Un\n * CISO que despliega `politica.json` por MDM a doscientos portátiles necesita\n * poder contestar «sí, está puesta y muerde» sin abrir un editor de texto, y\n * necesita que la respuesta distinga los tres estados que hay de verdad:\n *\n * · no hay fichero — no hay política. Es una respuesta.\n * · hay y está en vigor — con qué techo y qué deniega.\n * · hay y no se entiende — NO es «no hay»: se recorta a `manual` y se\n * dice, porque una errata suya no puede acabar\n * dando más permisos de los que quiso.\n *\n * Y dice aparte si el fichero lo puede editar el propio usuario, que es la\n * diferencia entre una política y una sugerencia.\n */\n\nimport type { ModoPermiso } from \"../core/aprobacion/politica.ts\";\nimport { leerPoliticaDeMaquina, recortarModo, rutaDeLaPolitica } from \"../core/aprobacion/politica-de-maquina.ts\";\n\nconst MODOS: readonly ModoPermiso[] = [\"plan\", \"manual\", \"auto\", \"yolo\"];\n\nconst AYUDA = `Uso:\n ada-cli politica Enseña la política de este equipo y si está en vigor\n\nLa política de máquina es el único ámbito de configuración que el usuario no\npuede editar. Vive donde cada sistema exige administrador para escribir:\n\n macOS /Library/Application Support/Ada/politica.json\n Linux /etc/ada/politica.json\n Windows %ProgramData%\\\\Ada\\\\politica.json\n\nCampos:\n modoMaximo Techo del modo de permisos: plan | manual | auto | yolo.\n SOLO baja el modo que pida el usuario; nunca lo sube.\n denegadas Tools desactivadas para todo el equipo. No las levanta yolo.\n motivo Qué contarle a quien se topa con el bloqueo.\n\nEjemplo:\n {\"modoMaximo\":\"auto\",\"denegadas\":[\"bash\"],\"motivo\":\"norma interna SEC-4\"}\n`;\n\nexport function esComandoPolitica(args: string[]): boolean {\n\treturn args[0] === \"politica\" || args[0] === \"policy\";\n}\n\nexport async function runPoliticaCommand(args: string[]): Promise<boolean> {\n\tif (!esComandoPolitica(args)) return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst ruta = rutaDeLaPolitica();\n\tconst l = leerPoliticaDeMaquina(ruta);\n\tconsole.log(`Fichero: ${ruta}`);\n\n\tif (l.estado === \"ausente\") {\n\t\t// Ni bien ni mal: no hay política. Decirlo así evita el «todo correcto»\n\t\t// que tranquiliza sobre un equipo sin ninguna regla puesta.\n\t\tconsole.log(\"No hay política de máquina en este equipo: manda la configuración del usuario.\");\n\t\treturn true;\n\t}\n\n\tif (l.estado === \"ilegible\") {\n\t\tconsole.error(`NO SE ENTIENDE: ${l.aviso}.`);\n\t\tconsole.error(\n\t\t\t\"No se trata como si no hubiera política: el modo se recorta a «manual», porque\\n\" +\n\t\t\t\t\"una errata en el fichero no puede acabar dando más permisos de los que se quisieron.\",\n\t\t);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst techo = l.politica?.modoMaximo;\n\tconsole.log(`Techo del modo: ${techo ?? \"ninguno (el usuario elige)\"}`);\n\tif (techo) {\n\t\t// Se enseña el efecto sobre CADA modo en vez de solo el nombre del techo:\n\t\t// «modoMaximo: auto» no le dice a nadie qué pasa si pide `yolo`.\n\t\tfor (const m of MODOS) {\n\t\t\tconst r = recortarModo(m, l);\n\t\t\tconsole.log(` el usuario pide ${m.padEnd(6)} -> queda ${r}${r === m ? \"\" : \" (recortado)\"}`);\n\t\t}\n\t}\n\tconst denegadas = l.politica?.denegadas ?? [];\n\tconsole.log(\n\t\tdenegadas.length\n\t\t\t? `Tools denegadas para el equipo: ${denegadas.join(\", \")} (no las levanta yolo)`\n\t\t\t: \"Tools denegadas para el equipo: ninguna\",\n\t);\n\tif (l.politica?.motivo) console.log(`Motivo que se le da al modelo: ${l.politica.motivo}`);\n\n\tif (l.editablePorElUsuario) {\n\t\t// La mitad que decide si esto es una política o una sugerencia.\n\t\tconsole.error(\n\t\t\t\"\\nAVISO: este usuario puede escribir el fichero, así que la política no garantiza\\n\" +\n\t\t\t\t\"nada — se aplica, porque aplicarla solo puede restringir, pero cualquiera con\\n\" +\n\t\t\t\t\"esta cuenta la borra. Colócala donde haga falta administrador para escribir.\",\n\t\t);\n\t\tprocess.exitCode = 1;\n\t} else {\n\t\tconsole.log(\"\\nEl usuario de esta cuenta NO puede editar el fichero: la política se sostiene.\");\n\t}\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli politica` — enseñar si la política del equipo está en vigor.
|
|
3
|
+
*
|
|
4
|
+
* Existe porque una política que nadie puede comprobar no sirve de nada. Un
|
|
5
|
+
* CISO que despliega `politica.json` por MDM a doscientos portátiles necesita
|
|
6
|
+
* poder contestar «sí, está puesta y muerde» sin abrir un editor de texto, y
|
|
7
|
+
* necesita que la respuesta distinga los tres estados que hay de verdad:
|
|
8
|
+
*
|
|
9
|
+
* · no hay fichero — no hay política. Es una respuesta.
|
|
10
|
+
* · hay y está en vigor — con qué techo y qué deniega.
|
|
11
|
+
* · hay y no se entiende — NO es «no hay»: se recorta a `manual` y se
|
|
12
|
+
* dice, porque una errata suya no puede acabar
|
|
13
|
+
* dando más permisos de los que quiso.
|
|
14
|
+
*
|
|
15
|
+
* Y dice aparte si el fichero lo puede editar el propio usuario, que es la
|
|
16
|
+
* diferencia entre una política y una sugerencia.
|
|
17
|
+
*/
|
|
18
|
+
import { leerPoliticaDeMaquina, recortarModo, rutaDeLaPolitica } from "../core/aprobacion/politica-de-maquina.js";
|
|
19
|
+
const MODOS = ["plan", "manual", "auto", "yolo"];
|
|
20
|
+
const AYUDA = `Uso:
|
|
21
|
+
ada-cli politica Enseña la política de este equipo y si está en vigor
|
|
22
|
+
|
|
23
|
+
La política de máquina es el único ámbito de configuración que el usuario no
|
|
24
|
+
puede editar. Vive donde cada sistema exige administrador para escribir:
|
|
25
|
+
|
|
26
|
+
macOS /Library/Application Support/Ada/politica.json
|
|
27
|
+
Linux /etc/ada/politica.json
|
|
28
|
+
Windows %ProgramData%\\Ada\\politica.json
|
|
29
|
+
|
|
30
|
+
Campos:
|
|
31
|
+
modoMaximo Techo del modo de permisos: plan | manual | auto | yolo.
|
|
32
|
+
SOLO baja el modo que pida el usuario; nunca lo sube.
|
|
33
|
+
denegadas Tools desactivadas para todo el equipo. No las levanta yolo.
|
|
34
|
+
motivo Qué contarle a quien se topa con el bloqueo.
|
|
35
|
+
|
|
36
|
+
Ejemplo:
|
|
37
|
+
{"modoMaximo":"auto","denegadas":["bash"],"motivo":"norma interna SEC-4"}
|
|
38
|
+
`;
|
|
39
|
+
export function esComandoPolitica(args) {
|
|
40
|
+
return args[0] === "politica" || args[0] === "policy";
|
|
41
|
+
}
|
|
42
|
+
export async function runPoliticaCommand(args) {
|
|
43
|
+
if (!esComandoPolitica(args))
|
|
44
|
+
return false;
|
|
45
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
46
|
+
console.log(AYUDA);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const ruta = rutaDeLaPolitica();
|
|
50
|
+
const l = leerPoliticaDeMaquina(ruta);
|
|
51
|
+
console.log(`Fichero: ${ruta}`);
|
|
52
|
+
if (l.estado === "ausente") {
|
|
53
|
+
// Ni bien ni mal: no hay política. Decirlo así evita el «todo correcto»
|
|
54
|
+
// que tranquiliza sobre un equipo sin ninguna regla puesta.
|
|
55
|
+
console.log("No hay política de máquina en este equipo: manda la configuración del usuario.");
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (l.estado === "ilegible") {
|
|
59
|
+
console.error(`NO SE ENTIENDE: ${l.aviso}.`);
|
|
60
|
+
console.error("No se trata como si no hubiera política: el modo se recorta a «manual», porque\n" +
|
|
61
|
+
"una errata en el fichero no puede acabar dando más permisos de los que se quisieron.");
|
|
62
|
+
process.exitCode = 1;
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
const techo = l.politica?.modoMaximo;
|
|
66
|
+
console.log(`Techo del modo: ${techo ?? "ninguno (el usuario elige)"}`);
|
|
67
|
+
if (techo) {
|
|
68
|
+
// Se enseña el efecto sobre CADA modo en vez de solo el nombre del techo:
|
|
69
|
+
// «modoMaximo: auto» no le dice a nadie qué pasa si pide `yolo`.
|
|
70
|
+
for (const m of MODOS) {
|
|
71
|
+
const r = recortarModo(m, l);
|
|
72
|
+
console.log(` el usuario pide ${m.padEnd(6)} -> queda ${r}${r === m ? "" : " (recortado)"}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const denegadas = l.politica?.denegadas ?? [];
|
|
76
|
+
console.log(denegadas.length
|
|
77
|
+
? `Tools denegadas para el equipo: ${denegadas.join(", ")} (no las levanta yolo)`
|
|
78
|
+
: "Tools denegadas para el equipo: ninguna");
|
|
79
|
+
if (l.politica?.motivo)
|
|
80
|
+
console.log(`Motivo que se le da al modelo: ${l.politica.motivo}`);
|
|
81
|
+
if (l.editablePorElUsuario) {
|
|
82
|
+
// La mitad que decide si esto es una política o una sugerencia.
|
|
83
|
+
console.error("\nAVISO: este usuario puede escribir el fichero, así que la política no garantiza\n" +
|
|
84
|
+
"nada — se aplica, porque aplicarla solo puede restringir, pero cualquiera con\n" +
|
|
85
|
+
"esta cuenta la borra. Colócala donde haga falta administrador para escribir.");
|
|
86
|
+
process.exitCode = 1;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.log("\nEl usuario de esta cuenta NO puede editar el fichero: la política se sostiene.");
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=politica-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"politica-command.js","sourceRoot":"","sources":["../../src/cli/politica-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli politica` — enseñar si la política del equipo está en vigor.\n *\n * Existe porque una política que nadie puede comprobar no sirve de nada. Un\n * CISO que despliega `politica.json` por MDM a doscientos portátiles necesita\n * poder contestar «sí, está puesta y muerde» sin abrir un editor de texto, y\n * necesita que la respuesta distinga los tres estados que hay de verdad:\n *\n * · no hay fichero — no hay política. Es una respuesta.\n * · hay y está en vigor — con qué techo y qué deniega.\n * · hay y no se entiende — NO es «no hay»: se recorta a `manual` y se\n * dice, porque una errata suya no puede acabar\n * dando más permisos de los que quiso.\n *\n * Y dice aparte si el fichero lo puede editar el propio usuario, que es la\n * diferencia entre una política y una sugerencia.\n */\n\nimport type { ModoPermiso } from \"../core/aprobacion/politica.ts\";\nimport { leerPoliticaDeMaquina, recortarModo, rutaDeLaPolitica } from \"../core/aprobacion/politica-de-maquina.ts\";\n\nconst MODOS: readonly ModoPermiso[] = [\"plan\", \"manual\", \"auto\", \"yolo\"];\n\nconst AYUDA = `Uso:\n ada-cli politica Enseña la política de este equipo y si está en vigor\n\nLa política de máquina es el único ámbito de configuración que el usuario no\npuede editar. Vive donde cada sistema exige administrador para escribir:\n\n macOS /Library/Application Support/Ada/politica.json\n Linux /etc/ada/politica.json\n Windows %ProgramData%\\\\Ada\\\\politica.json\n\nCampos:\n modoMaximo Techo del modo de permisos: plan | manual | auto | yolo.\n SOLO baja el modo que pida el usuario; nunca lo sube.\n denegadas Tools desactivadas para todo el equipo. No las levanta yolo.\n motivo Qué contarle a quien se topa con el bloqueo.\n\nEjemplo:\n {\"modoMaximo\":\"auto\",\"denegadas\":[\"bash\"],\"motivo\":\"norma interna SEC-4\"}\n`;\n\nexport function esComandoPolitica(args: string[]): boolean {\n\treturn args[0] === \"politica\" || args[0] === \"policy\";\n}\n\nexport async function runPoliticaCommand(args: string[]): Promise<boolean> {\n\tif (!esComandoPolitica(args)) return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst ruta = rutaDeLaPolitica();\n\tconst l = leerPoliticaDeMaquina(ruta);\n\tconsole.log(`Fichero: ${ruta}`);\n\n\tif (l.estado === \"ausente\") {\n\t\t// Ni bien ni mal: no hay política. Decirlo así evita el «todo correcto»\n\t\t// que tranquiliza sobre un equipo sin ninguna regla puesta.\n\t\tconsole.log(\"No hay política de máquina en este equipo: manda la configuración del usuario.\");\n\t\treturn true;\n\t}\n\n\tif (l.estado === \"ilegible\") {\n\t\tconsole.error(`NO SE ENTIENDE: ${l.aviso}.`);\n\t\tconsole.error(\n\t\t\t\"No se trata como si no hubiera política: el modo se recorta a «manual», porque\\n\" +\n\t\t\t\t\"una errata en el fichero no puede acabar dando más permisos de los que se quisieron.\",\n\t\t);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst techo = l.politica?.modoMaximo;\n\tconsole.log(`Techo del modo: ${techo ?? \"ninguno (el usuario elige)\"}`);\n\tif (techo) {\n\t\t// Se enseña el efecto sobre CADA modo en vez de solo el nombre del techo:\n\t\t// «modoMaximo: auto» no le dice a nadie qué pasa si pide `yolo`.\n\t\tfor (const m of MODOS) {\n\t\t\tconst r = recortarModo(m, l);\n\t\t\tconsole.log(` el usuario pide ${m.padEnd(6)} -> queda ${r}${r === m ? \"\" : \" (recortado)\"}`);\n\t\t}\n\t}\n\tconst denegadas = l.politica?.denegadas ?? [];\n\tconsole.log(\n\t\tdenegadas.length\n\t\t\t? `Tools denegadas para el equipo: ${denegadas.join(\", \")} (no las levanta yolo)`\n\t\t\t: \"Tools denegadas para el equipo: ninguna\",\n\t);\n\tif (l.politica?.motivo) console.log(`Motivo que se le da al modelo: ${l.politica.motivo}`);\n\n\tif (l.editablePorElUsuario) {\n\t\t// La mitad que decide si esto es una política o una sugerencia.\n\t\tconsole.error(\n\t\t\t\"\\nAVISO: este usuario puede escribir el fichero, así que la política no garantiza\\n\" +\n\t\t\t\t\"nada — se aplica, porque aplicarla solo puede restringir, pero cualquiera con\\n\" +\n\t\t\t\t\"esta cuenta la borra. Colócala donde haga falta administrador para escribir.\",\n\t\t);\n\t\tprocess.exitCode = 1;\n\t} else {\n\t\tconsole.log(\"\\nEl usuario de esta cuenta NO puede editar el fichero: la política se sostiene.\");\n\t}\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli refine [sessionId]` — convierte lo aprendido en una sesión en notas
|
|
3
|
+
* durables del harness.
|
|
4
|
+
*
|
|
5
|
+
* Va como subcomando del CLI, no como `/refine` dentro del TUI, por dos razones.
|
|
6
|
+
* La buena: refinar sobre una sesión TERMINADA da mejor material que hacerlo a
|
|
7
|
+
* mitad, cuando todavía no se sabe qué funcionó. La práctica: los manejadores
|
|
8
|
+
* de comandos slash viven en `interactive-mode.ts`, que es de upstream, y este
|
|
9
|
+
* fichero no cuesta nada contra el presupuesto de sync.
|
|
10
|
+
*
|
|
11
|
+
* El módulo `core/harness/refine.ts` existía completo y testeado desde hace
|
|
12
|
+
* varios commits, pero NADIE lo importaba: era código muerto, y la tabla
|
|
13
|
+
* comparativa lo daba por capacidad disponible. Esto es lo que faltaba para que
|
|
14
|
+
* la afirmación fuera cierta.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isRefineCommand(args: string[]): boolean;
|
|
17
|
+
export declare function runRefineCommand(args: string[]): Promise<boolean>;
|
|
18
|
+
//# sourceMappingURL=refine-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine-command.d.ts","sourceRoot":"","sources":["../../src/cli/refine-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoBH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEvD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAyEvE","sourcesContent":["/**\n * `ada-cli refine [sessionId]` — convierte lo aprendido en una sesión en notas\n * durables del harness.\n *\n * Va como subcomando del CLI, no como `/refine` dentro del TUI, por dos razones.\n * La buena: refinar sobre una sesión TERMINADA da mejor material que hacerlo a\n * mitad, cuando todavía no se sabe qué funcionó. La práctica: los manejadores\n * de comandos slash viven en `interactive-mode.ts`, que es de upstream, y este\n * fichero no cuesta nada contra el presupuesto de sync.\n *\n * El módulo `core/harness/refine.ts` existía completo y testeado desde hace\n * varios commits, pero NADIE lo importaba: era código muerto, y la tabla\n * comparativa lo daba por capacidad disponible. Esto es lo que faltaba para que\n * la afirmación fuera cierta.\n */\n\nimport { join } from \"node:path\";\nimport { getAgentDir } from \"../config.ts\";\nimport { messageText } from \"../core/workflows/agent-runner.ts\";\n\n/** Texto que se le da al refinador: de qué va la sesión y qué pasó en ella. */\nfunction summarize(entries: Array<{ role?: string; content?: unknown }>, limit = 60): string {\n\t// Se toman los ÚLTIMOS turnos: el final de una sesión contiene las\n\t// conclusiones, mientras que el principio suele ser tanteo.\n\treturn entries\n\t\t.slice(-limit)\n\t\t.map((entry) => {\n\t\t\tconst text = messageText(entry.content).slice(0, 2000);\n\t\t\treturn text ? `[${entry.role ?? \"?\"}] ${text}` : \"\";\n\t\t})\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\\n\");\n}\n\nexport function isRefineCommand(args: string[]): boolean {\n\treturn args[0] === \"refine\";\n}\n\nexport async function runRefineCommand(args: string[]): Promise<boolean> {\n\tif (!isRefineCommand(args)) return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(`Uso:\n ada-cli refine [sessionId] [--global] Extrae lecciones durables de una sesión\n\nSin sessionId usa la sesión más reciente del proyecto. Por defecto las notas se\nguardan con alcance de proyecto; --global las hace válidas en todos.\n\nCada propuesta EXIGE evidencia citada (fichero:línea, un comando y su salida, o\nun mensaje tuyo). Las que no la traen se rechazan y se te dicen.`);\n\t\treturn true;\n\t}\n\n\tconst scope = args.includes(\"--global\") ? \"global\" : \"project\";\n\tconst wanted = args.slice(1).find((arg) => !arg.startsWith(\"--\"));\n\n\tconst { SessionManager } = await import(\"../core/session-manager.ts\");\n\tconst sessions = await SessionManager.list(process.cwd());\n\tif (sessions.length === 0) {\n\t\tconsole.error(\"No hay sesiones en este proyecto.\");\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst found = wanted ? sessions.find((s) => s.id === wanted || s.id.startsWith(wanted)) : sessions[0];\n\tif (!found) {\n\t\tconsole.error(`Sesión no encontrada: ${wanted}. Usa 'ada-cli sessions' para verlas.`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst manager = SessionManager.open(found.path, undefined, found.cwd || process.cwd());\n\tconst context = manager.buildSessionContext();\n\tconst transcript = summarize(context.messages as Array<{ role?: string; content?: unknown }>);\n\tif (!transcript.trim()) {\n\t\tconsole.log(\"Esa sesión no tiene contenido del que aprender.\");\n\t\treturn true;\n\t}\n\n\tconst { REFINE_SYSTEM_PROMPT, applyProposals, parseProposals, renderRefineResult } = await import(\n\t\t\"../core/harness/refine.ts\"\n\t);\n\tconst { HarnessStore } = await import(\"../core/harness/store.ts\");\n\tconst { createAgentSession } = await import(\"../core/sdk.ts\");\n\n\tconst agentDir = getAgentDir();\n\tconst { session } = await createAgentSession({ cwd: found.cwd || process.cwd(), agentDir });\n\n\t// Se recoge la última respuesta del asistente y se espera a que el turno se\n\t// asiente; sin esperar, el JSON llegaría a medias.\n\tconst replies: string[] = [];\n\tconst settled = new Promise<void>((resolve) => {\n\t\tconst unsubscribe = session.subscribe((event) => {\n\t\t\tif (event.type === \"message_end\" && event.message.role === \"assistant\") {\n\t\t\t\tconst text = messageText(event.message.content);\n\t\t\t\tif (text) replies.push(text);\n\t\t\t}\n\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\tunsubscribe();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n\n\tconsole.log(`Refinando sobre la sesión ${found.id.slice(0, 8)}…`);\n\tawait session.prompt(`${REFINE_SYSTEM_PROMPT}\\n\\n--- SESIÓN ---\\n${transcript}`);\n\tawait settled;\n\n\tconst proposals = parseProposals(replies.at(-1) ?? \"\");\n\tconst store = new HarnessStore(join(agentDir, \"memory-engine\"), scope);\n\tconst result = applyProposals(store, proposals, scope);\n\tconsole.log(renderRefineResult(result));\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli refine [sessionId]` — convierte lo aprendido en una sesión en notas
|
|
3
|
+
* durables del harness.
|
|
4
|
+
*
|
|
5
|
+
* Va como subcomando del CLI, no como `/refine` dentro del TUI, por dos razones.
|
|
6
|
+
* La buena: refinar sobre una sesión TERMINADA da mejor material que hacerlo a
|
|
7
|
+
* mitad, cuando todavía no se sabe qué funcionó. La práctica: los manejadores
|
|
8
|
+
* de comandos slash viven en `interactive-mode.ts`, que es de upstream, y este
|
|
9
|
+
* fichero no cuesta nada contra el presupuesto de sync.
|
|
10
|
+
*
|
|
11
|
+
* El módulo `core/harness/refine.ts` existía completo y testeado desde hace
|
|
12
|
+
* varios commits, pero NADIE lo importaba: era código muerto, y la tabla
|
|
13
|
+
* comparativa lo daba por capacidad disponible. Esto es lo que faltaba para que
|
|
14
|
+
* la afirmación fuera cierta.
|
|
15
|
+
*/
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
import { getAgentDir } from "../config.js";
|
|
18
|
+
import { messageText } from "../core/workflows/agent-runner.js";
|
|
19
|
+
/** Texto que se le da al refinador: de qué va la sesión y qué pasó en ella. */
|
|
20
|
+
function summarize(entries, limit = 60) {
|
|
21
|
+
// Se toman los ÚLTIMOS turnos: el final de una sesión contiene las
|
|
22
|
+
// conclusiones, mientras que el principio suele ser tanteo.
|
|
23
|
+
return entries
|
|
24
|
+
.slice(-limit)
|
|
25
|
+
.map((entry) => {
|
|
26
|
+
const text = messageText(entry.content).slice(0, 2000);
|
|
27
|
+
return text ? `[${entry.role ?? "?"}] ${text}` : "";
|
|
28
|
+
})
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join("\n\n");
|
|
31
|
+
}
|
|
32
|
+
export function isRefineCommand(args) {
|
|
33
|
+
return args[0] === "refine";
|
|
34
|
+
}
|
|
35
|
+
export async function runRefineCommand(args) {
|
|
36
|
+
if (!isRefineCommand(args))
|
|
37
|
+
return false;
|
|
38
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
39
|
+
console.log(`Uso:
|
|
40
|
+
ada-cli refine [sessionId] [--global] Extrae lecciones durables de una sesión
|
|
41
|
+
|
|
42
|
+
Sin sessionId usa la sesión más reciente del proyecto. Por defecto las notas se
|
|
43
|
+
guardan con alcance de proyecto; --global las hace válidas en todos.
|
|
44
|
+
|
|
45
|
+
Cada propuesta EXIGE evidencia citada (fichero:línea, un comando y su salida, o
|
|
46
|
+
un mensaje tuyo). Las que no la traen se rechazan y se te dicen.`);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const scope = args.includes("--global") ? "global" : "project";
|
|
50
|
+
const wanted = args.slice(1).find((arg) => !arg.startsWith("--"));
|
|
51
|
+
const { SessionManager } = await import("../core/session-manager.js");
|
|
52
|
+
const sessions = await SessionManager.list(process.cwd());
|
|
53
|
+
if (sessions.length === 0) {
|
|
54
|
+
console.error("No hay sesiones en este proyecto.");
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
const found = wanted ? sessions.find((s) => s.id === wanted || s.id.startsWith(wanted)) : sessions[0];
|
|
59
|
+
if (!found) {
|
|
60
|
+
console.error(`Sesión no encontrada: ${wanted}. Usa 'ada-cli sessions' para verlas.`);
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const manager = SessionManager.open(found.path, undefined, found.cwd || process.cwd());
|
|
65
|
+
const context = manager.buildSessionContext();
|
|
66
|
+
const transcript = summarize(context.messages);
|
|
67
|
+
if (!transcript.trim()) {
|
|
68
|
+
console.log("Esa sesión no tiene contenido del que aprender.");
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
const { REFINE_SYSTEM_PROMPT, applyProposals, parseProposals, renderRefineResult } = await import("../core/harness/refine.js");
|
|
72
|
+
const { HarnessStore } = await import("../core/harness/store.js");
|
|
73
|
+
const { createAgentSession } = await import("../core/sdk.js");
|
|
74
|
+
const agentDir = getAgentDir();
|
|
75
|
+
const { session } = await createAgentSession({ cwd: found.cwd || process.cwd(), agentDir });
|
|
76
|
+
// Se recoge la última respuesta del asistente y se espera a que el turno se
|
|
77
|
+
// asiente; sin esperar, el JSON llegaría a medias.
|
|
78
|
+
const replies = [];
|
|
79
|
+
const settled = new Promise((resolve) => {
|
|
80
|
+
const unsubscribe = session.subscribe((event) => {
|
|
81
|
+
if (event.type === "message_end" && event.message.role === "assistant") {
|
|
82
|
+
const text = messageText(event.message.content);
|
|
83
|
+
if (text)
|
|
84
|
+
replies.push(text);
|
|
85
|
+
}
|
|
86
|
+
if (event.type === "agent_settled") {
|
|
87
|
+
unsubscribe();
|
|
88
|
+
resolve();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
console.log(`Refinando sobre la sesión ${found.id.slice(0, 8)}…`);
|
|
93
|
+
await session.prompt(`${REFINE_SYSTEM_PROMPT}\n\n--- SESIÓN ---\n${transcript}`);
|
|
94
|
+
await settled;
|
|
95
|
+
const proposals = parseProposals(replies.at(-1) ?? "");
|
|
96
|
+
const store = new HarnessStore(join(agentDir, "memory-engine"), scope);
|
|
97
|
+
const result = applyProposals(store, proposals, scope);
|
|
98
|
+
console.log(renderRefineResult(result));
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=refine-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine-command.js","sourceRoot":"","sources":["../../src/cli/refine-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli refine [sessionId]` — convierte lo aprendido en una sesión en notas\n * durables del harness.\n *\n * Va como subcomando del CLI, no como `/refine` dentro del TUI, por dos razones.\n * La buena: refinar sobre una sesión TERMINADA da mejor material que hacerlo a\n * mitad, cuando todavía no se sabe qué funcionó. La práctica: los manejadores\n * de comandos slash viven en `interactive-mode.ts`, que es de upstream, y este\n * fichero no cuesta nada contra el presupuesto de sync.\n *\n * El módulo `core/harness/refine.ts` existía completo y testeado desde hace\n * varios commits, pero NADIE lo importaba: era código muerto, y la tabla\n * comparativa lo daba por capacidad disponible. Esto es lo que faltaba para que\n * la afirmación fuera cierta.\n */\n\nimport { join } from \"node:path\";\nimport { getAgentDir } from \"../config.ts\";\nimport { messageText } from \"../core/workflows/agent-runner.ts\";\n\n/** Texto que se le da al refinador: de qué va la sesión y qué pasó en ella. */\nfunction summarize(entries: Array<{ role?: string; content?: unknown }>, limit = 60): string {\n\t// Se toman los ÚLTIMOS turnos: el final de una sesión contiene las\n\t// conclusiones, mientras que el principio suele ser tanteo.\n\treturn entries\n\t\t.slice(-limit)\n\t\t.map((entry) => {\n\t\t\tconst text = messageText(entry.content).slice(0, 2000);\n\t\t\treturn text ? `[${entry.role ?? \"?\"}] ${text}` : \"\";\n\t\t})\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\\n\");\n}\n\nexport function isRefineCommand(args: string[]): boolean {\n\treturn args[0] === \"refine\";\n}\n\nexport async function runRefineCommand(args: string[]): Promise<boolean> {\n\tif (!isRefineCommand(args)) return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(`Uso:\n ada-cli refine [sessionId] [--global] Extrae lecciones durables de una sesión\n\nSin sessionId usa la sesión más reciente del proyecto. Por defecto las notas se\nguardan con alcance de proyecto; --global las hace válidas en todos.\n\nCada propuesta EXIGE evidencia citada (fichero:línea, un comando y su salida, o\nun mensaje tuyo). Las que no la traen se rechazan y se te dicen.`);\n\t\treturn true;\n\t}\n\n\tconst scope = args.includes(\"--global\") ? \"global\" : \"project\";\n\tconst wanted = args.slice(1).find((arg) => !arg.startsWith(\"--\"));\n\n\tconst { SessionManager } = await import(\"../core/session-manager.ts\");\n\tconst sessions = await SessionManager.list(process.cwd());\n\tif (sessions.length === 0) {\n\t\tconsole.error(\"No hay sesiones en este proyecto.\");\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst found = wanted ? sessions.find((s) => s.id === wanted || s.id.startsWith(wanted)) : sessions[0];\n\tif (!found) {\n\t\tconsole.error(`Sesión no encontrada: ${wanted}. Usa 'ada-cli sessions' para verlas.`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tconst manager = SessionManager.open(found.path, undefined, found.cwd || process.cwd());\n\tconst context = manager.buildSessionContext();\n\tconst transcript = summarize(context.messages as Array<{ role?: string; content?: unknown }>);\n\tif (!transcript.trim()) {\n\t\tconsole.log(\"Esa sesión no tiene contenido del que aprender.\");\n\t\treturn true;\n\t}\n\n\tconst { REFINE_SYSTEM_PROMPT, applyProposals, parseProposals, renderRefineResult } = await import(\n\t\t\"../core/harness/refine.ts\"\n\t);\n\tconst { HarnessStore } = await import(\"../core/harness/store.ts\");\n\tconst { createAgentSession } = await import(\"../core/sdk.ts\");\n\n\tconst agentDir = getAgentDir();\n\tconst { session } = await createAgentSession({ cwd: found.cwd || process.cwd(), agentDir });\n\n\t// Se recoge la última respuesta del asistente y se espera a que el turno se\n\t// asiente; sin esperar, el JSON llegaría a medias.\n\tconst replies: string[] = [];\n\tconst settled = new Promise<void>((resolve) => {\n\t\tconst unsubscribe = session.subscribe((event) => {\n\t\t\tif (event.type === \"message_end\" && event.message.role === \"assistant\") {\n\t\t\t\tconst text = messageText(event.message.content);\n\t\t\t\tif (text) replies.push(text);\n\t\t\t}\n\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\tunsubscribe();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n\n\tconsole.log(`Refinando sobre la sesión ${found.id.slice(0, 8)}…`);\n\tawait session.prompt(`${REFINE_SYSTEM_PROMPT}\\n\\n--- SESIÓN ---\\n${transcript}`);\n\tawait settled;\n\n\tconst proposals = parseProposals(replies.at(-1) ?? \"\");\n\tconst store = new HarnessStore(join(agentDir, \"memory-engine\"), scope);\n\tconst result = applyProposals(store, proposals, scope);\n\tconsole.log(renderRefineResult(result));\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli review` — revisa un diff y ancla cada hallazgo al código.
|
|
3
|
+
*
|
|
4
|
+
* La pantalla de bienvenida ya ofrecía «Revisa mis cambios sin commitear», pero
|
|
5
|
+
* eso era una frase que iba al modelo sin nada detrás: sin contrato de salida,
|
|
6
|
+
* sin criba y sin forma de sacar los hallazgos del terminal. Aquí hay las tres
|
|
7
|
+
* cosas.
|
|
8
|
+
*
|
|
9
|
+
* Lo que hace que sirva es el ANCLAJE: un hallazgo cuya evidencia no aparece en
|
|
10
|
+
* el diff se descarta. Un revisor que inventa una línea plausible es peor que
|
|
11
|
+
* no tener revisor, porque cuesta tiempo comprobar que no existe.
|
|
12
|
+
*
|
|
13
|
+
* Y lo que lo hace vendible es `--sarif`: sin él los hallazgos se quedan en la
|
|
14
|
+
* terminal de quien lanzó el comando y no entran en el proceso de seguridad de
|
|
15
|
+
* la empresa.
|
|
16
|
+
*/
|
|
17
|
+
export interface DependenciasRevision {
|
|
18
|
+
/** Pide la revisión al modelo. Se inyecta para poder probar sin red. */
|
|
19
|
+
revisar: (sistema: string, diff: string) => Promise<string>;
|
|
20
|
+
cwd?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Devuelve true si consumió los argumentos. */
|
|
23
|
+
export declare function runReviewCommand(args: string[], deps: DependenciasRevision): Promise<boolean>;
|
|
24
|
+
//# sourceMappingURL=review-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-command.d.ts","sourceRoot":"","sources":["../../src/cli/review-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA+DH,MAAM,WAAW,oBAAoB;IACpC,yEAAwE;IACxE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,iDAAgD;AAChD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2FnG","sourcesContent":["/**\n * `ada-cli review` — revisa un diff y ancla cada hallazgo al código.\n *\n * La pantalla de bienvenida ya ofrecía «Revisa mis cambios sin commitear», pero\n * eso era una frase que iba al modelo sin nada detrás: sin contrato de salida,\n * sin criba y sin forma de sacar los hallazgos del terminal. Aquí hay las tres\n * cosas.\n *\n * Lo que hace que sirva es el ANCLAJE: un hallazgo cuya evidencia no aparece en\n * el diff se descarta. Un revisor que inventa una línea plausible es peor que\n * no tener revisor, porque cuesta tiempo comprobar que no existe.\n *\n * Y lo que lo hace vendible es `--sarif`: sin él los hallazgos se quedan en la\n * terminal de quien lanzó el comando y no entran en el proceso de seguridad de\n * la empresa.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { type Hallazgo, puntuacionDe } from \"../core/revision/hallazgo.ts\";\nimport { cribar, extraerCandidatos, PROMPT_REVISION } from \"../core/revision/revisor.ts\";\nimport { aSarif } from \"../core/revision/sarif.ts\";\n\nconst AYUDA = `Uso:\n ada-cli review [--staged] [--base <ref>] [--model <p/m>] [--sarif <f>] [--json]\n\n --staged Revisa lo que está en el índice (git diff --cached)\n --base <ref> Revisa contra una referencia (p. ej. main)\n --sarif <fich> Escribe los hallazgos en SARIF 2.1.0, para GitHub Code\n Scanning o Azure DevOps\n --model <p/m> Revisa con un modelo concreto (proveedor/modelo)\n --json Escribe los hallazgos en JSON por stdout\n\nSin opciones revisa los cambios sin commitear (git diff).\n\nCada hallazgo lleva la línea exacta que lo justifica, y los que no se pueden\nanclar en el diff se descartan: un revisor que inventa cuesta más tiempo del\nque ahorra.\n\nSale con código 1 si hay algún hallazgo crítico o alto, para que lo pueda\nmirar un CI.`;\n\n/** El diff que toca revisar, según las opciones. */\nfunction obtenerDiff(args: string[], cwd: string): string {\n\tconst base = args.indexOf(\"--base\");\n\tconst argumentos =\n\t\tbase >= 0 && args[base + 1]\n\t\t\t? [\"diff\", `${args[base + 1]}...HEAD`]\n\t\t\t: args.includes(\"--staged\")\n\t\t\t\t? [\"diff\", \"--cached\"]\n\t\t\t\t: [\"diff\"];\n\t// `-U5` da contexto suficiente para que el modelo entienda el cambio sin\n\t// mandarle el fichero entero, que es lo que dispara el coste.\n\treturn execFileSync(\"git\", [...argumentos, \"-U5\"], { cwd, encoding: \"utf8\", maxBuffer: 32 * 1024 * 1024 });\n}\n\nconst COLOR: Record<string, string> = {\n\tcritica: \"\\u001b[31m\",\n\talta: \"\\u001b[31m\",\n\tmedia: \"\\u001b[33m\",\n\tbaja: \"\\u001b[36m\",\n\tinformativa: \"\\u001b[90m\",\n};\nconst FIN = \"\\u001b[0m\";\n\nfunction imprimir(hallazgos: Hallazgo[]): void {\n\tfor (const h of hallazgos) {\n\t\tconst color = COLOR[h.severidad] ?? \"\";\n\t\tconsole.log(`${color}${h.severidad.toUpperCase()}${FIN} ${h.titulo}`);\n\t\tconsole.log(` ${h.ruta}:${h.lineaInicio}${h.lineaFin && h.lineaFin !== h.lineaInicio ? `-${h.lineaFin}` : \"\"}`);\n\t\tconsole.log(` ${h.resumen}`);\n\t\tconsole.log(` │ ${h.evidencia.split(\"\\n\").join(\"\\n │ \")}`);\n\t\tif (h.remedio) console.log(` → ${h.remedio}`);\n\t\tconsole.log(\"\");\n\t}\n}\n\nexport interface DependenciasRevision {\n\t/** Pide la revisión al modelo. Se inyecta para poder probar sin red. */\n\trevisar: (sistema: string, diff: string) => Promise<string>;\n\tcwd?: string;\n}\n\n/** Devuelve true si consumió los argumentos. */\nexport async function runReviewCommand(args: string[], deps: DependenciasRevision): Promise<boolean> {\n\tif (args[0] !== \"review\") return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst cwd = deps.cwd ?? process.cwd();\n\tlet diff: string;\n\ttry {\n\t\tdiff = obtenerDiff(args, cwd);\n\t} catch (error) {\n\t\tconsole.error(`No se pudo obtener el diff: ${error instanceof Error ? error.message : String(error)}`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (diff.trim() === \"\") {\n\t\t// Distinto de \"revisado y limpio\". Si no hay diff, no se ha revisado\n\t\t// nada, y decir \"sin hallazgos\" sería tranquilizar sobre algo que no ha\n\t\t// pasado.\n\t\tconsole.log(\"No hay cambios que revisar.\");\n\t\treturn true;\n\t}\n\n\tlet salida: string;\n\ttry {\n\t\tsalida = await deps.revisar(PROMPT_REVISION, diff);\n\t} catch (error) {\n\t\t// Un fallo del modelo tiene que verse como fallo, con código 1, y no como\n\t\t// una revisión limpia. Se midió: sobre un fallo sembrado, cuatro de cinco\n\t\t// ejecuciones decían \"no ha encontrado nada\" cuando lo que pasaba era un\n\t\t// 429 del proveedor. Y una traza de Node tampoco sirve: quien lanza esto\n\t\t// desde un CI necesita el motivo en una línea.\n\t\tconsole.error(`La revisión no se pudo completar.\\n${error instanceof Error ? error.message : String(error)}`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst extraccion = extraerCandidatos(salida);\n\tif (!extraccion.ok) {\n\t\t// Una respuesta ilegible NO es un diff limpio. La guarda de arriba solo\n\t\t// mira si el proveedor falló o cortó; un modelo que contesta prosa\n\t\t// (\"No puedo ayudarte con eso.\") o un JSON roto pasaba entera y salía\n\t\t// como \"El revisor no ha encontrado nada en este diff.\" con código 0.\n\t\t// Se midió: las dos salidas eran idénticas byte a byte.\n\t\tconsole.error(`La revisión no se pudo completar.\\n${extraccion.motivo}`);\n\t\tconsole.error(\"NO se ha revisado el diff. Esto no significa que esté limpio.\");\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst candidatos = extraccion.candidatos;\n\tconst { aceptados, descartados } = cribar(candidatos, diff);\n\n\tif (args.includes(\"--json\")) {\n\t\tconsole.log(JSON.stringify(aceptados, null, 2));\n\t} else if (aceptados.length > 0) {\n\t\timprimir(aceptados);\n\t} else if (candidatos.length === 0) {\n\t\t// El revisor miró y no vio nada. Distinto de lo de abajo, y distinto de\n\t\t// \"no había diff\": las tres se leen igual si se juntan en un mensaje.\n\t\tconsole.log(\"El revisor no ha encontrado nada en este diff.\");\n\t} else {\n\t\t// «Descartados», no «no se pudieron anclar»: el anclaje es solo uno de los\n\t\t// motivos. Un hallazgo sin `lineaInicio` se tiraba con este mismo mensaje,\n\t\t// que culpaba al anclaje de un fallo de forma y mandaba a mirar el sitio\n\t\t// equivocado. Comprobado ejecutando el comando con un hallazgo sin línea.\n\t\tconsole.log(`Ninguno de los ${candidatos.length} hallazgos pasó la criba; todos descartados.`);\n\t}\n\n\t// Los descartes se cuentan Y SE MOTIVAN, no se esconden: sin el motivo no hay\n\t// forma de saber si el revisor está afinado, si el modelo inventa evidencias\n\t// o si está devolviendo hallazgos mal formados. Agrupados por motivo para que\n\t// diez descartes no tapen la pantalla.\n\tif (descartados.length > 0) {\n\t\tconst porMotivo = new Map<string, number>();\n\t\tfor (const d of descartados) porMotivo.set(d.motivo, (porMotivo.get(d.motivo) ?? 0) + 1);\n\t\tconsole.error(`${descartados.length} hallazgo(s) descartado(s):`);\n\t\tfor (const [motivo, cuantos] of porMotivo) console.error(` ${cuantos}x ${motivo}`);\n\t}\n\n\tconst indice = args.indexOf(\"--sarif\");\n\tif (indice >= 0 && args[indice + 1]) {\n\t\tconst destino = resolve(cwd, args[indice + 1]);\n\t\twriteFileSync(destino, `${JSON.stringify(aSarif(aceptados, { raizRepo: cwd }), null, 2)}\\n`, \"utf8\");\n\t\tconsole.log(`SARIF escrito en ${destino}`);\n\t}\n\n\t// Código 1 solo con lo grave: un CI que falle por un hallazgo informativo se\n\t// desactiva la primera semana.\n\tif (aceptados.some((h) => puntuacionDe(h.severidad) >= puntuacionDe(\"alta\"))) process.exitCode = 1;\n\treturn true;\n}\n"]}
|