@hoilab/ada-cli 0.84.22 → 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 +29 -2
- package/README.es.md +17 -6
- package/README.md +109 -11
- 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/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/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/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/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 +1 -1
- 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 +30 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +430 -22
- 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 +17 -5
- 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/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/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/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/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +11 -1
- package/dist/core/extensions/loader.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/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 +12 -10
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-export.js +15 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -1
- 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 +25 -42
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +19 -1
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +71 -5
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -2
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +4 -5
- 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/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +27 -1
- 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/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +7 -1
- package/dist/core/model-resolver.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/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/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/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 +8 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +93 -1
- 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/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/settings-manager.d.ts +110 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +53 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -3
- 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 -7
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +232 -7
- 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 +8 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.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/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/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 +2 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -1
- package/dist/core/workflows/agent-runner.js +131 -44
- package/dist/core/workflows/agent-runner.js.map +1 -1
- package/dist/core/workflows/builtins.d.ts.map +1 -1
- package/dist/core/workflows/builtins.js +1 -0
- package/dist/core/workflows/builtins.js.map +1 -1
- 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 +17 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/engine.js +41 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -1
- package/dist/core/workflows/index.d.ts +8 -0
- package/dist/core/workflows/index.d.ts.map +1 -1
- package/dist/core/workflows/index.js +4 -0
- package/dist/core/workflows/index.js.map +1 -1
- package/dist/core/workflows/manager.d.ts +10 -0
- package/dist/core/workflows/manager.d.ts.map +1 -1
- package/dist/core/workflows/manager.js +35 -11
- package/dist/core/workflows/manager.js.map +1 -1
- package/dist/core/workflows/runtime.d.ts +13 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -1
- package/dist/core/workflows/runtime.js +80 -1
- package/dist/core/workflows/runtime.js.map +1 -1
- 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/types.d.ts +49 -0
- package/dist/core/workflows/types.d.ts.map +1 -1
- package/dist/core/workflows/types.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 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.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/model-selector.d.ts +8 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +41 -7
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +9 -86
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -7
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +137 -146
- package/dist/modes/interactive/interactive-mode.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/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/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/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/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 +10 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +10 -10
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +51 -49
- package/docs/index.md +15 -21
- package/docs/json.md +3 -3
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +7 -7
- package/docs/models.md +12 -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 +12 -12
- 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 +45 -20
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +11 -11
- 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/sdk/12-full-control.ts +9 -0
- package/npm-shrinkwrap.json +35 -251
- package/package.json +10 -4
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli discover` — qué han dejado otras herramientas en este proyecto:
|
|
3
|
+
* servidores MCP, skills y comandos de barra.
|
|
4
|
+
*
|
|
5
|
+
* Lee, no activa nada por sorpresa. Un servidor MCP `stdio` se LISTA, nunca
|
|
6
|
+
* se lanza (ver el motivo en cada entrada). Una skill descubierta en
|
|
7
|
+
* `.claude/skills` o `.github/skills` SÍ queda disponible en la sesión: se
|
|
8
|
+
* enlaza dentro de `.ada/skills`, que `core/skills.ts` ya recorre en cada
|
|
9
|
+
* sesión sin que se le haya tocado una línea (ver `descubrimiento/skills.ts`
|
|
10
|
+
* para el motivo de por qué es un symlink y no un `additionalSkillPaths` en
|
|
11
|
+
* `agent-session-services.ts`: el presupuesto de sincronización estaba a
|
|
12
|
+
* 115/115). Los comandos de barra, por ahora, solo se listan.
|
|
13
|
+
*
|
|
14
|
+
* Un proyecto vacío no dice "nada": dice DÓNDE ha mirado, para cada una de
|
|
15
|
+
* las tres cosas.
|
|
16
|
+
*/
|
|
17
|
+
import { descubrirComandos } from "../core/descubrimiento/comandos.js";
|
|
18
|
+
import { descubrirServidoresMcp } from "../core/descubrimiento/mcp.js";
|
|
19
|
+
import { descubrirSkills, instalarSkillsDescubiertas } from "../core/descubrimiento/skills.js";
|
|
20
|
+
const AYUDA = `Uso:
|
|
21
|
+
ada-cli discover Lista lo que hay: servidores MCP, skills y
|
|
22
|
+
comandos de otras herramientas en este proyecto
|
|
23
|
+
ada-cli discover --instalar Además, enlaza las skills descubiertas en
|
|
24
|
+
.ada/skills para que la próxima sesión las cargue
|
|
25
|
+
|
|
26
|
+
NO ACTIVA NADA POR SU CUENTA. Un servidor MCP stdio se marca "no soportado"
|
|
27
|
+
(el cliente MCP de Ada solo habla HTTP a propósito) y nunca se lanza; los
|
|
28
|
+
comandos de barra ajenos solo se listan; y las skills solo se enlazan si lo
|
|
29
|
+
pides con --instalar.
|
|
30
|
+
|
|
31
|
+
Enlazar escribe symlinks DENTRO de tu proyecto (.ada/skills), que es donde
|
|
32
|
+
viven las skills de proyecto — y por eso no se hace sin pedirlo: un comando
|
|
33
|
+
que se llama "descubrir" no debería dejar ficheros que acaben en un commit.`;
|
|
34
|
+
export async function runDiscoverCommand(args) {
|
|
35
|
+
if (args[0] !== "discover")
|
|
36
|
+
return false;
|
|
37
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
38
|
+
console.log(AYUDA);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const cwd = process.cwd();
|
|
42
|
+
console.log("Servidores MCP:");
|
|
43
|
+
const mcp = descubrirServidoresMcp(cwd);
|
|
44
|
+
if (mcp.servidores.length === 0) {
|
|
45
|
+
console.log(` (ninguno encontrado) — mirado en:`);
|
|
46
|
+
for (const ruta of mcp.ficherosMirados)
|
|
47
|
+
console.log(` ${ruta}`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
for (const servidor of mcp.servidores) {
|
|
51
|
+
const estado = servidor.soportado ? "activo" : `no soportado — ${servidor.motivo}`;
|
|
52
|
+
const destino = servidor.url ?? servidor.comando ?? "";
|
|
53
|
+
console.log(` [${servidor.origen}] ${servidor.nombre} (${servidor.transporte}) ${estado}`);
|
|
54
|
+
console.log(` ${destino} — ${servidor.ruta}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
for (const error of mcp.errores)
|
|
58
|
+
console.log(` ! ${error.ruta}: ${error.motivo}`);
|
|
59
|
+
console.log("\nSkills:");
|
|
60
|
+
const skills = descubrirSkills(cwd);
|
|
61
|
+
if (skills.skills.length === 0) {
|
|
62
|
+
console.log(` (ninguna encontrada) — mirado en:`);
|
|
63
|
+
for (const dir of skills.directoriosMirados)
|
|
64
|
+
console.log(` ${dir}`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Enlazar ANTES de listar: si falla el enlace de una, se sigue listando
|
|
68
|
+
// igual — "listada pero no disponible" es mejor que tragarse el error.
|
|
69
|
+
// Solo con `--instalar`. Listar no escribe: ver la nota de la ayuda.
|
|
70
|
+
const instalar = args.includes("--instalar") || args.includes("--install");
|
|
71
|
+
const instaladas = instalar
|
|
72
|
+
? new Map(instalarSkillsDescubiertas(cwd).map((s) => [`${s.origen}:${s.nombre}`, s.enlace]))
|
|
73
|
+
: new Map();
|
|
74
|
+
for (const skill of skills.skills) {
|
|
75
|
+
const enlace = instaladas.get(`${skill.origen}:${skill.nombre}`);
|
|
76
|
+
// Tres estados, no dos: enlazada · no se ha pedido enlazar · se pidió y
|
|
77
|
+
// falló. Juntar los dos últimos haría que un fallo de enlace se leyera
|
|
78
|
+
// como "no lo pediste".
|
|
79
|
+
const disponibilidad = enlace
|
|
80
|
+
? `disponible en la sesión vía ${enlace}`
|
|
81
|
+
: instalar
|
|
82
|
+
? "NO se pudo enlazar en .ada/skills"
|
|
83
|
+
: "no enlazada (usa --instalar)";
|
|
84
|
+
console.log(` [${skill.origen}] ${skill.nombre} — ${skill.descripcion}`);
|
|
85
|
+
console.log(` ${skill.ruta} (${disponibilidad})`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const error of skills.errores)
|
|
89
|
+
console.log(` ! ${error.ruta}: ${error.motivo}`);
|
|
90
|
+
console.log("\nComandos de barra:");
|
|
91
|
+
const comandos = descubrirComandos(cwd);
|
|
92
|
+
if (comandos.comandos.length === 0) {
|
|
93
|
+
console.log(` (ninguno encontrado) — mirado en:`);
|
|
94
|
+
for (const dir of comandos.directoriosMirados)
|
|
95
|
+
console.log(` ${dir}`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
for (const comando of comandos.comandos) {
|
|
99
|
+
const descripcion = comando.descripcion ? ` — ${comando.descripcion}` : "";
|
|
100
|
+
console.log(` [${comando.origen}] /${comando.nombre}${descripcion}`);
|
|
101
|
+
console.log(` ${comando.ruta}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
for (const error of comandos.errores)
|
|
105
|
+
console.log(` ! ${error.ruta}: ${error.motivo}`);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=discover-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-command.js","sourceRoot":"","sources":["../../src/cli/discover-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli discover` — qué han dejado otras herramientas en este proyecto:\n * servidores MCP, skills y comandos de barra.\n *\n * Lee, no activa nada por sorpresa. Un servidor MCP `stdio` se LISTA, nunca\n * se lanza (ver el motivo en cada entrada). Una skill descubierta en\n * `.claude/skills` o `.github/skills` SÍ queda disponible en la sesión: se\n * enlaza dentro de `.ada/skills`, que `core/skills.ts` ya recorre en cada\n * sesión sin que se le haya tocado una línea (ver `descubrimiento/skills.ts`\n * para el motivo de por qué es un symlink y no un `additionalSkillPaths` en\n * `agent-session-services.ts`: el presupuesto de sincronización estaba a\n * 115/115). Los comandos de barra, por ahora, solo se listan.\n *\n * Un proyecto vacío no dice \"nada\": dice DÓNDE ha mirado, para cada una de\n * las tres cosas.\n */\n\nimport { descubrirComandos } from \"../core/descubrimiento/comandos.ts\";\nimport { descubrirServidoresMcp } from \"../core/descubrimiento/mcp.ts\";\nimport { descubrirSkills, instalarSkillsDescubiertas } from \"../core/descubrimiento/skills.ts\";\n\nconst AYUDA = `Uso:\n ada-cli discover Lista lo que hay: servidores MCP, skills y\n comandos de otras herramientas en este proyecto\n ada-cli discover --instalar Además, enlaza las skills descubiertas en\n .ada/skills para que la próxima sesión las cargue\n\nNO ACTIVA NADA POR SU CUENTA. Un servidor MCP stdio se marca \"no soportado\"\n(el cliente MCP de Ada solo habla HTTP a propósito) y nunca se lanza; los\ncomandos de barra ajenos solo se listan; y las skills solo se enlazan si lo\npides con --instalar.\n\nEnlazar escribe symlinks DENTRO de tu proyecto (.ada/skills), que es donde\nviven las skills de proyecto — y por eso no se hace sin pedirlo: un comando\nque se llama \"descubrir\" no debería dejar ficheros que acaben en un commit.`;\n\nexport async function runDiscoverCommand(args: string[]): Promise<boolean> {\n\tif (args[0] !== \"discover\") return false;\n\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst cwd = process.cwd();\n\n\tconsole.log(\"Servidores MCP:\");\n\tconst mcp = descubrirServidoresMcp(cwd);\n\tif (mcp.servidores.length === 0) {\n\t\tconsole.log(` (ninguno encontrado) — mirado en:`);\n\t\tfor (const ruta of mcp.ficherosMirados) console.log(` ${ruta}`);\n\t} else {\n\t\tfor (const servidor of mcp.servidores) {\n\t\t\tconst estado = servidor.soportado ? \"activo\" : `no soportado — ${servidor.motivo}`;\n\t\t\tconst destino = servidor.url ?? servidor.comando ?? \"\";\n\t\t\tconsole.log(` [${servidor.origen}] ${servidor.nombre} (${servidor.transporte}) ${estado}`);\n\t\t\tconsole.log(` ${destino} — ${servidor.ruta}`);\n\t\t}\n\t}\n\tfor (const error of mcp.errores) console.log(` ! ${error.ruta}: ${error.motivo}`);\n\n\tconsole.log(\"\\nSkills:\");\n\tconst skills = descubrirSkills(cwd);\n\tif (skills.skills.length === 0) {\n\t\tconsole.log(` (ninguna encontrada) — mirado en:`);\n\t\tfor (const dir of skills.directoriosMirados) console.log(` ${dir}`);\n\t} else {\n\t\t// Enlazar ANTES de listar: si falla el enlace de una, se sigue listando\n\t\t// igual — \"listada pero no disponible\" es mejor que tragarse el error.\n\t\t// Solo con `--instalar`. Listar no escribe: ver la nota de la ayuda.\n\t\tconst instalar = args.includes(\"--instalar\") || args.includes(\"--install\");\n\t\tconst instaladas = instalar\n\t\t\t? new Map(instalarSkillsDescubiertas(cwd).map((s) => [`${s.origen}:${s.nombre}`, s.enlace]))\n\t\t\t: new Map<string, string>();\n\t\tfor (const skill of skills.skills) {\n\t\t\tconst enlace = instaladas.get(`${skill.origen}:${skill.nombre}`);\n\t\t\t// Tres estados, no dos: enlazada · no se ha pedido enlazar · se pidió y\n\t\t\t// falló. Juntar los dos últimos haría que un fallo de enlace se leyera\n\t\t\t// como \"no lo pediste\".\n\t\t\tconst disponibilidad = enlace\n\t\t\t\t? `disponible en la sesión vía ${enlace}`\n\t\t\t\t: instalar\n\t\t\t\t\t? \"NO se pudo enlazar en .ada/skills\"\n\t\t\t\t\t: \"no enlazada (usa --instalar)\";\n\t\t\tconsole.log(` [${skill.origen}] ${skill.nombre} — ${skill.descripcion}`);\n\t\t\tconsole.log(` ${skill.ruta} (${disponibilidad})`);\n\t\t}\n\t}\n\tfor (const error of skills.errores) console.log(` ! ${error.ruta}: ${error.motivo}`);\n\n\tconsole.log(\"\\nComandos de barra:\");\n\tconst comandos = descubrirComandos(cwd);\n\tif (comandos.comandos.length === 0) {\n\t\tconsole.log(` (ninguno encontrado) — mirado en:`);\n\t\tfor (const dir of comandos.directoriosMirados) console.log(` ${dir}`);\n\t} else {\n\t\tfor (const comando of comandos.comandos) {\n\t\t\tconst descripcion = comando.descripcion ? ` — ${comando.descripcion}` : \"\";\n\t\t\tconsole.log(` [${comando.origen}] /${comando.nombre}${descripcion}`);\n\t\t\tconsole.log(` ${comando.ruta}`);\n\t\t}\n\t}\n\tfor (const error of comandos.errores) console.log(` ! ${error.ruta}: ${error.motivo}`);\n\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli hashline` — aplica y genera hunks del formato de edición anclado
|
|
3
|
+
* por hash de línea (`core/edicion/hashline.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Dos subcomandos porque las dos puntas hacen falta para poder demostrar el
|
|
6
|
+
* formato de punta a punta sin escribir un cliente aparte: `tag` calcula la
|
|
7
|
+
* cabecera `[ruta#tag]` de un rango tal como está el fichero AHORA (lo que
|
|
8
|
+
* generaría quien compone un hunk), y `apply` la verifica y aplica.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runHashlineCommand(args: string[]): Promise<boolean>;
|
|
11
|
+
//# sourceMappingURL=hashline-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashline-command.d.ts","sourceRoot":"","sources":["../../src/cli/hashline-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAuEzE","sourcesContent":["/**\n * `ada-cli hashline` — aplica y genera hunks del formato de edición anclado\n * por hash de línea (`core/edicion/hashline.ts`).\n *\n * Dos subcomandos porque las dos puntas hacen falta para poder demostrar el\n * formato de punta a punta sin escribir un cliente aparte: `tag` calcula la\n * cabecera `[ruta#tag]` de un rango tal como está el fichero AHORA (lo que\n * generaría quien compone un hunk), y `apply` la verifica y aplica.\n */\n\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { aplicarHashline, construirCabecera } from \"../core/edicion/hashline.ts\";\n\nfunction ayuda(): void {\n\tconsole.log(`Uso:\n ada-cli hashline tag <ruta> <desde> [hasta] Imprime \"[ruta#tag]\" para ese rango, tal como está el fichero ahora\n ada-cli hashline apply <ruta> [--patch <file>] Aplica un hunk hashline; sin --patch lo lee de stdin\n\nEl hunk (para \"apply\") tiene tres partes, cada una en su línea:\n [ruta#tag]\n desde-hasta\n +línea de sustitución (una por línea; \"+\" sola = línea en blanco)\n\nSe RECHAZA sin tocar el fichero si el tag no corresponde al contenido actual\nde ese rango: significa que el fichero cambió por debajo desde que se generó\nel hunk.`);\n}\n\nfunction leerStdinSync(): string {\n\t// Sin await: los subcomandos de `ada-cli` que no abren el TUI son\n\t// procesos de un solo tiro, y `readFileSync(0, ...)` es la forma estándar\n\t// de leer stdin entero de forma síncrona en Node sin traer un lector de\n\t// stream para un caso de uso tan chico.\n\ttry {\n\t\treturn readFileSync(0, \"utf-8\");\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\nexport async function runHashlineCommand(args: string[]): Promise<boolean> {\n\tif (args[0] !== \"hashline\") return false;\n\n\tif (args.includes(\"--help\") || args.includes(\"-h\") || args.length === 1) {\n\t\tayuda();\n\t\treturn true;\n\t}\n\n\tconst sub = args[1];\n\n\tif (sub === \"tag\") {\n\t\tconst ruta = args[2];\n\t\tconst desde = Number(args[3]);\n\t\tconst hasta = args[4] !== undefined ? Number(args[4]) : desde;\n\t\tif (!ruta || !Number.isInteger(desde) || !Number.isInteger(hasta)) {\n\t\t\tconsole.error(\"Uso: ada-cli hashline tag <ruta> <desde> [hasta]\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tlet contenido: string;\n\t\ttry {\n\t\t\tcontenido = readFileSync(resolve(process.cwd(), ruta), \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(construirCabecera(ruta, contenido, desde, hasta));\n\t\treturn true;\n\t}\n\n\tif (sub === \"apply\") {\n\t\tconst ruta = args[2];\n\t\tif (!ruta) {\n\t\t\tconsole.error(\"Uso: ada-cli hashline apply <ruta> [--patch <fichero>]\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst iPatch = args.indexOf(\"--patch\");\n\t\tconst textoHunk = iPatch >= 0 && args[iPatch + 1] ? readFileSync(args[iPatch + 1], \"utf-8\") : leerStdinSync();\n\t\tif (textoHunk.trim() === \"\") {\n\t\t\tconsole.error(\"No hay hunk que aplicar (ni --patch ni stdin traían nada).\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst rutaAbsoluta = resolve(process.cwd(), ruta);\n\t\tlet contenidoActual: string;\n\t\ttry {\n\t\t\tcontenidoActual = readFileSync(rutaAbsoluta, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst resultado = aplicarHashline(contenidoActual, textoHunk);\n\t\tif (!resultado.ok) {\n\t\t\tconsole.error(`Hunk RECHAZADO, ${ruta} no se ha tocado: ${resultado.motivo}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\twriteFileSync(rutaAbsoluta, resultado.contenido, \"utf-8\");\n\t\tconsole.log(`Aplicado sobre ${ruta}.`);\n\t\treturn true;\n\t}\n\n\tconsole.error(`Subcomando desconocido: \"${sub}\". Usa \"ada-cli hashline --help\".`);\n\tprocess.exitCode = 1;\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ada-cli hashline` — aplica y genera hunks del formato de edición anclado
|
|
3
|
+
* por hash de línea (`core/edicion/hashline.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Dos subcomandos porque las dos puntas hacen falta para poder demostrar el
|
|
6
|
+
* formato de punta a punta sin escribir un cliente aparte: `tag` calcula la
|
|
7
|
+
* cabecera `[ruta#tag]` de un rango tal como está el fichero AHORA (lo que
|
|
8
|
+
* generaría quien compone un hunk), y `apply` la verifica y aplica.
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
11
|
+
import { resolve } from "node:path";
|
|
12
|
+
import { aplicarHashline, construirCabecera } from "../core/edicion/hashline.js";
|
|
13
|
+
function ayuda() {
|
|
14
|
+
console.log(`Uso:
|
|
15
|
+
ada-cli hashline tag <ruta> <desde> [hasta] Imprime "[ruta#tag]" para ese rango, tal como está el fichero ahora
|
|
16
|
+
ada-cli hashline apply <ruta> [--patch <file>] Aplica un hunk hashline; sin --patch lo lee de stdin
|
|
17
|
+
|
|
18
|
+
El hunk (para "apply") tiene tres partes, cada una en su línea:
|
|
19
|
+
[ruta#tag]
|
|
20
|
+
desde-hasta
|
|
21
|
+
+línea de sustitución (una por línea; "+" sola = línea en blanco)
|
|
22
|
+
|
|
23
|
+
Se RECHAZA sin tocar el fichero si el tag no corresponde al contenido actual
|
|
24
|
+
de ese rango: significa que el fichero cambió por debajo desde que se generó
|
|
25
|
+
el hunk.`);
|
|
26
|
+
}
|
|
27
|
+
function leerStdinSync() {
|
|
28
|
+
// Sin await: los subcomandos de `ada-cli` que no abren el TUI son
|
|
29
|
+
// procesos de un solo tiro, y `readFileSync(0, ...)` es la forma estándar
|
|
30
|
+
// de leer stdin entero de forma síncrona en Node sin traer un lector de
|
|
31
|
+
// stream para un caso de uso tan chico.
|
|
32
|
+
try {
|
|
33
|
+
return readFileSync(0, "utf-8");
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export async function runHashlineCommand(args) {
|
|
40
|
+
if (args[0] !== "hashline")
|
|
41
|
+
return false;
|
|
42
|
+
if (args.includes("--help") || args.includes("-h") || args.length === 1) {
|
|
43
|
+
ayuda();
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
const sub = args[1];
|
|
47
|
+
if (sub === "tag") {
|
|
48
|
+
const ruta = args[2];
|
|
49
|
+
const desde = Number(args[3]);
|
|
50
|
+
const hasta = args[4] !== undefined ? Number(args[4]) : desde;
|
|
51
|
+
if (!ruta || !Number.isInteger(desde) || !Number.isInteger(hasta)) {
|
|
52
|
+
console.error("Uso: ada-cli hashline tag <ruta> <desde> [hasta]");
|
|
53
|
+
process.exitCode = 1;
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
let contenido;
|
|
57
|
+
try {
|
|
58
|
+
contenido = readFileSync(resolve(process.cwd(), ruta), "utf-8");
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);
|
|
62
|
+
process.exitCode = 1;
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
console.log(construirCabecera(ruta, contenido, desde, hasta));
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (sub === "apply") {
|
|
69
|
+
const ruta = args[2];
|
|
70
|
+
if (!ruta) {
|
|
71
|
+
console.error("Uso: ada-cli hashline apply <ruta> [--patch <fichero>]");
|
|
72
|
+
process.exitCode = 1;
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
const iPatch = args.indexOf("--patch");
|
|
76
|
+
const textoHunk = iPatch >= 0 && args[iPatch + 1] ? readFileSync(args[iPatch + 1], "utf-8") : leerStdinSync();
|
|
77
|
+
if (textoHunk.trim() === "") {
|
|
78
|
+
console.error("No hay hunk que aplicar (ni --patch ni stdin traían nada).");
|
|
79
|
+
process.exitCode = 1;
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
const rutaAbsoluta = resolve(process.cwd(), ruta);
|
|
83
|
+
let contenidoActual;
|
|
84
|
+
try {
|
|
85
|
+
contenidoActual = readFileSync(rutaAbsoluta, "utf-8");
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);
|
|
89
|
+
process.exitCode = 1;
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
const resultado = aplicarHashline(contenidoActual, textoHunk);
|
|
93
|
+
if (!resultado.ok) {
|
|
94
|
+
console.error(`Hunk RECHAZADO, ${ruta} no se ha tocado: ${resultado.motivo}`);
|
|
95
|
+
process.exitCode = 1;
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
writeFileSync(rutaAbsoluta, resultado.contenido, "utf-8");
|
|
99
|
+
console.log(`Aplicado sobre ${ruta}.`);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
console.error(`Subcomando desconocido: "${sub}". Usa "ada-cli hashline --help".`);
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=hashline-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashline-command.js","sourceRoot":"","sources":["../../src/cli/hashline-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli hashline` — aplica y genera hunks del formato de edición anclado\n * por hash de línea (`core/edicion/hashline.ts`).\n *\n * Dos subcomandos porque las dos puntas hacen falta para poder demostrar el\n * formato de punta a punta sin escribir un cliente aparte: `tag` calcula la\n * cabecera `[ruta#tag]` de un rango tal como está el fichero AHORA (lo que\n * generaría quien compone un hunk), y `apply` la verifica y aplica.\n */\n\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { aplicarHashline, construirCabecera } from \"../core/edicion/hashline.ts\";\n\nfunction ayuda(): void {\n\tconsole.log(`Uso:\n ada-cli hashline tag <ruta> <desde> [hasta] Imprime \"[ruta#tag]\" para ese rango, tal como está el fichero ahora\n ada-cli hashline apply <ruta> [--patch <file>] Aplica un hunk hashline; sin --patch lo lee de stdin\n\nEl hunk (para \"apply\") tiene tres partes, cada una en su línea:\n [ruta#tag]\n desde-hasta\n +línea de sustitución (una por línea; \"+\" sola = línea en blanco)\n\nSe RECHAZA sin tocar el fichero si el tag no corresponde al contenido actual\nde ese rango: significa que el fichero cambió por debajo desde que se generó\nel hunk.`);\n}\n\nfunction leerStdinSync(): string {\n\t// Sin await: los subcomandos de `ada-cli` que no abren el TUI son\n\t// procesos de un solo tiro, y `readFileSync(0, ...)` es la forma estándar\n\t// de leer stdin entero de forma síncrona en Node sin traer un lector de\n\t// stream para un caso de uso tan chico.\n\ttry {\n\t\treturn readFileSync(0, \"utf-8\");\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\nexport async function runHashlineCommand(args: string[]): Promise<boolean> {\n\tif (args[0] !== \"hashline\") return false;\n\n\tif (args.includes(\"--help\") || args.includes(\"-h\") || args.length === 1) {\n\t\tayuda();\n\t\treturn true;\n\t}\n\n\tconst sub = args[1];\n\n\tif (sub === \"tag\") {\n\t\tconst ruta = args[2];\n\t\tconst desde = Number(args[3]);\n\t\tconst hasta = args[4] !== undefined ? Number(args[4]) : desde;\n\t\tif (!ruta || !Number.isInteger(desde) || !Number.isInteger(hasta)) {\n\t\t\tconsole.error(\"Uso: ada-cli hashline tag <ruta> <desde> [hasta]\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tlet contenido: string;\n\t\ttry {\n\t\t\tcontenido = readFileSync(resolve(process.cwd(), ruta), \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(construirCabecera(ruta, contenido, desde, hasta));\n\t\treturn true;\n\t}\n\n\tif (sub === \"apply\") {\n\t\tconst ruta = args[2];\n\t\tif (!ruta) {\n\t\t\tconsole.error(\"Uso: ada-cli hashline apply <ruta> [--patch <fichero>]\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst iPatch = args.indexOf(\"--patch\");\n\t\tconst textoHunk = iPatch >= 0 && args[iPatch + 1] ? readFileSync(args[iPatch + 1], \"utf-8\") : leerStdinSync();\n\t\tif (textoHunk.trim() === \"\") {\n\t\t\tconsole.error(\"No hay hunk que aplicar (ni --patch ni stdin traían nada).\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst rutaAbsoluta = resolve(process.cwd(), ruta);\n\t\tlet contenidoActual: string;\n\t\ttry {\n\t\t\tcontenidoActual = readFileSync(rutaAbsoluta, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`No se pudo leer ${ruta}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst resultado = aplicarHashline(contenidoActual, textoHunk);\n\t\tif (!resultado.ok) {\n\t\t\tconsole.error(`Hunk RECHAZADO, ${ruta} no se ha tocado: ${resultado.motivo}`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\twriteFileSync(rutaAbsoluta, resultado.contenido, \"utf-8\");\n\t\tconsole.log(`Aplicado sobre ${ruta}.`);\n\t\treturn true;\n\t}\n\n\tconsole.error(`Subcomando desconocido: \"${sub}\". Usa \"ada-cli hashline --help\".`);\n\tprocess.exitCode = 1;\n\treturn true;\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 { type Formato, type ResumenSesion } from "../core/importar/formatos.ts";
|
|
13
|
+
export interface ResultadoImportacion {
|
|
14
|
+
encontradas: ResumenSesion[];
|
|
15
|
+
escritas: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Busca (y opcionalmente escribe) las sesiones importables.
|
|
19
|
+
*
|
|
20
|
+
* Separado del comando para poder probarlo con directorios de mentira, sin
|
|
21
|
+
* tocar el `$HOME` de quien ejecuta las pruebas.
|
|
22
|
+
*/
|
|
23
|
+
export declare function importar(opciones: {
|
|
24
|
+
fuentes: Array<{
|
|
25
|
+
formato: Formato;
|
|
26
|
+
raiz: string;
|
|
27
|
+
}>;
|
|
28
|
+
destino: string;
|
|
29
|
+
escribir: boolean;
|
|
30
|
+
limite: number;
|
|
31
|
+
nuevoId: (indice: number) => string;
|
|
32
|
+
}): ResultadoImportacion;
|
|
33
|
+
/** Devuelve true si consumió los argumentos. */
|
|
34
|
+
export declare function runImportCommand(args: string[], agentDir: string, nuevoId: () => string): boolean;
|
|
35
|
+
//# sourceMappingURL=import-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-command.d.ts","sourceRoot":"","sources":["../../src/cli/import-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,8BAA8B,CAAC;AAgDpG,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,GAAG,oBAAoB,CAoCvB;AAED,iDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,OAAO,CA6DjG","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,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"]}
|