@hoilab/ada-cli 0.84.21 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -2
- package/README.es.md +174 -0
- package/README.md +203 -658
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +85 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +862 -78
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +21 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +21 -6
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +56 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +100 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +32 -50
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +21 -4
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +219 -55
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -1
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +40 -12
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +41 -8
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +19 -7
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +58 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +326 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +156 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -12
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +234 -12
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +28 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +88 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +312 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +283 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +503 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +26 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +18 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +122 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +351 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +62 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +380 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +191 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +180 -56
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +709 -75
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +25 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +62 -51
- package/docs/index.md +15 -21
- package/docs/json.md +10 -5
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +18 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +21 -15
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +47 -22
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +14 -13
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/12-full-control.ts +9 -0
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +35 -261
- package/package.json +9 -3
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills que otras herramientas dejaron en el proyecto: `.claude/skills/<nombre>/SKILL.md`
|
|
3
|
+
* y `.github/skills/`.
|
|
4
|
+
*
|
|
5
|
+
* No se reimplementa el parseo de SKILL.md: `../skills.ts` ya sabe leer
|
|
6
|
+
* frontmatter, validar nombre/descripción y bajar por subdirectorios — es
|
|
7
|
+
* exactamente el mismo formato (Agent Skills).
|
|
8
|
+
*
|
|
9
|
+
* `instalarSkillsDescubiertas` es la parte que las hace disponibles DE
|
|
10
|
+
* VERDAD, no solo listadas: enlaza cada una dentro de `.ada/skills`, la
|
|
11
|
+
* carpeta de proyecto que `core/skills.ts` YA recorre sin que se le haya
|
|
12
|
+
* tocado ni una línea. Es la alternativa a pasar `additionalSkillPaths` por
|
|
13
|
+
* `agent-session-services.ts` — que también habría funcionado, pero ese
|
|
14
|
+
* fichero es de upstream y el presupuesto de sincronización ya estaba en
|
|
15
|
+
* 115/115 antes de este cambio (`./scripts/sync-ada.sh --check`). Un symlink
|
|
16
|
+
* en un directorio que Ada ya escanea consigue lo mismo por CERO hunks.
|
|
17
|
+
*/
|
|
18
|
+
import { lstatSync, mkdirSync, readlinkSync, symlinkSync, unlinkSync } from "node:fs";
|
|
19
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
20
|
+
import { CONFIG_DIR_NAME } from "../../config.js";
|
|
21
|
+
import { loadSkillsFromDir } from "../skills.js";
|
|
22
|
+
const FUENTES = [
|
|
23
|
+
{ origen: "Claude Code", relativa: ".claude/skills" },
|
|
24
|
+
{ origen: "GitHub Copilot", relativa: ".github/skills" },
|
|
25
|
+
];
|
|
26
|
+
export function descubrirSkills(cwd) {
|
|
27
|
+
const skills = [];
|
|
28
|
+
const directoriosMirados = [];
|
|
29
|
+
const errores = [];
|
|
30
|
+
for (const fuente of FUENTES) {
|
|
31
|
+
directoriosMirados.push(fuente.relativa);
|
|
32
|
+
const dir = join(cwd, fuente.relativa);
|
|
33
|
+
// Directorio ausente: "no hay", `loadSkillsFromDir` devuelve vacío sin
|
|
34
|
+
// diagnóstico. Un SKILL.md que existe pero no pasa el parseo SÍ genera uno:
|
|
35
|
+
// esa es la diferencia entre "no hay" y "no he podido" que pide la regla 6.
|
|
36
|
+
const { skills: encontradas, diagnostics } = loadSkillsFromDir({ dir, source: `descubierta:${fuente.origen}` });
|
|
37
|
+
for (const skill of encontradas) {
|
|
38
|
+
skills.push({
|
|
39
|
+
origen: fuente.origen,
|
|
40
|
+
ruta: skill.filePath,
|
|
41
|
+
baseDir: skill.baseDir,
|
|
42
|
+
nombre: skill.name,
|
|
43
|
+
descripcion: skill.description,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
for (const diagnostic of diagnostics) {
|
|
47
|
+
errores.push({ ruta: diagnostic.path ?? dir, motivo: diagnostic.message });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { skills, directoriosMirados, errores };
|
|
51
|
+
}
|
|
52
|
+
function slugificar(texto) {
|
|
53
|
+
return texto
|
|
54
|
+
.toLowerCase()
|
|
55
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
56
|
+
.replace(/(^-+|-+$)/g, "");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Deja `enlace` como symlink a `destino`. Devuelve false sin tocar nada si
|
|
60
|
+
* `enlace` ya existe y NO es un symlink nuestro — nunca se borra un fichero
|
|
61
|
+
* real que el usuario pueda tener ahí con el mismo nombre.
|
|
62
|
+
*/
|
|
63
|
+
function asegurarEnlace(destino, enlace) {
|
|
64
|
+
try {
|
|
65
|
+
const info = lstatSync(enlace);
|
|
66
|
+
if (!info.isSymbolicLink())
|
|
67
|
+
return false;
|
|
68
|
+
if (resolve(dirname(enlace), readlinkSync(enlace)) === destino)
|
|
69
|
+
return true; // ya estaba
|
|
70
|
+
unlinkSync(enlace);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// no existe todavía: se crea abajo
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
symlinkSync(destino, enlace, "dir");
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// sistema de ficheros sin symlinks (o sin permiso): se queda sin instalar,
|
|
81
|
+
// pero sigue apareciendo en `descubrirSkills` — listada, no disponible.
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Enlaza cada skill descubierta dentro de `.ada/skills` para que la próxima
|
|
87
|
+
* sesión (interactiva, `serve`, `acp`...) la cargue de verdad, sin que nadie
|
|
88
|
+
* tenga que pasar `--skill` a mano.
|
|
89
|
+
*
|
|
90
|
+
* ponytail: no limpia symlinks de skills que dejaron de existir en origen.
|
|
91
|
+
* Un symlink roto no rompe nada — `core/skills.ts` ya lo salta en silencio —
|
|
92
|
+
* pero se queda ahí. Si el descuido empieza a notarse, un `discover --prune`
|
|
93
|
+
* que borre los symlinks propios (prefijo `descubierta-`) que ya no resuelven
|
|
94
|
+
* es la subida natural.
|
|
95
|
+
*/
|
|
96
|
+
export function instalarSkillsDescubiertas(cwd) {
|
|
97
|
+
const { skills } = descubrirSkills(cwd);
|
|
98
|
+
if (skills.length === 0)
|
|
99
|
+
return [];
|
|
100
|
+
const destinoBase = join(cwd, CONFIG_DIR_NAME, "skills");
|
|
101
|
+
mkdirSync(destinoBase, { recursive: true });
|
|
102
|
+
const instaladas = [];
|
|
103
|
+
for (const skill of skills) {
|
|
104
|
+
const slug = `descubierta-${slugificar(skill.origen)}-${basename(skill.baseDir)}`;
|
|
105
|
+
const enlace = join(destinoBase, slug);
|
|
106
|
+
const destino = resolve(skill.baseDir);
|
|
107
|
+
if (asegurarEnlace(destino, enlace)) {
|
|
108
|
+
instaladas.push({ nombre: skill.nombre, origen: skill.origen, enlace });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return instaladas;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/descubrimiento/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA0BjD,MAAM,OAAO,GAAmB;IAC/B,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACrD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE;CACxD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAW,EAAiC;IAC3E,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,OAAO,GAA4C,EAAE,CAAC;IAE5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,wEAAuE;QACvE,8EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEhH,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,KAAK,CAAC,QAAQ;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC9B,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;AAAA,CAC/C;AASD,SAAS,UAAU,CAAC,KAAa,EAAU;IAC1C,OAAO,KAAK;SACV,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAAA,CAC5B;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,MAAc,EAAW;IACjE,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QACzF,UAAU,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,oCAAmC;IACpC,CAAC;IACD,IAAI,CAAC;QACJ,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,2EAA2E;QAC3E,0EAAwE;QACxE,OAAO,KAAK,CAAC;IACd,CAAC;AAAA,CACD;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW,EAAoB;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IACzD,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,eAAe,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AAAA,CAClB","sourcesContent":["/**\n * Skills que otras herramientas dejaron en el proyecto: `.claude/skills/<nombre>/SKILL.md`\n * y `.github/skills/`.\n *\n * No se reimplementa el parseo de SKILL.md: `../skills.ts` ya sabe leer\n * frontmatter, validar nombre/descripción y bajar por subdirectorios — es\n * exactamente el mismo formato (Agent Skills).\n *\n * `instalarSkillsDescubiertas` es la parte que las hace disponibles DE\n * VERDAD, no solo listadas: enlaza cada una dentro de `.ada/skills`, la\n * carpeta de proyecto que `core/skills.ts` YA recorre sin que se le haya\n * tocado ni una línea. Es la alternativa a pasar `additionalSkillPaths` por\n * `agent-session-services.ts` — que también habría funcionado, pero ese\n * fichero es de upstream y el presupuesto de sincronización ya estaba en\n * 115/115 antes de este cambio (`./scripts/sync-ada.sh --check`). Un symlink\n * en un directorio que Ada ya escanea consigue lo mismo por CERO hunks.\n */\n\nimport { lstatSync, mkdirSync, readlinkSync, symlinkSync, unlinkSync } from \"node:fs\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { CONFIG_DIR_NAME } from \"../../config.ts\";\nimport { loadSkillsFromDir } from \"../skills.ts\";\n\nexport interface SkillDescubierta {\n\t/** De qué herramienta viene. */\n\torigen: string;\n\t/** Ruta al SKILL.md (o al .md suelto). */\n\truta: string;\n\t/** Carpeta que contiene el SKILL.md. */\n\tbaseDir: string;\n\tnombre: string;\n\tdescripcion: string;\n}\n\nexport interface ResultadoDescubrimientoSkills {\n\tskills: SkillDescubierta[];\n\t/** Directorios mirados, existan o no. */\n\tdirectoriosMirados: string[];\n\t/** SKILL.md que existían pero no pasaron el parseo/validación. */\n\terrores: Array<{ ruta: string; motivo: string }>;\n}\n\ninterface FuenteSkills {\n\torigen: string;\n\trelativa: string;\n}\n\nconst FUENTES: FuenteSkills[] = [\n\t{ origen: \"Claude Code\", relativa: \".claude/skills\" },\n\t{ origen: \"GitHub Copilot\", relativa: \".github/skills\" },\n];\n\nexport function descubrirSkills(cwd: string): ResultadoDescubrimientoSkills {\n\tconst skills: SkillDescubierta[] = [];\n\tconst directoriosMirados: string[] = [];\n\tconst errores: Array<{ ruta: string; motivo: string }> = [];\n\n\tfor (const fuente of FUENTES) {\n\t\tdirectoriosMirados.push(fuente.relativa);\n\t\tconst dir = join(cwd, fuente.relativa);\n\t\t// Directorio ausente: \"no hay\", `loadSkillsFromDir` devuelve vacío sin\n\t\t// diagnóstico. Un SKILL.md que existe pero no pasa el parseo SÍ genera uno:\n\t\t// esa es la diferencia entre \"no hay\" y \"no he podido\" que pide la regla 6.\n\t\tconst { skills: encontradas, diagnostics } = loadSkillsFromDir({ dir, source: `descubierta:${fuente.origen}` });\n\n\t\tfor (const skill of encontradas) {\n\t\t\tskills.push({\n\t\t\t\torigen: fuente.origen,\n\t\t\t\truta: skill.filePath,\n\t\t\t\tbaseDir: skill.baseDir,\n\t\t\t\tnombre: skill.name,\n\t\t\t\tdescripcion: skill.description,\n\t\t\t});\n\t\t}\n\t\tfor (const diagnostic of diagnostics) {\n\t\t\terrores.push({ ruta: diagnostic.path ?? dir, motivo: diagnostic.message });\n\t\t}\n\t}\n\n\treturn { skills, directoriosMirados, errores };\n}\n\nexport interface SkillInstalada {\n\tnombre: string;\n\torigen: string;\n\t/** El symlink creado (o ya existente) dentro de `.ada/skills`. */\n\tenlace: string;\n}\n\nfunction slugificar(texto: string): string {\n\treturn texto\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]+/g, \"-\")\n\t\t.replace(/(^-+|-+$)/g, \"\");\n}\n\n/**\n * Deja `enlace` como symlink a `destino`. Devuelve false sin tocar nada si\n * `enlace` ya existe y NO es un symlink nuestro — nunca se borra un fichero\n * real que el usuario pueda tener ahí con el mismo nombre.\n */\nfunction asegurarEnlace(destino: string, enlace: string): boolean {\n\ttry {\n\t\tconst info = lstatSync(enlace);\n\t\tif (!info.isSymbolicLink()) return false;\n\t\tif (resolve(dirname(enlace), readlinkSync(enlace)) === destino) return true; // ya estaba\n\t\tunlinkSync(enlace);\n\t} catch {\n\t\t// no existe todavía: se crea abajo\n\t}\n\ttry {\n\t\tsymlinkSync(destino, enlace, \"dir\");\n\t\treturn true;\n\t} catch {\n\t\t// sistema de ficheros sin symlinks (o sin permiso): se queda sin instalar,\n\t\t// pero sigue apareciendo en `descubrirSkills` — listada, no disponible.\n\t\treturn false;\n\t}\n}\n\n/**\n * Enlaza cada skill descubierta dentro de `.ada/skills` para que la próxima\n * sesión (interactiva, `serve`, `acp`...) la cargue de verdad, sin que nadie\n * tenga que pasar `--skill` a mano.\n *\n * ponytail: no limpia symlinks de skills que dejaron de existir en origen.\n * Un symlink roto no rompe nada — `core/skills.ts` ya lo salta en silencio —\n * pero se queda ahí. Si el descuido empieza a notarse, un `discover --prune`\n * que borre los symlinks propios (prefijo `descubierta-`) que ya no resuelven\n * es la subida natural.\n */\nexport function instalarSkillsDescubiertas(cwd: string): SkillInstalada[] {\n\tconst { skills } = descubrirSkills(cwd);\n\tif (skills.length === 0) return [];\n\n\tconst destinoBase = join(cwd, CONFIG_DIR_NAME, \"skills\");\n\tmkdirSync(destinoBase, { recursive: true });\n\n\tconst instaladas: SkillInstalada[] = [];\n\tfor (const skill of skills) {\n\t\tconst slug = `descubierta-${slugificar(skill.origen)}-${basename(skill.baseDir)}`;\n\t\tconst enlace = join(destinoBase, slug);\n\t\tconst destino = resolve(skill.baseDir);\n\t\tif (asegurarEnlace(destino, enlace)) {\n\t\t\tinstaladas.push({ nombre: skill.nombre, origen: skill.origen, enlace });\n\t\t}\n\t}\n\treturn instaladas;\n}\n"]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presupuesto de razonamiento según la dificultad del turno.
|
|
3
|
+
*
|
|
4
|
+
* El nivel de pensamiento estaba fijo para toda la sesión: quien lo dejaba en
|
|
5
|
+
* `high` pagaba razonamiento extendido para preguntar «¿qué hace este
|
|
6
|
+
* fichero?», y quien lo dejaba en `low` pedía una refactorización completa con
|
|
7
|
+
* el presupuesto de una consulta. Las dos mitades cuestan dinero, una en
|
|
8
|
+
* tokens y la otra en calidad.
|
|
9
|
+
*
|
|
10
|
+
* Este clasificador decide el nivel a partir del texto del turno, SIN llamar
|
|
11
|
+
* al modelo: una llamada extra para decidir cuánto gastar se come el ahorro.
|
|
12
|
+
* Solo mira señales del propio texto (longitud, verbos de acción, ficheros
|
|
13
|
+
* mencionados, trazas de error).
|
|
14
|
+
*
|
|
15
|
+
* Tres estados, no dos, en las dos capas:
|
|
16
|
+
* - `clasificar` devuelve `indeterminada` cuando NO PUEDE clasificar (texto
|
|
17
|
+
* vacío, un comando de barra, o un turno de dos palabras sin ninguna
|
|
18
|
+
* señal como «sigue»). No es «fácil»: es «no lo sé», y quien llama no
|
|
19
|
+
* debe tocar nada.
|
|
20
|
+
* - `decidirPresupuesto` devuelve una acción explícita (`inactivo`,
|
|
21
|
+
* `cedido`, `sin-señal`, `sin-cambio`, `aplicar`) en vez de un nivel
|
|
22
|
+
* opcional, para que «no toco nada porque el usuario mandó» no se lea
|
|
23
|
+
* igual que «no toco nada porque ya está bien».
|
|
24
|
+
*/
|
|
25
|
+
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
26
|
+
export type NivelDificultad = "indeterminada" | "trivial" | "media" | "alta";
|
|
27
|
+
export interface Dificultad {
|
|
28
|
+
nivel: NivelDificultad;
|
|
29
|
+
/** Puntuación acumulada; negativa o cero es trivial. Útil para depurar el corpus. */
|
|
30
|
+
puntos: number;
|
|
31
|
+
/** Señales encontradas, en el orden en que se sumaron. Se enseñan al usuario. */
|
|
32
|
+
señales: string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Clasifica la dificultad de un turno. Función pura: mismo texto, misma salida.
|
|
36
|
+
*
|
|
37
|
+
* Devuelve `indeterminada` cuando no hay nada que clasificar. Un turno vacío,
|
|
38
|
+
* un comando de barra o un «sigue» de dos palabras no son «triviales»: no
|
|
39
|
+
* traen ninguna señal, y bajar el presupuesto por ellos sería decidir con una
|
|
40
|
+
* señal que no existe.
|
|
41
|
+
*/
|
|
42
|
+
export declare function clasificarDificultad(texto: string): Dificultad;
|
|
43
|
+
/**
|
|
44
|
+
* Traduce la dificultad al nivel más cercano de los que el modelo soporta.
|
|
45
|
+
*
|
|
46
|
+
* No todos los modelos tienen los siete niveles; en caso de empate se elige el
|
|
47
|
+
* más barato, porque equivocarse hacia abajo cuesta menos que hacia arriba.
|
|
48
|
+
*
|
|
49
|
+
* El empate se resuelve mirando el ÍNDICE, no el orden de llegada. Quedarse
|
|
50
|
+
* con el primero solo da el más barato si `disponibles` viene ordenado de
|
|
51
|
+
* menor a mayor gasto — cierto hoy porque `getSupportedThinkingLevels` filtra
|
|
52
|
+
* `EXTENDED_THINKING_LEVELS` en ese orden, pero eso es una propiedad del
|
|
53
|
+
* llamante de hoy, no del contrato de esta función. Con `["high", "low"]` y
|
|
54
|
+
* dificultad media (ambos a distancia 1) devolvía `high`: lo caro, justo lo
|
|
55
|
+
* que el comentario prometía no hacer.
|
|
56
|
+
*/
|
|
57
|
+
export declare function nivelParaDificultad(dificultad: Exclude<NivelDificultad, "indeterminada">, disponibles: readonly ThinkingLevel[]): ThinkingLevel | null;
|
|
58
|
+
/** Estado que sobrevive entre turnos de una misma sesión. */
|
|
59
|
+
export interface EstadoPresupuesto {
|
|
60
|
+
/** Nivel efectivo que dejamos puesto la última vez. `null` = aún no hemos tocado nada. */
|
|
61
|
+
nivelPuestoPorNosotros: ThinkingLevel | null;
|
|
62
|
+
/** El usuario mandó a mano; no volvemos a decidir en esta sesión. */
|
|
63
|
+
cedido: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare function estadoInicial(): EstadoPresupuesto;
|
|
66
|
+
export interface EntradaDecision {
|
|
67
|
+
texto: string;
|
|
68
|
+
nivelActual: ThinkingLevel;
|
|
69
|
+
disponibles: readonly ThinkingLevel[];
|
|
70
|
+
estado: EstadoPresupuesto;
|
|
71
|
+
activo: boolean;
|
|
72
|
+
}
|
|
73
|
+
export type DecisionDePresupuesto = {
|
|
74
|
+
accion: "inactivo";
|
|
75
|
+
} | {
|
|
76
|
+
accion: "cedido";
|
|
77
|
+
motivo: "el usuario eligio el nivel a mano";
|
|
78
|
+
} | {
|
|
79
|
+
accion: "sin-señal";
|
|
80
|
+
dificultad: Dificultad;
|
|
81
|
+
} | {
|
|
82
|
+
accion: "sin-cambio";
|
|
83
|
+
dificultad: Dificultad;
|
|
84
|
+
nivel: ThinkingLevel;
|
|
85
|
+
} | {
|
|
86
|
+
accion: "aplicar";
|
|
87
|
+
dificultad: Dificultad;
|
|
88
|
+
nivel: ThinkingLevel;
|
|
89
|
+
anterior: ThinkingLevel;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Decide qué hacer con el presupuesto de este turno.
|
|
93
|
+
*
|
|
94
|
+
* NO es pura: al detectar la cesión marca `entrada.estado.cedido`. La marca es
|
|
95
|
+
* necesaria — si solo dedujéramos la cesión comparando niveles, el usuario que
|
|
96
|
+
* cicla con shift+tab y vuelve a caer en el nivel que dejamos puesto haría que
|
|
97
|
+
* volviésemos a decidir por él. Aquí decía «sin efectos secundarios» y era
|
|
98
|
+
* falso; se corrige el comentario, no el código.
|
|
99
|
+
*
|
|
100
|
+
* La cesión es la puerta del usuario: en cuanto el nivel actual no es el que
|
|
101
|
+
* nosotros dejamos puesto, alguien lo cambió a mano entre turnos y dejamos de
|
|
102
|
+
* decidir para el resto de la sesión. Se detecta comparando nuestro propio
|
|
103
|
+
* estado, sin pedirle a upstream que nos avise de nada.
|
|
104
|
+
*
|
|
105
|
+
* El primer turno lo decidimos siempre. El nivel con el que arranca la sesión
|
|
106
|
+
* es una CONFIGURACIÓN (el default de settings, o el del modelo), no la
|
|
107
|
+
* intención de este turno — y es justo lo que este clasificador viene a
|
|
108
|
+
* sustituir. Lo que respetamos es el cambio explícito, que va acompañado del
|
|
109
|
+
* aviso visible que explica cómo desactivarnos.
|
|
110
|
+
*/
|
|
111
|
+
export declare function decidirPresupuesto(entrada: EntradaDecision): DecisionDePresupuesto;
|
|
112
|
+
/** Texto que ve el usuario. El ajuste NO puede ser silencioso: cambia lo que paga. */
|
|
113
|
+
export declare function mensajeDeDecision(decision: Extract<DecisionDePresupuesto, {
|
|
114
|
+
accion: "aplicar";
|
|
115
|
+
}>): string;
|
|
116
|
+
/** Puerto mínimo con la sesión. Lo justo para no importar `AgentSession` aquí. */
|
|
117
|
+
export interface SesionAjustable {
|
|
118
|
+
nivelActual: ThinkingLevel;
|
|
119
|
+
disponibles: readonly ThinkingLevel[];
|
|
120
|
+
/** Aplica el nivel y devuelve el EFECTIVO (upstream lo recorta al modelo). */
|
|
121
|
+
fijar(nivel: ThinkingLevel): ThinkingLevel;
|
|
122
|
+
avisar(mensaje: string): void;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Punto de entrada desde `agent-session.prompt()`. Decide, aplica y avisa.
|
|
126
|
+
*
|
|
127
|
+
* Devuelve la decisión para que se pueda comprobar desde fuera: una función
|
|
128
|
+
* que solo tiene efectos secundarios es una función que nadie verifica.
|
|
129
|
+
*/
|
|
130
|
+
export declare function ajustarPresupuestoDeRazonamiento(clave: object, texto: string, sesion: SesionAjustable, env?: NodeJS.ProcessEnv): DecisionDePresupuesto;
|
|
131
|
+
/** Solo para pruebas: olvida el estado de una sesión. */
|
|
132
|
+
export declare function olvidarEstado(clave: object): void;
|
|
133
|
+
//# sourceMappingURL=clasificador.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clasificador.d.ts","sourceRoot":"","sources":["../../../src/core/dificultad/clasificador.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAKnE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,uFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,mFAAiF;IACjF,QAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAyDD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAyE9D;AASD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,EACrD,WAAW,EAAE,SAAS,aAAa,EAAE,GACnC,aAAa,GAAG,IAAI,CAiBtB;AAED,8DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IACjC,4FAA0F;IAC1F,sBAAsB,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,uEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAEjD;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC9B;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,GACjE;IAAE,MAAM,EAAE,YAAW,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACtE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC;AAEhG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,CAmBlF;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG,MAAM,CAGzG;AAED,qFAAkF;AAClF,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,aAAa,CAAC;IAC3B,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IACtC,8EAA8E;IAC9E,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAgBD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,qBAAqB,CAiCvB;AAED,0DAAyD;AACzD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEjD","sourcesContent":["/**\n * Presupuesto de razonamiento según la dificultad del turno.\n *\n * El nivel de pensamiento estaba fijo para toda la sesión: quien lo dejaba en\n * `high` pagaba razonamiento extendido para preguntar «¿qué hace este\n * fichero?», y quien lo dejaba en `low` pedía una refactorización completa con\n * el presupuesto de una consulta. Las dos mitades cuestan dinero, una en\n * tokens y la otra en calidad.\n *\n * Este clasificador decide el nivel a partir del texto del turno, SIN llamar\n * al modelo: una llamada extra para decidir cuánto gastar se come el ahorro.\n * Solo mira señales del propio texto (longitud, verbos de acción, ficheros\n * mencionados, trazas de error).\n *\n * Tres estados, no dos, en las dos capas:\n * - `clasificar` devuelve `indeterminada` cuando NO PUEDE clasificar (texto\n * vacío, un comando de barra, o un turno de dos palabras sin ninguna\n * señal como «sigue»). No es «fácil»: es «no lo sé», y quien llama no\n * debe tocar nada.\n * - `decidirPresupuesto` devuelve una acción explícita (`inactivo`,\n * `cedido`, `sin-señal`, `sin-cambio`, `aplicar`) en vez de un nivel\n * opcional, para que «no toco nada porque el usuario mandó» no se lea\n * igual que «no toco nada porque ya está bien».\n */\n\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\n\n/** Orden canónico de menor a mayor gasto (el mismo de `EXTENDED_THINKING_LEVELS`). */\nconst ORDEN: string[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\nexport type NivelDificultad = \"indeterminada\" | \"trivial\" | \"media\" | \"alta\";\n\nexport interface Dificultad {\n\tnivel: NivelDificultad;\n\t/** Puntuación acumulada; negativa o cero es trivial. Útil para depurar el corpus. */\n\tpuntos: number;\n\t/** Señales encontradas, en el orden en que se sumaron. Se enseñan al usuario. */\n\tseñales: string[];\n}\n\n/**\n * Verbos que implican cambiar el mundo (imperativo e infinitivo, y sus\n * equivalentes en inglés porque medio equipo escribe los prompts en inglés).\n * Se comparan sobre el texto normalizado sin acentos.\n *\n * Los troncos van sin la vocal final del tema («arregl», no «arregla») porque\n * la primera persona es una forma corriente en un turno y la que decide el\n * descuento por consulta directa de más abajo. Con «arregla\\w*» el ejemplo que\n * el propio comentario de ese descuento ponía —«cómo arreglo X»— no encontraba\n * ningún verbo, se llevaba el descuento entero y salía trivial: el comentario\n * decía una cosa y el código hacía la contraria.\n *\n * Los verbos corrientes del día a día («crea», «escribe», «haz», «mueve»,\n * «cambia», «quita», «revisa») faltaban por completo, y su ausencia NO era\n * neutra: sin ninguna señal el turno sumaba 0 puntos y 0 se leía como\n * «trivial», así que «crea un endpoint para facturas» bajaba el presupuesto a\n * `low`. El corpus de la primera versión no lo vio porque sus seis turnos\n * duros usaban justo los verbos de esta lista. Se arregla por los dos lados:\n * aquí, añadiéndolos, y abajo, no leyendo la ausencia de señal como facilidad.\n *\n * Estos van en formas ENUMERADAS, no en troncos, porque el tronco corto choca\n * con palabras que aparecen en consultas puras: «hac\\w*» se come el «hace» de\n * «¿qué hace este fichero?», «escrib\\w*» el «escribio» de «quién escribió\n * esto», y «cre\\w*» el «creo que» de cualquier frase dubitativa. Un falso\n * verbo ahí no solo sube el nivel: además anula el descuento por consulta\n * directa, que exige cero verbos.\n *\n * Techo conocido: sigue siendo una lista de troncos y formas a mano. Las\n * irregulares que no están aquí («rehago», «deshaz») se escapan. Si el corpus\n * de tráfico real lo pide, esto se cambia por un lematizador, no por más\n * troncos.\n */\nconst VERBOS_DE_ACCION =\n\t/\\b(refactoriz\\w*|reescrib\\w+|reimplement\\w+|implement\\w+|migra\\w*|arregl\\w*|corrig\\w+|corrij\\w+|correg\\w+|repar[aeo]\\w*|depur[aeo]\\w*|optimiz\\w*|integr[aeo]\\w*|disen\\w*|anade|anadir|agreg\\w*|elimin\\w*|borr[aeo]\\w*|renombr\\w*|actualiz\\w*|extra[ei]\\w*|divid\\w*|unific\\w*|automatiz\\w*|crea|crear|creame|escribe|escribir|escribeme|haz|hazme|hacer|genera|generar|construye|construir|soluciona|solucionar|resuelve|mueve|mover|traslada|trasladar|cambia|cambiar|convierte|convertir|separa|separar|quita|quitar|revisa|revisar|mejora|mejorar|simplifica|simplificar|documenta|documentar|valida|validar|reemplaza|reemplazar|sustituye|sustituir|refactor|rewrite|reimplement|implement|migrate|fix|debug|optimi[sz]e|integrate|redesign|refactoring|create|write|generate|solve|move|convert|split|replace|simplify|validate|review)\\b/g;\n\n/** Arranques de consulta pura: preguntan por algo que ya existe, no piden cambiarlo. */\nconst ARRANQUE_DE_CONSULTA =\n\t/^(que|cual|cuales|donde|como|quien|cuando|cuanto|para que|por que|what|which|where|how|who|when|why)\\b/;\n\n/** Trazas y mensajes de error pegados: casi siempre implican investigar. */\nconst SEÑAL_DE_ERROR =\n\t/(\\btraceback\\b|\\b\\w*error\\b\\s*:|\\bexception\\b|\\bpanic\\b|\\bsegfault\\b|\\bstack trace\\b|^\\s+at\\s+\\S+|\\bexit code\\s*[:=]?\\s*\\d+|\\bENOENT\\b|\\bECONNREFUSED\\b|\\bfailed to\\b|\\bassertionerror\\b)/im;\n\n/** Rutas y nombres de fichero con extensión conocida. */\nconst FICHERO =\n\t/\\b[\\w.@/-]+\\.(ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|rb|php|c|h|cpp|json|yaml|yml|toml|md|sh|sql|css|html)\\b/g;\n\n/** Quita acentos y baja a minúsculas para que las expresiones no lleven cada variante. */\nfunction normalizar(texto: string): string {\n\treturn texto\n\t\t.normalize(\"NFD\")\n\t\t.replace(/[\\u0300-\\u036f]/g, \"\")\n\t\t.toLowerCase();\n}\n\n/**\n * Clasifica la dificultad de un turno. Función pura: mismo texto, misma salida.\n *\n * Devuelve `indeterminada` cuando no hay nada que clasificar. Un turno vacío,\n * un comando de barra o un «sigue» de dos palabras no son «triviales»: no\n * traen ninguna señal, y bajar el presupuesto por ellos sería decidir con una\n * señal que no existe.\n */\nexport function clasificarDificultad(texto: string): Dificultad {\n\tconst crudo = texto.trim();\n\tif (crudo.length === 0 || crudo.startsWith(\"/\")) {\n\t\treturn { nivel: \"indeterminada\", puntos: 0, señales: [] };\n\t}\n\n\tconst t = normalizar(crudo);\n\tconst señales: string[] = [];\n\tlet puntos = 0;\n\n\tconst verbos = t.match(VERBOS_DE_ACCION) ?? [];\n\tif (verbos.length > 0) {\n\t\tconst suma = Math.min(verbos.length * 2, 4);\n\t\tpuntos += suma;\n\t\tseñales.push(verbos.length === 1 ? \"1 verbo de accion\" : `${verbos.length} verbos de accion`);\n\t}\n\n\tconst ficheros = new Set(crudo.match(FICHERO) ?? []);\n\tif (ficheros.size > 0) {\n\t\tpuntos += Math.min(ficheros.size, 3);\n\t\tseñales.push(ficheros.size === 1 ? \"1 fichero\" : `${ficheros.size} ficheros`);\n\t}\n\n\tif (SEÑAL_DE_ERROR.test(crudo)) {\n\t\tpuntos += 3;\n\t\tseñales.push(\"traza de error\");\n\t}\n\n\tif (crudo.length > 400) {\n\t\tpuntos += 2;\n\t\tseñales.push(\"turno largo\");\n\t} else if (crudo.length > 160) {\n\t\tpuntos += 1;\n\t\tseñales.push(\"turno medio\");\n\t}\n\n\t// Una lista de puntos o varias líneas es casi siempre varias tareas.\n\tconst lineas = crudo.split(\"\\n\").filter((l) => l.trim().length > 0);\n\tif (lineas.length >= 3 || /^\\s*(?:[-*]|\\d+[.)])\\s+/m.test(crudo)) {\n\t\tpuntos += 1;\n\t\tseñales.push(\"varias tareas\");\n\t}\n\n\t// Una consulta pura sin ningún verbo de acción se abarata a propósito.\n\t// Con verbo de acción no se descuenta: «cómo arreglo X» es trabajo, y por\n\t// eso los troncos de arriba tienen que cubrir la primera persona. Este\n\t// comentario decía ya esto mientras «cómo arreglo X» salía trivial.\n\tif (ARRANQUE_DE_CONSULTA.test(t.replace(/^[¿¡\\s]+/, \"\")) && verbos.length === 0) {\n\t\tpuntos -= 2;\n\t\tseñales.push(\"consulta directa\");\n\t}\n\n\t// CERO señales no es «fácil»: es «no lo sé». Sin esta puerta, `trivial` era\n\t// el valor por defecto de todo lo que la lista de verbos no reconocía, y la\n\t// lista nunca va a reconocerlo todo. Medido: de catorce turnos de trabajo\n\t// reales escritos con verbos corrientes («crea un endpoint», «mueve la\n\t// lógica de auth a su propio paquete», «revisa la seguridad del endpoint de\n\t// pagos»), los catorce salían `trivial` y se llevaban el presupuesto más\n\t// barato — exactamente el daño que este módulo dice venir a evitar. Lo\n\t// mismo con «sigue» detrás de una refactorización: el agente continuaba la\n\t// tarea dura con el presupuesto de una consulta.\n\t//\n\t// `trivial` pasa a exigir evidencia POSITIVA de que el turno es una\n\t// consulta (el descuento de arriba, o cualquier otra señal que deje los\n\t// puntos por debajo de cero). Sin ninguna señal no tocamos el presupuesto:\n\t// quedarse en el nivel de la sesión es el error barato; bajar a `low` una\n\t// tarea de refactorización es el caro.\n\tif (señales.length === 0) {\n\t\treturn { nivel: \"indeterminada\", puntos, señales };\n\t}\n\n\tconst nivel: NivelDificultad = puntos >= 4 ? \"alta\" : puntos >= 1 ? \"media\" : \"trivial\";\n\treturn { nivel, puntos, señales };\n}\n\n/** Nivel canónico que pediríamos para cada dificultad si el modelo los tuviera todos. */\nconst NIVEL_IDEAL: Record<Exclude<NivelDificultad, \"indeterminada\">, ThinkingLevel> = {\n\ttrivial: \"low\",\n\tmedia: \"medium\",\n\talta: \"high\",\n};\n\n/**\n * Traduce la dificultad al nivel más cercano de los que el modelo soporta.\n *\n * No todos los modelos tienen los siete niveles; en caso de empate se elige el\n * más barato, porque equivocarse hacia abajo cuesta menos que hacia arriba.\n *\n * El empate se resuelve mirando el ÍNDICE, no el orden de llegada. Quedarse\n * con el primero solo da el más barato si `disponibles` viene ordenado de\n * menor a mayor gasto — cierto hoy porque `getSupportedThinkingLevels` filtra\n * `EXTENDED_THINKING_LEVELS` en ese orden, pero eso es una propiedad del\n * llamante de hoy, no del contrato de esta función. Con `[\"high\", \"low\"]` y\n * dificultad media (ambos a distancia 1) devolvía `high`: lo caro, justo lo\n * que el comentario prometía no hacer.\n */\nexport function nivelParaDificultad(\n\tdificultad: Exclude<NivelDificultad, \"indeterminada\">,\n\tdisponibles: readonly ThinkingLevel[],\n): ThinkingLevel | null {\n\tif (disponibles.length === 0) return null;\n\tconst objetivo = ORDEN.indexOf(NIVEL_IDEAL[dificultad]);\n\tlet mejor: ThinkingLevel | null = null;\n\tlet mejorDistancia = Number.POSITIVE_INFINITY;\n\tlet mejorIndice = Number.POSITIVE_INFINITY;\n\tfor (const candidato of disponibles) {\n\t\tconst i = ORDEN.indexOf(candidato);\n\t\tif (i < 0) continue;\n\t\tconst distancia = Math.abs(i - objetivo);\n\t\tif (distancia < mejorDistancia || (distancia === mejorDistancia && i < mejorIndice)) {\n\t\t\tmejor = candidato;\n\t\t\tmejorDistancia = distancia;\n\t\t\tmejorIndice = i;\n\t\t}\n\t}\n\treturn mejor;\n}\n\n/** Estado que sobrevive entre turnos de una misma sesión. */\nexport interface EstadoPresupuesto {\n\t/** Nivel efectivo que dejamos puesto la última vez. `null` = aún no hemos tocado nada. */\n\tnivelPuestoPorNosotros: ThinkingLevel | null;\n\t/** El usuario mandó a mano; no volvemos a decidir en esta sesión. */\n\tcedido: boolean;\n}\n\nexport function estadoInicial(): EstadoPresupuesto {\n\treturn { nivelPuestoPorNosotros: null, cedido: false };\n}\n\nexport interface EntradaDecision {\n\ttexto: string;\n\tnivelActual: ThinkingLevel;\n\tdisponibles: readonly ThinkingLevel[];\n\testado: EstadoPresupuesto;\n\tactivo: boolean;\n}\n\nexport type DecisionDePresupuesto =\n\t| { accion: \"inactivo\" }\n\t| { accion: \"cedido\"; motivo: \"el usuario eligio el nivel a mano\" }\n\t| { accion: \"sin-señal\"; dificultad: Dificultad }\n\t| { accion: \"sin-cambio\"; dificultad: Dificultad; nivel: ThinkingLevel }\n\t| { accion: \"aplicar\"; dificultad: Dificultad; nivel: ThinkingLevel; anterior: ThinkingLevel };\n\n/**\n * Decide qué hacer con el presupuesto de este turno.\n *\n * NO es pura: al detectar la cesión marca `entrada.estado.cedido`. La marca es\n * necesaria — si solo dedujéramos la cesión comparando niveles, el usuario que\n * cicla con shift+tab y vuelve a caer en el nivel que dejamos puesto haría que\n * volviésemos a decidir por él. Aquí decía «sin efectos secundarios» y era\n * falso; se corrige el comentario, no el código.\n *\n * La cesión es la puerta del usuario: en cuanto el nivel actual no es el que\n * nosotros dejamos puesto, alguien lo cambió a mano entre turnos y dejamos de\n * decidir para el resto de la sesión. Se detecta comparando nuestro propio\n * estado, sin pedirle a upstream que nos avise de nada.\n *\n * El primer turno lo decidimos siempre. El nivel con el que arranca la sesión\n * es una CONFIGURACIÓN (el default de settings, o el del modelo), no la\n * intención de este turno — y es justo lo que este clasificador viene a\n * sustituir. Lo que respetamos es el cambio explícito, que va acompañado del\n * aviso visible que explica cómo desactivarnos.\n */\nexport function decidirPresupuesto(entrada: EntradaDecision): DecisionDePresupuesto {\n\tif (!entrada.activo) return { accion: \"inactivo\" };\n\n\tconst puesto = entrada.estado.nivelPuestoPorNosotros;\n\tif (entrada.estado.cedido || (puesto !== null && entrada.nivelActual !== puesto)) {\n\t\tentrada.estado.cedido = true;\n\t\treturn { accion: \"cedido\", motivo: \"el usuario eligio el nivel a mano\" };\n\t}\n\n\tconst dificultad = clasificarDificultad(entrada.texto);\n\tif (dificultad.nivel === \"indeterminada\") {\n\t\treturn { accion: \"sin-señal\", dificultad };\n\t}\n\n\tconst nivel = nivelParaDificultad(dificultad.nivel, entrada.disponibles);\n\tif (nivel === null || nivel === entrada.nivelActual) {\n\t\treturn { accion: \"sin-cambio\", dificultad, nivel: nivel ?? entrada.nivelActual };\n\t}\n\treturn { accion: \"aplicar\", dificultad, nivel, anterior: entrada.nivelActual };\n}\n\n/** Texto que ve el usuario. El ajuste NO puede ser silencioso: cambia lo que paga. */\nexport function mensajeDeDecision(decision: Extract<DecisionDePresupuesto, { accion: \"aplicar\" }>): string {\n\tconst señales = decision.dificultad.señales.length > 0 ? decision.dificultad.señales.join(\", \") : \"sin señales\";\n\treturn `Razonamiento automatico: ${decision.anterior} -> ${decision.nivel} (dificultad ${decision.dificultad.nivel}: ${señales}). Cambialo a mano para desactivarlo en esta sesion.`;\n}\n\n/** Puerto mínimo con la sesión. Lo justo para no importar `AgentSession` aquí. */\nexport interface SesionAjustable {\n\tnivelActual: ThinkingLevel;\n\tdisponibles: readonly ThinkingLevel[];\n\t/** Aplica el nivel y devuelve el EFECTIVO (upstream lo recorta al modelo). */\n\tfijar(nivel: ThinkingLevel): ThinkingLevel;\n\tavisar(mensaje: string): void;\n}\n\n/**\n * El estado vive aquí, indexado por la sesión, y no como campo de\n * `AgentSession`: declarar un campo privado en esa clase sería un hunk más\n * contra el presupuesto de fork, que está agotado (116/116). La sesión es la\n * clave; cuando se recolecta, su estado se va con ella.\n */\nconst estados = new WeakMap<object, EstadoPresupuesto>();\n\n/** El interruptor de escape, sin tocar `settings-manager.ts` (otro hunk de upstream). */\nfunction estaActivo(env: NodeJS.ProcessEnv): boolean {\n\tconst v = env.ADA_DIFICULTAD_AUTO;\n\treturn v !== \"0\" && v !== \"false\" && v !== \"no\";\n}\n\n/**\n * Punto de entrada desde `agent-session.prompt()`. Decide, aplica y avisa.\n *\n * Devuelve la decisión para que se pueda comprobar desde fuera: una función\n * que solo tiene efectos secundarios es una función que nadie verifica.\n */\nexport function ajustarPresupuestoDeRazonamiento(\n\tclave: object,\n\ttexto: string,\n\tsesion: SesionAjustable,\n\tenv: NodeJS.ProcessEnv = process.env,\n): DecisionDePresupuesto {\n\tlet estado = estados.get(clave);\n\tif (!estado) {\n\t\testado = estadoInicial();\n\t\testados.set(clave, estado);\n\t}\n\n\tconst decision = decidirPresupuesto({\n\t\ttexto,\n\t\tnivelActual: sesion.nivelActual,\n\t\tdisponibles: sesion.disponibles,\n\t\testado,\n\t\tactivo: estaActivo(env),\n\t});\n\n\tif (decision.accion === \"aplicar\") {\n\t\t// Guardamos el nivel EFECTIVO, no el pedido: upstream lo recorta a las\n\t\t// capacidades del modelo y, si guardáramos el pedido, el turno siguiente\n\t\t// vería una diferencia y cedería creyendo que fue el usuario.\n\t\testado.nivelPuestoPorNosotros = sesion.fijar(decision.nivel);\n\t\tsesion.avisar(mensajeDeDecision(decision));\n\t} else if (decision.accion === \"sin-cambio\" || decision.accion === \"sin-señal\") {\n\t\t// Un turno en el que NO cambiamos nada también hay que anotarlo: lo que\n\t\t// queda puesto es el nivel actual, y es contra ese valor contra el que\n\t\t// se detecta al usuario. Anotando solo al cambiar,\n\t\t// `nivelPuestoPorNosotros` se quedaba en null mientras el objetivo\n\t\t// coincidiera con el nivel de arranque, y la puerta de cesión no se\n\t\t// armaba nunca: sesión en `medium`, turno «arregla esto» (media ->\n\t\t// medium, sin-cambio), el usuario sube a `high` a mano y el turno\n\t\t// siguiente se lo bajaba a `low` sin ceder ni avisar de nada.\n\t\testado.nivelPuestoPorNosotros = sesion.nivelActual;\n\t}\n\treturn decision;\n}\n\n/** Solo para pruebas: olvida el estado de una sesión. */\nexport function olvidarEstado(clave: object): void {\n\testados.delete(clave);\n}\n"]}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presupuesto de razonamiento según la dificultad del turno.
|
|
3
|
+
*
|
|
4
|
+
* El nivel de pensamiento estaba fijo para toda la sesión: quien lo dejaba en
|
|
5
|
+
* `high` pagaba razonamiento extendido para preguntar «¿qué hace este
|
|
6
|
+
* fichero?», y quien lo dejaba en `low` pedía una refactorización completa con
|
|
7
|
+
* el presupuesto de una consulta. Las dos mitades cuestan dinero, una en
|
|
8
|
+
* tokens y la otra en calidad.
|
|
9
|
+
*
|
|
10
|
+
* Este clasificador decide el nivel a partir del texto del turno, SIN llamar
|
|
11
|
+
* al modelo: una llamada extra para decidir cuánto gastar se come el ahorro.
|
|
12
|
+
* Solo mira señales del propio texto (longitud, verbos de acción, ficheros
|
|
13
|
+
* mencionados, trazas de error).
|
|
14
|
+
*
|
|
15
|
+
* Tres estados, no dos, en las dos capas:
|
|
16
|
+
* - `clasificar` devuelve `indeterminada` cuando NO PUEDE clasificar (texto
|
|
17
|
+
* vacío, un comando de barra, o un turno de dos palabras sin ninguna
|
|
18
|
+
* señal como «sigue»). No es «fácil»: es «no lo sé», y quien llama no
|
|
19
|
+
* debe tocar nada.
|
|
20
|
+
* - `decidirPresupuesto` devuelve una acción explícita (`inactivo`,
|
|
21
|
+
* `cedido`, `sin-señal`, `sin-cambio`, `aplicar`) en vez de un nivel
|
|
22
|
+
* opcional, para que «no toco nada porque el usuario mandó» no se lea
|
|
23
|
+
* igual que «no toco nada porque ya está bien».
|
|
24
|
+
*/
|
|
25
|
+
/** Orden canónico de menor a mayor gasto (el mismo de `EXTENDED_THINKING_LEVELS`). */
|
|
26
|
+
const ORDEN = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
27
|
+
/**
|
|
28
|
+
* Verbos que implican cambiar el mundo (imperativo e infinitivo, y sus
|
|
29
|
+
* equivalentes en inglés porque medio equipo escribe los prompts en inglés).
|
|
30
|
+
* Se comparan sobre el texto normalizado sin acentos.
|
|
31
|
+
*
|
|
32
|
+
* Los troncos van sin la vocal final del tema («arregl», no «arregla») porque
|
|
33
|
+
* la primera persona es una forma corriente en un turno y la que decide el
|
|
34
|
+
* descuento por consulta directa de más abajo. Con «arregla\w*» el ejemplo que
|
|
35
|
+
* el propio comentario de ese descuento ponía —«cómo arreglo X»— no encontraba
|
|
36
|
+
* ningún verbo, se llevaba el descuento entero y salía trivial: el comentario
|
|
37
|
+
* decía una cosa y el código hacía la contraria.
|
|
38
|
+
*
|
|
39
|
+
* Los verbos corrientes del día a día («crea», «escribe», «haz», «mueve»,
|
|
40
|
+
* «cambia», «quita», «revisa») faltaban por completo, y su ausencia NO era
|
|
41
|
+
* neutra: sin ninguna señal el turno sumaba 0 puntos y 0 se leía como
|
|
42
|
+
* «trivial», así que «crea un endpoint para facturas» bajaba el presupuesto a
|
|
43
|
+
* `low`. El corpus de la primera versión no lo vio porque sus seis turnos
|
|
44
|
+
* duros usaban justo los verbos de esta lista. Se arregla por los dos lados:
|
|
45
|
+
* aquí, añadiéndolos, y abajo, no leyendo la ausencia de señal como facilidad.
|
|
46
|
+
*
|
|
47
|
+
* Estos van en formas ENUMERADAS, no en troncos, porque el tronco corto choca
|
|
48
|
+
* con palabras que aparecen en consultas puras: «hac\w*» se come el «hace» de
|
|
49
|
+
* «¿qué hace este fichero?», «escrib\w*» el «escribio» de «quién escribió
|
|
50
|
+
* esto», y «cre\w*» el «creo que» de cualquier frase dubitativa. Un falso
|
|
51
|
+
* verbo ahí no solo sube el nivel: además anula el descuento por consulta
|
|
52
|
+
* directa, que exige cero verbos.
|
|
53
|
+
*
|
|
54
|
+
* Techo conocido: sigue siendo una lista de troncos y formas a mano. Las
|
|
55
|
+
* irregulares que no están aquí («rehago», «deshaz») se escapan. Si el corpus
|
|
56
|
+
* de tráfico real lo pide, esto se cambia por un lematizador, no por más
|
|
57
|
+
* troncos.
|
|
58
|
+
*/
|
|
59
|
+
const VERBOS_DE_ACCION = /\b(refactoriz\w*|reescrib\w+|reimplement\w+|implement\w+|migra\w*|arregl\w*|corrig\w+|corrij\w+|correg\w+|repar[aeo]\w*|depur[aeo]\w*|optimiz\w*|integr[aeo]\w*|disen\w*|anade|anadir|agreg\w*|elimin\w*|borr[aeo]\w*|renombr\w*|actualiz\w*|extra[ei]\w*|divid\w*|unific\w*|automatiz\w*|crea|crear|creame|escribe|escribir|escribeme|haz|hazme|hacer|genera|generar|construye|construir|soluciona|solucionar|resuelve|mueve|mover|traslada|trasladar|cambia|cambiar|convierte|convertir|separa|separar|quita|quitar|revisa|revisar|mejora|mejorar|simplifica|simplificar|documenta|documentar|valida|validar|reemplaza|reemplazar|sustituye|sustituir|refactor|rewrite|reimplement|implement|migrate|fix|debug|optimi[sz]e|integrate|redesign|refactoring|create|write|generate|solve|move|convert|split|replace|simplify|validate|review)\b/g;
|
|
60
|
+
/** Arranques de consulta pura: preguntan por algo que ya existe, no piden cambiarlo. */
|
|
61
|
+
const ARRANQUE_DE_CONSULTA = /^(que|cual|cuales|donde|como|quien|cuando|cuanto|para que|por que|what|which|where|how|who|when|why)\b/;
|
|
62
|
+
/** Trazas y mensajes de error pegados: casi siempre implican investigar. */
|
|
63
|
+
const SEÑAL_DE_ERROR = /(\btraceback\b|\b\w*error\b\s*:|\bexception\b|\bpanic\b|\bsegfault\b|\bstack trace\b|^\s+at\s+\S+|\bexit code\s*[:=]?\s*\d+|\bENOENT\b|\bECONNREFUSED\b|\bfailed to\b|\bassertionerror\b)/im;
|
|
64
|
+
/** Rutas y nombres de fichero con extensión conocida. */
|
|
65
|
+
const FICHERO = /\b[\w.@/-]+\.(ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|rb|php|c|h|cpp|json|yaml|yml|toml|md|sh|sql|css|html)\b/g;
|
|
66
|
+
/** Quita acentos y baja a minúsculas para que las expresiones no lleven cada variante. */
|
|
67
|
+
function normalizar(texto) {
|
|
68
|
+
return texto
|
|
69
|
+
.normalize("NFD")
|
|
70
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
71
|
+
.toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Clasifica la dificultad de un turno. Función pura: mismo texto, misma salida.
|
|
75
|
+
*
|
|
76
|
+
* Devuelve `indeterminada` cuando no hay nada que clasificar. Un turno vacío,
|
|
77
|
+
* un comando de barra o un «sigue» de dos palabras no son «triviales»: no
|
|
78
|
+
* traen ninguna señal, y bajar el presupuesto por ellos sería decidir con una
|
|
79
|
+
* señal que no existe.
|
|
80
|
+
*/
|
|
81
|
+
export function clasificarDificultad(texto) {
|
|
82
|
+
const crudo = texto.trim();
|
|
83
|
+
if (crudo.length === 0 || crudo.startsWith("/")) {
|
|
84
|
+
return { nivel: "indeterminada", puntos: 0, señales: [] };
|
|
85
|
+
}
|
|
86
|
+
const t = normalizar(crudo);
|
|
87
|
+
const señales = [];
|
|
88
|
+
let puntos = 0;
|
|
89
|
+
const verbos = t.match(VERBOS_DE_ACCION) ?? [];
|
|
90
|
+
if (verbos.length > 0) {
|
|
91
|
+
const suma = Math.min(verbos.length * 2, 4);
|
|
92
|
+
puntos += suma;
|
|
93
|
+
señales.push(verbos.length === 1 ? "1 verbo de accion" : `${verbos.length} verbos de accion`);
|
|
94
|
+
}
|
|
95
|
+
const ficheros = new Set(crudo.match(FICHERO) ?? []);
|
|
96
|
+
if (ficheros.size > 0) {
|
|
97
|
+
puntos += Math.min(ficheros.size, 3);
|
|
98
|
+
señales.push(ficheros.size === 1 ? "1 fichero" : `${ficheros.size} ficheros`);
|
|
99
|
+
}
|
|
100
|
+
if (SEÑAL_DE_ERROR.test(crudo)) {
|
|
101
|
+
puntos += 3;
|
|
102
|
+
señales.push("traza de error");
|
|
103
|
+
}
|
|
104
|
+
if (crudo.length > 400) {
|
|
105
|
+
puntos += 2;
|
|
106
|
+
señales.push("turno largo");
|
|
107
|
+
}
|
|
108
|
+
else if (crudo.length > 160) {
|
|
109
|
+
puntos += 1;
|
|
110
|
+
señales.push("turno medio");
|
|
111
|
+
}
|
|
112
|
+
// Una lista de puntos o varias líneas es casi siempre varias tareas.
|
|
113
|
+
const lineas = crudo.split("\n").filter((l) => l.trim().length > 0);
|
|
114
|
+
if (lineas.length >= 3 || /^\s*(?:[-*]|\d+[.)])\s+/m.test(crudo)) {
|
|
115
|
+
puntos += 1;
|
|
116
|
+
señales.push("varias tareas");
|
|
117
|
+
}
|
|
118
|
+
// Una consulta pura sin ningún verbo de acción se abarata a propósito.
|
|
119
|
+
// Con verbo de acción no se descuenta: «cómo arreglo X» es trabajo, y por
|
|
120
|
+
// eso los troncos de arriba tienen que cubrir la primera persona. Este
|
|
121
|
+
// comentario decía ya esto mientras «cómo arreglo X» salía trivial.
|
|
122
|
+
if (ARRANQUE_DE_CONSULTA.test(t.replace(/^[¿¡\s]+/, "")) && verbos.length === 0) {
|
|
123
|
+
puntos -= 2;
|
|
124
|
+
señales.push("consulta directa");
|
|
125
|
+
}
|
|
126
|
+
// CERO señales no es «fácil»: es «no lo sé». Sin esta puerta, `trivial` era
|
|
127
|
+
// el valor por defecto de todo lo que la lista de verbos no reconocía, y la
|
|
128
|
+
// lista nunca va a reconocerlo todo. Medido: de catorce turnos de trabajo
|
|
129
|
+
// reales escritos con verbos corrientes («crea un endpoint», «mueve la
|
|
130
|
+
// lógica de auth a su propio paquete», «revisa la seguridad del endpoint de
|
|
131
|
+
// pagos»), los catorce salían `trivial` y se llevaban el presupuesto más
|
|
132
|
+
// barato — exactamente el daño que este módulo dice venir a evitar. Lo
|
|
133
|
+
// mismo con «sigue» detrás de una refactorización: el agente continuaba la
|
|
134
|
+
// tarea dura con el presupuesto de una consulta.
|
|
135
|
+
//
|
|
136
|
+
// `trivial` pasa a exigir evidencia POSITIVA de que el turno es una
|
|
137
|
+
// consulta (el descuento de arriba, o cualquier otra señal que deje los
|
|
138
|
+
// puntos por debajo de cero). Sin ninguna señal no tocamos el presupuesto:
|
|
139
|
+
// quedarse en el nivel de la sesión es el error barato; bajar a `low` una
|
|
140
|
+
// tarea de refactorización es el caro.
|
|
141
|
+
if (señales.length === 0) {
|
|
142
|
+
return { nivel: "indeterminada", puntos, señales };
|
|
143
|
+
}
|
|
144
|
+
const nivel = puntos >= 4 ? "alta" : puntos >= 1 ? "media" : "trivial";
|
|
145
|
+
return { nivel, puntos, señales };
|
|
146
|
+
}
|
|
147
|
+
/** Nivel canónico que pediríamos para cada dificultad si el modelo los tuviera todos. */
|
|
148
|
+
const NIVEL_IDEAL = {
|
|
149
|
+
trivial: "low",
|
|
150
|
+
media: "medium",
|
|
151
|
+
alta: "high",
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Traduce la dificultad al nivel más cercano de los que el modelo soporta.
|
|
155
|
+
*
|
|
156
|
+
* No todos los modelos tienen los siete niveles; en caso de empate se elige el
|
|
157
|
+
* más barato, porque equivocarse hacia abajo cuesta menos que hacia arriba.
|
|
158
|
+
*
|
|
159
|
+
* El empate se resuelve mirando el ÍNDICE, no el orden de llegada. Quedarse
|
|
160
|
+
* con el primero solo da el más barato si `disponibles` viene ordenado de
|
|
161
|
+
* menor a mayor gasto — cierto hoy porque `getSupportedThinkingLevels` filtra
|
|
162
|
+
* `EXTENDED_THINKING_LEVELS` en ese orden, pero eso es una propiedad del
|
|
163
|
+
* llamante de hoy, no del contrato de esta función. Con `["high", "low"]` y
|
|
164
|
+
* dificultad media (ambos a distancia 1) devolvía `high`: lo caro, justo lo
|
|
165
|
+
* que el comentario prometía no hacer.
|
|
166
|
+
*/
|
|
167
|
+
export function nivelParaDificultad(dificultad, disponibles) {
|
|
168
|
+
if (disponibles.length === 0)
|
|
169
|
+
return null;
|
|
170
|
+
const objetivo = ORDEN.indexOf(NIVEL_IDEAL[dificultad]);
|
|
171
|
+
let mejor = null;
|
|
172
|
+
let mejorDistancia = Number.POSITIVE_INFINITY;
|
|
173
|
+
let mejorIndice = Number.POSITIVE_INFINITY;
|
|
174
|
+
for (const candidato of disponibles) {
|
|
175
|
+
const i = ORDEN.indexOf(candidato);
|
|
176
|
+
if (i < 0)
|
|
177
|
+
continue;
|
|
178
|
+
const distancia = Math.abs(i - objetivo);
|
|
179
|
+
if (distancia < mejorDistancia || (distancia === mejorDistancia && i < mejorIndice)) {
|
|
180
|
+
mejor = candidato;
|
|
181
|
+
mejorDistancia = distancia;
|
|
182
|
+
mejorIndice = i;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return mejor;
|
|
186
|
+
}
|
|
187
|
+
export function estadoInicial() {
|
|
188
|
+
return { nivelPuestoPorNosotros: null, cedido: false };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Decide qué hacer con el presupuesto de este turno.
|
|
192
|
+
*
|
|
193
|
+
* NO es pura: al detectar la cesión marca `entrada.estado.cedido`. La marca es
|
|
194
|
+
* necesaria — si solo dedujéramos la cesión comparando niveles, el usuario que
|
|
195
|
+
* cicla con shift+tab y vuelve a caer en el nivel que dejamos puesto haría que
|
|
196
|
+
* volviésemos a decidir por él. Aquí decía «sin efectos secundarios» y era
|
|
197
|
+
* falso; se corrige el comentario, no el código.
|
|
198
|
+
*
|
|
199
|
+
* La cesión es la puerta del usuario: en cuanto el nivel actual no es el que
|
|
200
|
+
* nosotros dejamos puesto, alguien lo cambió a mano entre turnos y dejamos de
|
|
201
|
+
* decidir para el resto de la sesión. Se detecta comparando nuestro propio
|
|
202
|
+
* estado, sin pedirle a upstream que nos avise de nada.
|
|
203
|
+
*
|
|
204
|
+
* El primer turno lo decidimos siempre. El nivel con el que arranca la sesión
|
|
205
|
+
* es una CONFIGURACIÓN (el default de settings, o el del modelo), no la
|
|
206
|
+
* intención de este turno — y es justo lo que este clasificador viene a
|
|
207
|
+
* sustituir. Lo que respetamos es el cambio explícito, que va acompañado del
|
|
208
|
+
* aviso visible que explica cómo desactivarnos.
|
|
209
|
+
*/
|
|
210
|
+
export function decidirPresupuesto(entrada) {
|
|
211
|
+
if (!entrada.activo)
|
|
212
|
+
return { accion: "inactivo" };
|
|
213
|
+
const puesto = entrada.estado.nivelPuestoPorNosotros;
|
|
214
|
+
if (entrada.estado.cedido || (puesto !== null && entrada.nivelActual !== puesto)) {
|
|
215
|
+
entrada.estado.cedido = true;
|
|
216
|
+
return { accion: "cedido", motivo: "el usuario eligio el nivel a mano" };
|
|
217
|
+
}
|
|
218
|
+
const dificultad = clasificarDificultad(entrada.texto);
|
|
219
|
+
if (dificultad.nivel === "indeterminada") {
|
|
220
|
+
return { accion: "sin-señal", dificultad };
|
|
221
|
+
}
|
|
222
|
+
const nivel = nivelParaDificultad(dificultad.nivel, entrada.disponibles);
|
|
223
|
+
if (nivel === null || nivel === entrada.nivelActual) {
|
|
224
|
+
return { accion: "sin-cambio", dificultad, nivel: nivel ?? entrada.nivelActual };
|
|
225
|
+
}
|
|
226
|
+
return { accion: "aplicar", dificultad, nivel, anterior: entrada.nivelActual };
|
|
227
|
+
}
|
|
228
|
+
/** Texto que ve el usuario. El ajuste NO puede ser silencioso: cambia lo que paga. */
|
|
229
|
+
export function mensajeDeDecision(decision) {
|
|
230
|
+
const señales = decision.dificultad.señales.length > 0 ? decision.dificultad.señales.join(", ") : "sin señales";
|
|
231
|
+
return `Razonamiento automatico: ${decision.anterior} -> ${decision.nivel} (dificultad ${decision.dificultad.nivel}: ${señales}). Cambialo a mano para desactivarlo en esta sesion.`;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* El estado vive aquí, indexado por la sesión, y no como campo de
|
|
235
|
+
* `AgentSession`: declarar un campo privado en esa clase sería un hunk más
|
|
236
|
+
* contra el presupuesto de fork, que está agotado (116/116). La sesión es la
|
|
237
|
+
* clave; cuando se recolecta, su estado se va con ella.
|
|
238
|
+
*/
|
|
239
|
+
const estados = new WeakMap();
|
|
240
|
+
/** El interruptor de escape, sin tocar `settings-manager.ts` (otro hunk de upstream). */
|
|
241
|
+
function estaActivo(env) {
|
|
242
|
+
const v = env.ADA_DIFICULTAD_AUTO;
|
|
243
|
+
return v !== "0" && v !== "false" && v !== "no";
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Punto de entrada desde `agent-session.prompt()`. Decide, aplica y avisa.
|
|
247
|
+
*
|
|
248
|
+
* Devuelve la decisión para que se pueda comprobar desde fuera: una función
|
|
249
|
+
* que solo tiene efectos secundarios es una función que nadie verifica.
|
|
250
|
+
*/
|
|
251
|
+
export function ajustarPresupuestoDeRazonamiento(clave, texto, sesion, env = process.env) {
|
|
252
|
+
let estado = estados.get(clave);
|
|
253
|
+
if (!estado) {
|
|
254
|
+
estado = estadoInicial();
|
|
255
|
+
estados.set(clave, estado);
|
|
256
|
+
}
|
|
257
|
+
const decision = decidirPresupuesto({
|
|
258
|
+
texto,
|
|
259
|
+
nivelActual: sesion.nivelActual,
|
|
260
|
+
disponibles: sesion.disponibles,
|
|
261
|
+
estado,
|
|
262
|
+
activo: estaActivo(env),
|
|
263
|
+
});
|
|
264
|
+
if (decision.accion === "aplicar") {
|
|
265
|
+
// Guardamos el nivel EFECTIVO, no el pedido: upstream lo recorta a las
|
|
266
|
+
// capacidades del modelo y, si guardáramos el pedido, el turno siguiente
|
|
267
|
+
// vería una diferencia y cedería creyendo que fue el usuario.
|
|
268
|
+
estado.nivelPuestoPorNosotros = sesion.fijar(decision.nivel);
|
|
269
|
+
sesion.avisar(mensajeDeDecision(decision));
|
|
270
|
+
}
|
|
271
|
+
else if (decision.accion === "sin-cambio" || decision.accion === "sin-señal") {
|
|
272
|
+
// Un turno en el que NO cambiamos nada también hay que anotarlo: lo que
|
|
273
|
+
// queda puesto es el nivel actual, y es contra ese valor contra el que
|
|
274
|
+
// se detecta al usuario. Anotando solo al cambiar,
|
|
275
|
+
// `nivelPuestoPorNosotros` se quedaba en null mientras el objetivo
|
|
276
|
+
// coincidiera con el nivel de arranque, y la puerta de cesión no se
|
|
277
|
+
// armaba nunca: sesión en `medium`, turno «arregla esto» (media ->
|
|
278
|
+
// medium, sin-cambio), el usuario sube a `high` a mano y el turno
|
|
279
|
+
// siguiente se lo bajaba a `low` sin ceder ni avisar de nada.
|
|
280
|
+
estado.nivelPuestoPorNosotros = sesion.nivelActual;
|
|
281
|
+
}
|
|
282
|
+
return decision;
|
|
283
|
+
}
|
|
284
|
+
/** Solo para pruebas: olvida el estado de una sesión. */
|
|
285
|
+
export function olvidarEstado(clave) {
|
|
286
|
+
estados.delete(clave);
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=clasificador.js.map
|