@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
|
@@ -21,10 +21,11 @@ import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
|
21
21
|
import { resolvePath } from "../utils/paths.js";
|
|
22
22
|
import { sleep } from "../utils/sleep.js";
|
|
23
23
|
import { normalizeToolResultImages } from "../utils/tool-result-images.js";
|
|
24
|
+
import { abrirTurno, ajustarPresupuestoDeRazonamiento, anadirRegistroDenso, buildEnginePersonalityBlock, buscarConElModelo, cerrarLlamadasAbiertas, construirAdvisorDeSesion, construirDesglose, crearBrowserTools, crearComputerTools, crearEstructuralTools, crearInteractivoTools, crearObtenerClave, createGraphTool, createMcpTools, createMemoryEngineTools, createWebTools, createWorkflowTool, dispararHooks, envolverReadConPdf, envolverReadConUrlsInternas, estadoDelTurno, expandVaultRefs, GraphSync, goalSessionTools, leerDenegadas, loadProjectMemorySync, mensajeDeTurnoVacio, nivelDesdeConfig, optimizeUserPrompt, RegistroDeSesion, redactSensitive, saveProjectMemory, soportaBusquedaNativa, transcriptParaAdvisor, } from "./ada.js";
|
|
24
25
|
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
25
26
|
import { executeBashWithOperations } from "./bash-executor.js";
|
|
26
27
|
import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, estimateTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
|
|
27
|
-
import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
|
|
28
|
+
import { DEFAULT_THINKING_LEVEL, THINKING_LEVEL_OPTIONS } from "./defaults.js";
|
|
28
29
|
import { exportSessionToHtml } from "./export-html/index.js";
|
|
29
30
|
import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
|
|
30
31
|
import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
|
|
@@ -32,16 +33,13 @@ import { emitSessionShutdownEvent } from "./extensions/runner.js";
|
|
|
32
33
|
import { ModelRegistry } from "./model-registry.js";
|
|
33
34
|
import { expandPromptTemplate } from "./prompt-templates.js";
|
|
34
35
|
import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
|
|
35
|
-
import { loadProjectMemorySync, saveProjectMemory } from "./project-memory.js";
|
|
36
36
|
import { createSyntheticSourceInfo } from "./source-info.js";
|
|
37
37
|
import { buildSystemPrompt } from "./system-prompt.js";
|
|
38
38
|
import { createLocalBashOperations } from "./tools/bash.js";
|
|
39
39
|
import { createAllToolDefinitions } from "./tools/index.js";
|
|
40
|
-
import { createMemoryEngineTools } from "./memory-engine/tools.js";
|
|
41
|
-
import { redactSensitive } from "./memory-engine/security.js";
|
|
42
|
-
import { expandVaultRefs } from "./memory-engine/vault.js";
|
|
43
40
|
import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
|
|
44
41
|
import { addUsageToTotals, createUsageTotals } from "./usage-totals.js";
|
|
42
|
+
import { publicarAnotarRed } from "./web/registro-red.js";
|
|
45
43
|
/**
|
|
46
44
|
* Parse a skill block from message text.
|
|
47
45
|
* Returns null if the text doesn't contain a skill block.
|
|
@@ -75,8 +73,6 @@ function estimateMessagesTokens(messages) {
|
|
|
75
73
|
// ============================================================================
|
|
76
74
|
// Constants
|
|
77
75
|
// ============================================================================
|
|
78
|
-
/** Standard thinking levels */
|
|
79
|
-
const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high"];
|
|
80
76
|
// ============================================================================
|
|
81
77
|
// AgentSession Class
|
|
82
78
|
// ============================================================================
|
|
@@ -130,6 +126,50 @@ export class AgentSession {
|
|
|
130
126
|
_extensionErrorListener;
|
|
131
127
|
_extensionErrorUnsubscriber;
|
|
132
128
|
_modelRuntime;
|
|
129
|
+
// ── Campos de Ada ────────────────────────────────────────────────────────
|
|
130
|
+
// Juntos y no repartidos por la clase a propósito: cada bloque separado en
|
|
131
|
+
// este fichero de upstream es un hunk más que reaplicar en cada sync.
|
|
132
|
+
_isSubagentSession = false;
|
|
133
|
+
_graphSync;
|
|
134
|
+
_advisor;
|
|
135
|
+
/** Una vuelta del advisor sobre la sesión. Nunca espera ni lanza. */
|
|
136
|
+
_mirarConAdvisor() {
|
|
137
|
+
this._advisor ??= construirAdvisorDeSesion({
|
|
138
|
+
settings: this.settingsManager,
|
|
139
|
+
modelo: () => this.model,
|
|
140
|
+
runtime: this._modelRuntime,
|
|
141
|
+
entregar: (texto, severidad) => {
|
|
142
|
+
void this.sendCustomMessage({
|
|
143
|
+
customType: "advisor",
|
|
144
|
+
content: [{ type: "text", text: texto }],
|
|
145
|
+
display: true,
|
|
146
|
+
details: { severidad },
|
|
147
|
+
}, { deliverAs: "steer" });
|
|
148
|
+
},
|
|
149
|
+
libro: this._registro.libro(),
|
|
150
|
+
});
|
|
151
|
+
this._advisor.trasTurno(transcriptParaAdvisor(this.agent.state.messages));
|
|
152
|
+
}
|
|
153
|
+
_registro = new RegistroDeSesion(() => this._resourceLoader.getAgentDir(), () => this.sessionId, () => this._cwd, async (texto) => {
|
|
154
|
+
// Sin modelo elegido, ni lo intentamos: que `intentarReparar` lo lea
|
|
155
|
+
// como "no-aplicable", no como una llamada al modelo que devolvió vacío.
|
|
156
|
+
const modelo = this.model;
|
|
157
|
+
if (!modelo)
|
|
158
|
+
return null;
|
|
159
|
+
try {
|
|
160
|
+
const respuesta = await this._modelRuntime.completeSimple(modelo, {
|
|
161
|
+
messages: [{ role: "user", content: texto }],
|
|
162
|
+
});
|
|
163
|
+
return contentText(respuesta.content, "").trim();
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
/** Optimizador autónomo de prompts: "off" | "auto" | "clarify". */
|
|
170
|
+
_promptOptimizerMode = "off";
|
|
171
|
+
/** Clarificación pendiente (modo "clarify"): original + preguntas ya emitidas. */
|
|
172
|
+
_pendingClarification;
|
|
133
173
|
// Tool registry for extension getTools/setTools
|
|
134
174
|
_toolRegistry = new Map();
|
|
135
175
|
_toolDefinitions = new Map();
|
|
@@ -146,6 +186,11 @@ export class AgentSession {
|
|
|
146
186
|
this._scopedModels = config.scopedModels ?? [];
|
|
147
187
|
this._resourceLoader = config.resourceLoader;
|
|
148
188
|
this._customTools = config.customTools ?? [];
|
|
189
|
+
// ANTES de `_buildRuntime()`, que consulta este campo para decidir qué
|
|
190
|
+
// tools recibe un subagente. Moverlo más abajo para ahorrar un hunk hizo
|
|
191
|
+
// que se leyera `false` y los subagentes recibieran memory_add/search —
|
|
192
|
+
// justo lo que la anti-recursión existe para impedir.
|
|
193
|
+
this._isSubagentSession = config.isSubagent === true;
|
|
149
194
|
this._cwd = config.cwd;
|
|
150
195
|
this._modelRuntime = config.modelRuntime;
|
|
151
196
|
this._extensionRunnerRef = config.extensionRunnerRef;
|
|
@@ -163,6 +208,23 @@ export class AgentSession {
|
|
|
163
208
|
activeToolNames: this._initialActiveToolNames,
|
|
164
209
|
includeAllExtensionTools: true,
|
|
165
210
|
});
|
|
211
|
+
// Los subagentes (goals/workflows) HEREDAN el modelo de la sesión principal:
|
|
212
|
+
// misma provider/modelId → misma auth → misma API key del chat.
|
|
213
|
+
this._resourceLoader.setSessionModelGetter?.(() => {
|
|
214
|
+
const m = this.model;
|
|
215
|
+
return m
|
|
216
|
+
? {
|
|
217
|
+
provider: m.provider,
|
|
218
|
+
modelId: m.modelId ?? m.id ?? "",
|
|
219
|
+
}
|
|
220
|
+
: undefined;
|
|
221
|
+
});
|
|
222
|
+
// Cuando un run de workflow arranca (tool del agente o sub-tarea del
|
|
223
|
+
// goal), la sesión emite workflow_started — el desktop lo usa para
|
|
224
|
+
// abrir el panel Engine automáticamente.
|
|
225
|
+
this._resourceLoader.setOnWorkflowRunStarted?.((runId, name) => {
|
|
226
|
+
this._emit({ type: "workflow_started", runId, name });
|
|
227
|
+
});
|
|
166
228
|
// Ada Memory Engine: lazy-initialize (stores, migration, session index)
|
|
167
229
|
// and wire the LLM callback used by review/correction/flush. Best-effort
|
|
168
230
|
// and never blocks startup.
|
|
@@ -190,8 +252,7 @@ export class AgentSession {
|
|
|
190
252
|
content: [
|
|
191
253
|
{
|
|
192
254
|
type: "text",
|
|
193
|
-
text:
|
|
194
|
-
reason,
|
|
255
|
+
text: `Has introducido un dato sensible que no se almacenará en memoria. ${reason}`,
|
|
195
256
|
},
|
|
196
257
|
],
|
|
197
258
|
display: true,
|
|
@@ -265,6 +326,30 @@ export class AgentSession {
|
|
|
265
326
|
*/
|
|
266
327
|
_installAgentToolHooks() {
|
|
267
328
|
this.agent.beforeToolCall = async ({ toolCall, args }) => {
|
|
329
|
+
// Política de aprobación por herramienta.
|
|
330
|
+
//
|
|
331
|
+
// Va ANTES que los hooks del usuario a propósito: las rutas
|
|
332
|
+
// protegidas y el `deny` explícito no son negociables, y dejar que un
|
|
333
|
+
// hook se ejecute primero le daría ocasión de ver los argumentos de
|
|
334
|
+
// una llamada que nunca debió llegar a considerarse.
|
|
335
|
+
//
|
|
336
|
+
// Se bloquea con `{block, reason}` y no lanzando: el modelo recibe un
|
|
337
|
+
// resultado de error legible que le dice qué hacer en su lugar, en vez
|
|
338
|
+
// de una excepción.
|
|
339
|
+
const decisionAprobacion = await this._registro.antesDeLlamada(toolCall.id, toolCall.name, args, this.settingsManager.getEngineConfig());
|
|
340
|
+
if (decisionAprobacion.veredicto === "denegada") {
|
|
341
|
+
return { block: true, reason: decisionAprobacion.motivo };
|
|
342
|
+
}
|
|
343
|
+
// Hooks del usuario (`settings.hooks.events.pre_tool_use`). Sale sin
|
|
344
|
+
// tocar nada si no hay ninguno configurado — ver core/hooks/.
|
|
345
|
+
const vetoPrevio = await dispararHooks(this.settingsManager.getEngineConfig(), "pre_tool_use", toolCall.name, {
|
|
346
|
+
sessionId: this.sessionId,
|
|
347
|
+
cwd: this._cwd,
|
|
348
|
+
toolName: toolCall.name,
|
|
349
|
+
toolInput: args,
|
|
350
|
+
});
|
|
351
|
+
if (vetoPrevio.bloquea)
|
|
352
|
+
throw new Error(vetoPrevio.motivo);
|
|
268
353
|
const runner = this._extensionRunner;
|
|
269
354
|
if (!runner.hasHandlers("tool_call")) {
|
|
270
355
|
return undefined;
|
|
@@ -285,6 +370,44 @@ export class AgentSession {
|
|
|
285
370
|
}
|
|
286
371
|
};
|
|
287
372
|
this.agent.afterToolCall = async ({ toolCall, args, result, isError }) => {
|
|
373
|
+
// `post_tool_use` es informativo: la herramienta YA corrió, así que su
|
|
374
|
+
// veredicto no puede vetar nada y solo se dispara para que el hook se
|
|
375
|
+
// entere. Bloquear aquí daría falsa sensación de control.
|
|
376
|
+
void dispararHooks(this.settingsManager.getEngineConfig(), "post_tool_use", toolCall.name, {
|
|
377
|
+
sessionId: this.sessionId,
|
|
378
|
+
cwd: this._cwd,
|
|
379
|
+
toolName: toolCall.name,
|
|
380
|
+
toolInput: args,
|
|
381
|
+
toolResult: result.content,
|
|
382
|
+
}).catch(() => { });
|
|
383
|
+
// Auto-registro del grafo (best-effort, nunca bloquea el agente).
|
|
384
|
+
try {
|
|
385
|
+
if (!this._graphSync) {
|
|
386
|
+
this._graphSync = new GraphSync({
|
|
387
|
+
graph: () => this._resourceLoader.getGraph?.(),
|
|
388
|
+
cwd: this._cwd,
|
|
389
|
+
activeGoal: () => null, // resuelto en agent_settled vía syncGoal
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
void this._graphSync.onToolResult(toolCall.name, args, result, isError);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
// best-effort
|
|
396
|
+
}
|
|
397
|
+
// Libro de sesión: qué HIZO el agente, encadenado y verificable.
|
|
398
|
+
//
|
|
399
|
+
// Este es el punto por el que pasan TODAS las tools, que es lo que
|
|
400
|
+
// hace que el registro sea completo por construcción en vez de por
|
|
401
|
+
// haberse acordado de instrumentar cada una.
|
|
402
|
+
//
|
|
403
|
+
// De momento anota la ejecución y, para `bash`, el comando. Los
|
|
404
|
+
// hashes de fichero antes/después llegan con el observador de
|
|
405
|
+
// ediciones, que ya tiene que leer las dos versiones: hacerlo aquí
|
|
406
|
+
// obligaría a leer el fichero por segundo vez.
|
|
407
|
+
const avisoEdicion = await this._registro.trasLlamada(toolCall.id, toolCall.name, args, isError);
|
|
408
|
+
if (avisoEdicion !== null && Array.isArray(result.content)) {
|
|
409
|
+
result.content.push({ type: "text", text: avisoEdicion });
|
|
410
|
+
}
|
|
288
411
|
const runner = this._extensionRunner;
|
|
289
412
|
const hookResult = runner.hasHandlers("tool_result")
|
|
290
413
|
? await runner.emitToolResult({
|
|
@@ -350,6 +473,11 @@ export class AgentSession {
|
|
|
350
473
|
followUp: [...this._followUpMessages],
|
|
351
474
|
});
|
|
352
475
|
}
|
|
476
|
+
async _emitSessionCompactFailed(event) {
|
|
477
|
+
if (this._extensionRunner.hasHandlers("session_compact_failed")) {
|
|
478
|
+
await this._extensionRunner.emit({ type: "session_compact_failed", ...event });
|
|
479
|
+
}
|
|
480
|
+
}
|
|
353
481
|
_getIdleWaitPromise() {
|
|
354
482
|
if (!this._idleWaitPromise) {
|
|
355
483
|
this._idleWaitPromise = new Promise((resolve) => {
|
|
@@ -372,11 +500,101 @@ export class AgentSession {
|
|
|
372
500
|
try {
|
|
373
501
|
await this._extensionRunner.emit({ type: "agent_settled" });
|
|
374
502
|
this._emit({ type: "agent_settled" });
|
|
503
|
+
// El advisor mira cuando el turno se ha ASENTADO.
|
|
504
|
+
//
|
|
505
|
+
// Aquí y no en el manejador de eventos por dos motivos, los dos
|
|
506
|
+
// aprendidos rompiendo cosas: `agent_settled` NO pasa por ese
|
|
507
|
+
// manejador —su unión de tipos no lo incluye, así que el gancho era
|
|
508
|
+
// código muerto que ninguna prueba veía—, y `agent_end`, que sí pasa,
|
|
509
|
+
// salta una vez por INTENTO: meter entonces un mensaje `steer` se cuela
|
|
510
|
+
// dentro del reintento y convierte uno que acaba bien en uno que acaba
|
|
511
|
+
// mal (tres pruebas de `agent-session-retry-events`).
|
|
512
|
+
//
|
|
513
|
+
// Y es además lo que hay que observar: lo que el agente acabó
|
|
514
|
+
// haciendo, no cada tentativa.
|
|
515
|
+
this._mirarConAdvisor();
|
|
516
|
+
// Ada Intelligence Engine: el GoalEngine es el ÚNICO dueño de la
|
|
517
|
+
// continuación automática del goal (pi-goal). No compite con retry/
|
|
518
|
+
// compaction/steer. Fire-and-forget; nunca bloquea ni rompe el chat.
|
|
519
|
+
try {
|
|
520
|
+
const goalEngine = this._isSubagentSession ? null : this._resourceLoader.getGoalEngine?.();
|
|
521
|
+
if (goalEngine) {
|
|
522
|
+
void this._maybeContinueGoal(goalEngine);
|
|
523
|
+
// Spine del grafo: sync automático del goal activo.
|
|
524
|
+
if (this._graphSync) {
|
|
525
|
+
void (async () => {
|
|
526
|
+
const goals = await goalEngine.list().catch(() => []);
|
|
527
|
+
const active = goals.find((g) => g.status === "active");
|
|
528
|
+
if (active) {
|
|
529
|
+
const full = await goalEngine.get(active.id).catch(() => null);
|
|
530
|
+
if (full) {
|
|
531
|
+
await this._graphSync?.syncGoal({
|
|
532
|
+
id: full.id,
|
|
533
|
+
goal: full.goal,
|
|
534
|
+
phase: full.phase,
|
|
535
|
+
tasks: full.tasks ?? [],
|
|
536
|
+
doneCriteria: full.doneCriteria ?? [],
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
})();
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
catch {
|
|
545
|
+
// best-effort
|
|
546
|
+
}
|
|
375
547
|
}
|
|
376
548
|
finally {
|
|
377
549
|
this._resolveIdleWaitIfIdle();
|
|
378
550
|
}
|
|
379
551
|
}
|
|
552
|
+
/**
|
|
553
|
+
* Confirmación fail-closed del lanzamiento de workflows: emite un evento y
|
|
554
|
+
* espera respuesta humana hasta 15s; sin respuesta → NO lanzar.
|
|
555
|
+
*/
|
|
556
|
+
_confirmWorkflowLaunch(prompt) {
|
|
557
|
+
return new Promise((resolve) => {
|
|
558
|
+
const timeout = setTimeout(() => {
|
|
559
|
+
this._confirmResolvers.delete(prompt);
|
|
560
|
+
resolve(false);
|
|
561
|
+
}, 15_000);
|
|
562
|
+
this._confirmResolvers.set(prompt, (ok) => {
|
|
563
|
+
clearTimeout(timeout);
|
|
564
|
+
this._confirmResolvers.delete(prompt);
|
|
565
|
+
resolve(ok);
|
|
566
|
+
});
|
|
567
|
+
this._emit({ type: "notification", message: `[workflow] ${prompt}`, level: "warning" });
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
/** Respuesta a una confirmación pendiente (la UI la llama). */
|
|
571
|
+
resolveWorkflowConfirmation(prompt, ok) {
|
|
572
|
+
const resolver = this._confirmResolvers.get(prompt);
|
|
573
|
+
if (!resolver)
|
|
574
|
+
return false;
|
|
575
|
+
resolver(ok);
|
|
576
|
+
return true;
|
|
577
|
+
}
|
|
578
|
+
/** Si hay un goal activo aprobado, avanza un turno del bucle. */
|
|
579
|
+
async _maybeContinueGoal(goalEngine) {
|
|
580
|
+
const goals = await goalEngine.list().catch(() => []);
|
|
581
|
+
const active = goals.find((g) => g.status === "active");
|
|
582
|
+
if (!active)
|
|
583
|
+
return;
|
|
584
|
+
// Freno por defecto del engine: si está desactivado no continúa.
|
|
585
|
+
if (!this.settingsManager.getGoalEngineEnabled())
|
|
586
|
+
return;
|
|
587
|
+
// markers anti-duplicados: solo avanzar si no hay un turno ya en curso.
|
|
588
|
+
if (this._isAgentRunActive)
|
|
589
|
+
return;
|
|
590
|
+
this._isAgentRunActive = true;
|
|
591
|
+
try {
|
|
592
|
+
await goalEngine.tick(active.id).catch(() => { });
|
|
593
|
+
}
|
|
594
|
+
finally {
|
|
595
|
+
this._isAgentRunActive = false;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
380
598
|
// =========================================================================
|
|
381
599
|
// Automatic project memory (claude-mem style)
|
|
382
600
|
// =========================================================================
|
|
@@ -488,6 +706,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
488
706
|
// Track last assistant message for auto-compaction check
|
|
489
707
|
_lastAssistantMessage = undefined;
|
|
490
708
|
_lastAutoMemorizeAt = 0;
|
|
709
|
+
_confirmResolvers = new Map();
|
|
491
710
|
/** Vault expansion redactions by user-message id (frontend + persistence). */
|
|
492
711
|
_vaultRedactions = new Map();
|
|
493
712
|
_userMessageSeq = 0;
|
|
@@ -533,6 +752,34 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
533
752
|
void memoryEngine.onTurnEnd({ message: event.message });
|
|
534
753
|
}
|
|
535
754
|
}
|
|
755
|
+
// Libro de sesión: la llamada al modelo.
|
|
756
|
+
//
|
|
757
|
+
// Va en `message_end` y no en `agent_end` porque un turno puede gastar
|
|
758
|
+
// varias llamadas, y "qué modelo se usó y cuánto costó" hay que poder
|
|
759
|
+
// responderlo por llamada, no por turno.
|
|
760
|
+
//
|
|
761
|
+
// Se anotan también las que fallan: `motivoParada: "error"` es
|
|
762
|
+
// justamente lo que hay que poder enseñar.
|
|
763
|
+
if (event.type === "message_end" && event.message.role === "assistant") {
|
|
764
|
+
const asistente = event.message;
|
|
765
|
+
this._registro.anotarModelo(asistente);
|
|
766
|
+
// Un turno abortado puede dejar `toolCall` sin su `tool_result`, y un
|
|
767
|
+
// historial así lo rechazan los proveedores: la conversación entera deja
|
|
768
|
+
// de poder reanudarse. El bucle del agente ya lo cierra, pero ESE PAQUETE
|
|
769
|
+
// NO VIAJA en el tarball —se resuelve del registro, con la versión de
|
|
770
|
+
// upstream—, así que se cierra también aquí, donde sí llega al cliente.
|
|
771
|
+
// Es idempotente: si el bucle ya lo hizo, no encuentra nada que cerrar.
|
|
772
|
+
if (asistente.stopReason === "aborted" || asistente.stopReason === "error") {
|
|
773
|
+
cerrarLlamadasAbiertas(this.agent.state.messages, asistente);
|
|
774
|
+
}
|
|
775
|
+
// Un turno VACÍO no es un turno terminado. Sin este aviso el usuario
|
|
776
|
+
// ve silencio y lo lee como «el modelo decidió no hacer nada»: el
|
|
777
|
+
// caso real fue `x-preview-f-free` devolviendo respuestas vacías.
|
|
778
|
+
// El error y el abort NO entran aquí — ya se ven por su vía.
|
|
779
|
+
if (estadoDelTurno(asistente) === "vacio") {
|
|
780
|
+
this._emit({ type: "notification", message: mensajeDeTurnoVacio(asistente), level: "warning" });
|
|
781
|
+
}
|
|
782
|
+
}
|
|
536
783
|
// Automatic project memory (claude-mem style): after each completed
|
|
537
784
|
// agent turn with real user interaction, distill durable facts into
|
|
538
785
|
// the shared project memory. Fire-and-forget; never blocks the turn.
|
|
@@ -922,10 +1169,32 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
922
1169
|
}
|
|
923
1170
|
const loaderSystemPrompt = this._resourceLoader.getSystemPrompt();
|
|
924
1171
|
const loaderAppendSystemPrompt = this._resourceLoader.getAppendSystemPrompt();
|
|
925
|
-
|
|
1172
|
+
// Ada Intelligence Engine: PERSONALIDAD SIEMPRE presente (sesión principal).
|
|
1173
|
+
// No depende de que el modelo lea la skill: el árbol de decisión y los
|
|
1174
|
+
// procedimientos van inline en el prompt, cada turno.
|
|
1175
|
+
let enginePrompt;
|
|
1176
|
+
if (!this._isSubagentSession &&
|
|
1177
|
+
(this.settingsManager.getGoalEngineEnabled() || this.settingsManager.getWorkflowsEnabled())) {
|
|
1178
|
+
enginePrompt = buildEnginePersonalityBlock();
|
|
1179
|
+
}
|
|
1180
|
+
const appendSystemPrompt = enginePrompt
|
|
1181
|
+
? [enginePrompt, ...(loaderAppendSystemPrompt.length > 0 ? [loaderAppendSystemPrompt.join("\n\n")] : [])].join("\n\n")
|
|
1182
|
+
: loaderAppendSystemPrompt.length > 0
|
|
1183
|
+
? loaderAppendSystemPrompt.join("\n\n")
|
|
1184
|
+
: undefined;
|
|
926
1185
|
const loadedSkills = this._resourceLoader.getSkills().skills;
|
|
927
1186
|
const loadedContextFiles = this._resourceLoader.getAgentsFiles().agentsFiles;
|
|
928
1187
|
this._baseSystemPromptOptions = {
|
|
1188
|
+
// Modo plan: el prompt gana la sección que dice que el árbol es de solo
|
|
1189
|
+
// lectura. Se deriva con la MISMA función que usa el guardián
|
|
1190
|
+
// (`RegistroDeSesion.antesDeLlamada` → `decidir({ modo: nivelDesdeConfig(…) })`)
|
|
1191
|
+
// y no leyendo `planOnly` a mano, para que el prompt no pueda decir una
|
|
1192
|
+
// cosa y la política otra el día que `nivelDesdeConfig` cambie de
|
|
1193
|
+
// criterio. Va como primer campo a propósito: así este cambio cae dentro
|
|
1194
|
+
// del hunk de sincronización que ya había justo arriba en vez de abrir
|
|
1195
|
+
// uno nuevo (el presupuesto de fork está a 118/118, medido).
|
|
1196
|
+
modoPlan: nivelDesdeConfig(this.settingsManager.getEngineConfig()) === "plan",
|
|
1197
|
+
toolsDenegadas: leerDenegadas(this.settingsManager.getEngineConfig()),
|
|
929
1198
|
cwd: this._cwd,
|
|
930
1199
|
skills: loadedSkills,
|
|
931
1200
|
contextFiles: loadedContextFiles,
|
|
@@ -989,6 +1258,31 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
989
1258
|
* @throws Error if no model selected or no API key available (when not streaming)
|
|
990
1259
|
*/
|
|
991
1260
|
async prompt(text, options) {
|
|
1261
|
+
// Frontera de turno: agrupa las escrituras de este prompt para `undo`, y
|
|
1262
|
+
// dispara el hook `user_prompt_submit`. Las dos cosas necesitan el mismo
|
|
1263
|
+
// momento exacto, así que comparten sitio.
|
|
1264
|
+
abrirTurno(this._resourceLoader.getAgentDir(), this._cwd, Date.now());
|
|
1265
|
+
void dispararHooks(this.settingsManager.getEngineConfig(), "user_prompt_submit", "user_prompt_submit", {
|
|
1266
|
+
sessionId: this.sessionId,
|
|
1267
|
+
cwd: this._cwd,
|
|
1268
|
+
prompt: text,
|
|
1269
|
+
}).catch(() => { });
|
|
1270
|
+
// Presupuesto de razonamiento por dificultad del turno. Aquí y no más
|
|
1271
|
+
// abajo porque tiene que decidirse ANTES de construir la petición, y con
|
|
1272
|
+
// el texto tal cual lo escribió el usuario. No llama al modelo.
|
|
1273
|
+
// Solo fuera de streaming: un mensaje de dirección corto («no, para»)
|
|
1274
|
+
// no debe bajar el presupuesto de la tarea larga que ya está en marcha.
|
|
1275
|
+
if (!this.isStreaming) {
|
|
1276
|
+
ajustarPresupuestoDeRazonamiento(this, text, {
|
|
1277
|
+
nivelActual: this.thinkingLevel,
|
|
1278
|
+
disponibles: this.getAvailableThinkingLevels(),
|
|
1279
|
+
fijar: (nivel) => {
|
|
1280
|
+
this.setThinkingLevel(nivel);
|
|
1281
|
+
return this.thinkingLevel;
|
|
1282
|
+
},
|
|
1283
|
+
avisar: (mensaje) => this._emit({ type: "notification", message: mensaje, level: "info" }),
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
992
1286
|
const expandPromptTemplates = options?.expandPromptTemplates ?? true;
|
|
993
1287
|
const preflightResult = options?.preflightResult;
|
|
994
1288
|
let messages;
|
|
@@ -1382,13 +1676,135 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1382
1676
|
if (images.length === 0)
|
|
1383
1677
|
images = undefined;
|
|
1384
1678
|
}
|
|
1385
|
-
|
|
1679
|
+
// ── Optimizador autónomo de prompt ───────────────────────────────────
|
|
1680
|
+
// Mejora la petición del usuario (claridad, contexto, formato, criterios,
|
|
1681
|
+
// alcance) ANTES de que llegue al modelo. Fail-open: cualquier error o
|
|
1682
|
+
// timeout usa el prompt original — nunca degrada la experiencia.
|
|
1683
|
+
let finalText = text;
|
|
1684
|
+
if (this._promptOptimizerMode !== "off" && typeof text === "string" && !text.startsWith("/")) {
|
|
1685
|
+
try {
|
|
1686
|
+
const result = await this._runPromptOptimizer(text);
|
|
1687
|
+
if (result) {
|
|
1688
|
+
if (result.decision === "clarify" && this._promptOptimizerMode === "clarify") {
|
|
1689
|
+
// Preguntar primero y esperar respuesta; no enviamos aún.
|
|
1690
|
+
this._pendingClarification = { original: text, questions: result.questions };
|
|
1691
|
+
this._emit({
|
|
1692
|
+
type: "prompt_optimization",
|
|
1693
|
+
decision: "clarify",
|
|
1694
|
+
original: text,
|
|
1695
|
+
questions: result.questions,
|
|
1696
|
+
summary: result.summary,
|
|
1697
|
+
});
|
|
1698
|
+
const questions = result.questions.map((q, i) => `${i + 1}. ${q}`).join("\n");
|
|
1699
|
+
await this.sendCustomMessage({
|
|
1700
|
+
customType: "clarify-questions",
|
|
1701
|
+
content: [
|
|
1702
|
+
{
|
|
1703
|
+
type: "text",
|
|
1704
|
+
text: `🔎 Para dejar tu petición sin huecos, necesito aclarar:\n${questions}\n\nResponde a las preguntas y continuaré.`,
|
|
1705
|
+
},
|
|
1706
|
+
],
|
|
1707
|
+
display: true,
|
|
1708
|
+
details: { q: result.questions },
|
|
1709
|
+
}, { triggerTurn: false });
|
|
1710
|
+
return;
|
|
1711
|
+
}
|
|
1712
|
+
if (result.enhanced && result.enhanced !== text) {
|
|
1713
|
+
finalText = result.enhanced;
|
|
1714
|
+
this._emit({
|
|
1715
|
+
type: "prompt_optimization",
|
|
1716
|
+
decision: "enhance",
|
|
1717
|
+
original: text,
|
|
1718
|
+
enhanced: result.enhanced,
|
|
1719
|
+
summary: result.summary,
|
|
1720
|
+
});
|
|
1721
|
+
// Mensaje persistente en el chat (CLI + desktop): muestra el
|
|
1722
|
+
// antes → después para que el usuario vea la mejora.
|
|
1723
|
+
void this.sendCustomMessage({
|
|
1724
|
+
customType: "prompt-optimization",
|
|
1725
|
+
content: [{ type: "text", text: result.enhanced }],
|
|
1726
|
+
display: true,
|
|
1727
|
+
details: { original: text, summary: result.summary },
|
|
1728
|
+
}, { triggerTurn: false });
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
catch {
|
|
1733
|
+
// fail-open: continuamos con el prompt original
|
|
1734
|
+
}
|
|
1735
|
+
}
|
|
1736
|
+
await this.prompt(finalText, {
|
|
1386
1737
|
expandPromptTemplates: options?.expandPromptTemplates ?? false,
|
|
1387
1738
|
streamingBehavior: options?.deliverAs,
|
|
1388
1739
|
images,
|
|
1389
1740
|
source: "extension",
|
|
1390
1741
|
});
|
|
1391
1742
|
}
|
|
1743
|
+
/**
|
|
1744
|
+
* Ejecuta el optimizador con el modelo de la sesión. Timeout de 12s,
|
|
1745
|
+
* nunca lanza (devuelve undefined → fail-open).
|
|
1746
|
+
*/
|
|
1747
|
+
async _runPromptOptimizer(text) {
|
|
1748
|
+
const model = this.model;
|
|
1749
|
+
if (!model)
|
|
1750
|
+
return undefined;
|
|
1751
|
+
try {
|
|
1752
|
+
const answers = this._pendingClarification?.answers;
|
|
1753
|
+
const result = await Promise.race([
|
|
1754
|
+
optimizeUserPrompt({
|
|
1755
|
+
text,
|
|
1756
|
+
// En modo auto nunca bloqueamos al usuario: si el LLM pide
|
|
1757
|
+
// clarificar, forzamos una mejora con supuestos razonables.
|
|
1758
|
+
forceEnhance: this._promptOptimizerMode === "auto",
|
|
1759
|
+
context: {
|
|
1760
|
+
projectDir: this._cwd,
|
|
1761
|
+
// Si el usuario ya respondió a las preguntas de la ronda
|
|
1762
|
+
// anterior, se las pasamos al optimizador como contexto.
|
|
1763
|
+
recentMessages: answers?.length
|
|
1764
|
+
? [...answers, ...(this._recentUserPrompts(3) ?? [])]
|
|
1765
|
+
: this._recentUserPrompts(3),
|
|
1766
|
+
},
|
|
1767
|
+
}, async (systemPrompt, userContent) => {
|
|
1768
|
+
const completed = await this._modelRuntime.completeSimple(model, {
|
|
1769
|
+
systemPrompt,
|
|
1770
|
+
messages: [{ role: "user", content: userContent }],
|
|
1771
|
+
signal: AbortSignal.timeout(20_000),
|
|
1772
|
+
});
|
|
1773
|
+
return contentText(completed.content, "").trim();
|
|
1774
|
+
}),
|
|
1775
|
+
new Promise((resolve) => setTimeout(() => resolve(undefined), 25_000)),
|
|
1776
|
+
]);
|
|
1777
|
+
if (!result)
|
|
1778
|
+
return undefined;
|
|
1779
|
+
this._pendingClarification = undefined;
|
|
1780
|
+
return result;
|
|
1781
|
+
}
|
|
1782
|
+
catch {
|
|
1783
|
+
return undefined;
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
/** Últimos prompts de usuario (para dar contexto al optimizador). */
|
|
1787
|
+
_recentUserPrompts(max) {
|
|
1788
|
+
const out = [];
|
|
1789
|
+
const messages = this.agent.state.messages;
|
|
1790
|
+
for (let i = messages.length - 1; i >= 0 && out.length < max; i--) {
|
|
1791
|
+
const m = messages[i];
|
|
1792
|
+
if (m.role === "user") {
|
|
1793
|
+
const t = contentText(m.content, "");
|
|
1794
|
+
if (t.trim())
|
|
1795
|
+
out.unshift(t.slice(0, 500));
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
return out;
|
|
1799
|
+
}
|
|
1800
|
+
/** Ajusta el modo del optimizador autónomo de prompts. */
|
|
1801
|
+
setPromptOptimizerMode(mode) {
|
|
1802
|
+
this._promptOptimizerMode = mode;
|
|
1803
|
+
}
|
|
1804
|
+
/** Modo actual del optimizador autónomo de prompts. */
|
|
1805
|
+
getPromptOptimizerMode() {
|
|
1806
|
+
return this._promptOptimizerMode;
|
|
1807
|
+
}
|
|
1392
1808
|
/**
|
|
1393
1809
|
* Clear all queued messages and return them.
|
|
1394
1810
|
* Useful for restoring to editor when user aborts.
|
|
@@ -1447,19 +1863,24 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1447
1863
|
}
|
|
1448
1864
|
/**
|
|
1449
1865
|
* Set model directly.
|
|
1450
|
-
* Validates that auth is configured
|
|
1866
|
+
* Validates that auth is configured and saves to the session transcript.
|
|
1867
|
+
* Persists to global defaults only when options.persist is true.
|
|
1451
1868
|
* @throws Error if no auth is configured for the model
|
|
1452
1869
|
*/
|
|
1453
|
-
async setModel(model) {
|
|
1870
|
+
async setModel(model, options = {}) {
|
|
1454
1871
|
if (!(await this._modelRuntime.checkAuth(model.provider))) {
|
|
1455
1872
|
throw new Error(`No API key for ${model.provider}/${model.id}`);
|
|
1456
1873
|
}
|
|
1457
1874
|
const previousModel = this.model;
|
|
1458
|
-
const thinkingLevel = this._getThinkingLevelForModelSwitch();
|
|
1875
|
+
const thinkingLevel = this._getThinkingLevelForModelSwitch(model);
|
|
1459
1876
|
this.agent.state.model = model;
|
|
1460
1877
|
this.sessionManager.appendModelChange(model.provider, model.id);
|
|
1461
|
-
|
|
1462
|
-
|
|
1878
|
+
if (options.persist) {
|
|
1879
|
+
this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
|
|
1880
|
+
}
|
|
1881
|
+
// Apply thinking level for the new model.
|
|
1882
|
+
// Per-model thinking level overrides take priority over the global default.
|
|
1883
|
+
// Model persistence does not implicitly rewrite the global thinking default.
|
|
1463
1884
|
this.setThinkingLevel(thinkingLevel);
|
|
1464
1885
|
await this._emitModelSelect(model, previousModel, "set");
|
|
1465
1886
|
}
|
|
@@ -1469,13 +1890,13 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1469
1890
|
* @param direction - "forward" (default) or "backward"
|
|
1470
1891
|
* @returns The new model info, or undefined if only one model available
|
|
1471
1892
|
*/
|
|
1472
|
-
async cycleModel(direction = "forward") {
|
|
1893
|
+
async cycleModel(direction = "forward", options = {}) {
|
|
1473
1894
|
if (this._scopedModels.length > 0) {
|
|
1474
|
-
return this._cycleScopedModel(direction);
|
|
1895
|
+
return this._cycleScopedModel(direction, options);
|
|
1475
1896
|
}
|
|
1476
|
-
return this._cycleAvailableModel(direction);
|
|
1897
|
+
return this._cycleAvailableModel(direction, options);
|
|
1477
1898
|
}
|
|
1478
|
-
async _cycleScopedModel(direction) {
|
|
1899
|
+
async _cycleScopedModel(direction, options) {
|
|
1479
1900
|
const availableIds = new Set(this._modelRuntime.getAvailableSnapshot().map((model) => `${model.provider}\0${model.id}`));
|
|
1480
1901
|
const scopedModels = this._scopedModels.filter((scoped) => availableIds.has(`${scoped.model.provider}\0${scoped.model.id}`));
|
|
1481
1902
|
if (scopedModels.length <= 1)
|
|
@@ -1487,20 +1908,23 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1487
1908
|
const len = scopedModels.length;
|
|
1488
1909
|
const nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
|
|
1489
1910
|
const next = scopedModels[nextIndex];
|
|
1490
|
-
const thinkingLevel = this._getThinkingLevelForModelSwitch(next.thinkingLevel);
|
|
1911
|
+
const thinkingLevel = this._getThinkingLevelForModelSwitch(next.model, next.thinkingLevel);
|
|
1491
1912
|
// Apply model
|
|
1492
1913
|
this.agent.state.model = next.model;
|
|
1493
1914
|
this.sessionManager.appendModelChange(next.model.provider, next.model.id);
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
//
|
|
1915
|
+
if (options.persist) {
|
|
1916
|
+
this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
|
|
1917
|
+
}
|
|
1918
|
+
// Apply thinking level for the new model.
|
|
1919
|
+
// - Explicit scoped model thinking level overrides defaults
|
|
1920
|
+
// - Per-model thinking level overrides take priority over the global default
|
|
1498
1921
|
// setThinkingLevel clamps to model capabilities.
|
|
1922
|
+
// Model persistence does not implicitly rewrite the global thinking default.
|
|
1499
1923
|
this.setThinkingLevel(thinkingLevel);
|
|
1500
1924
|
await this._emitModelSelect(next.model, currentModel, "cycle");
|
|
1501
1925
|
return { model: next.model, thinkingLevel: this.thinkingLevel, isScoped: true };
|
|
1502
1926
|
}
|
|
1503
|
-
async _cycleAvailableModel(direction) {
|
|
1927
|
+
async _cycleAvailableModel(direction, options) {
|
|
1504
1928
|
const availableModels = this._modelRuntime.getAvailableSnapshot();
|
|
1505
1929
|
if (availableModels.length <= 1)
|
|
1506
1930
|
return undefined;
|
|
@@ -1511,11 +1935,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1511
1935
|
const len = availableModels.length;
|
|
1512
1936
|
const nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
|
|
1513
1937
|
const nextModel = availableModels[nextIndex];
|
|
1514
|
-
const thinkingLevel = this._getThinkingLevelForModelSwitch();
|
|
1938
|
+
const thinkingLevel = this._getThinkingLevelForModelSwitch(nextModel);
|
|
1515
1939
|
this.agent.state.model = nextModel;
|
|
1516
1940
|
this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
|
|
1517
|
-
|
|
1518
|
-
|
|
1941
|
+
if (options.persist) {
|
|
1942
|
+
this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
|
|
1943
|
+
}
|
|
1944
|
+
// Apply thinking level for the new model.
|
|
1945
|
+
// Model persistence does not implicitly rewrite the global thinking default.
|
|
1519
1946
|
this.setThinkingLevel(thinkingLevel);
|
|
1520
1947
|
await this._emitModelSelect(nextModel, currentModel, "cycle");
|
|
1521
1948
|
return { model: nextModel, thinkingLevel: this.thinkingLevel, isScoped: false };
|
|
@@ -1526,20 +1953,21 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1526
1953
|
/**
|
|
1527
1954
|
* Set thinking level.
|
|
1528
1955
|
* Clamps to model capabilities based on available thinking levels.
|
|
1529
|
-
* Saves to session
|
|
1956
|
+
* Saves the clamped level to the session transcript only if the level actually changes.
|
|
1957
|
+
* Persists the requested level to global defaults only when options.persist is true.
|
|
1530
1958
|
*/
|
|
1531
|
-
setThinkingLevel(level) {
|
|
1959
|
+
setThinkingLevel(level, options = {}) {
|
|
1532
1960
|
const availableLevels = this.getAvailableThinkingLevels();
|
|
1533
1961
|
const effectiveLevel = availableLevels.includes(level) ? level : this._clampThinkingLevel(level, availableLevels);
|
|
1534
1962
|
// Only persist if actually changing
|
|
1535
1963
|
const previousLevel = this.agent.state.thinkingLevel;
|
|
1536
1964
|
const isChanging = effectiveLevel !== previousLevel;
|
|
1537
1965
|
this.agent.state.thinkingLevel = effectiveLevel;
|
|
1966
|
+
if (options.persist) {
|
|
1967
|
+
this.settingsManager.setDefaultThinkingLevel(level);
|
|
1968
|
+
}
|
|
1538
1969
|
if (isChanging) {
|
|
1539
1970
|
this.sessionManager.appendThinkingLevelChange(effectiveLevel);
|
|
1540
|
-
if (this.supportsThinking() || effectiveLevel !== "off") {
|
|
1541
|
-
this.settingsManager.setDefaultThinkingLevel(effectiveLevel);
|
|
1542
|
-
}
|
|
1543
1971
|
this._emit({ type: "thinking_level_changed", level: effectiveLevel });
|
|
1544
1972
|
void this._extensionRunner.emit({
|
|
1545
1973
|
type: "thinking_level_select",
|
|
@@ -1552,14 +1980,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1552
1980
|
* Cycle to next thinking level.
|
|
1553
1981
|
* @returns New level, or undefined if model doesn't support thinking
|
|
1554
1982
|
*/
|
|
1555
|
-
cycleThinkingLevel() {
|
|
1983
|
+
cycleThinkingLevel(options = {}) {
|
|
1556
1984
|
if (!this.supportsThinking())
|
|
1557
1985
|
return undefined;
|
|
1558
1986
|
const levels = this.getAvailableThinkingLevels();
|
|
1559
1987
|
const currentIndex = levels.indexOf(this.thinkingLevel);
|
|
1560
1988
|
const nextIndex = (currentIndex + 1) % levels.length;
|
|
1561
1989
|
const nextLevel = levels[nextIndex];
|
|
1562
|
-
this.setThinkingLevel(nextLevel);
|
|
1990
|
+
this.setThinkingLevel(nextLevel, options);
|
|
1563
1991
|
return nextLevel;
|
|
1564
1992
|
}
|
|
1565
1993
|
/**
|
|
@@ -1568,7 +1996,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1568
1996
|
*/
|
|
1569
1997
|
getAvailableThinkingLevels() {
|
|
1570
1998
|
if (!this.model)
|
|
1571
|
-
return
|
|
1999
|
+
return [...THINKING_LEVEL_OPTIONS];
|
|
1572
2000
|
return getSupportedThinkingLevels(this.model);
|
|
1573
2001
|
}
|
|
1574
2002
|
/**
|
|
@@ -1577,14 +2005,18 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1577
2005
|
supportsThinking() {
|
|
1578
2006
|
return !!this.model?.reasoning;
|
|
1579
2007
|
}
|
|
1580
|
-
_getThinkingLevelForModelSwitch(explicitLevel) {
|
|
2008
|
+
_getThinkingLevelForModelSwitch(targetModel, explicitLevel) {
|
|
1581
2009
|
if (explicitLevel !== undefined) {
|
|
1582
2010
|
return explicitLevel;
|
|
1583
2011
|
}
|
|
1584
|
-
|
|
1585
|
-
|
|
2012
|
+
// Per-model default takes priority when switching to a model that has one
|
|
2013
|
+
if (targetModel) {
|
|
2014
|
+
const perModel = this.settingsManager.getModelThinkingLevel(targetModel.provider, targetModel.id);
|
|
2015
|
+
if (perModel !== undefined) {
|
|
2016
|
+
return perModel;
|
|
2017
|
+
}
|
|
1586
2018
|
}
|
|
1587
|
-
return this.thinkingLevel;
|
|
2019
|
+
return this.settingsManager.getDefaultThinkingLevel() ?? this.thinkingLevel ?? DEFAULT_THINKING_LEVEL;
|
|
1588
2020
|
}
|
|
1589
2021
|
_clampThinkingLevel(level, _availableLevels) {
|
|
1590
2022
|
return this.model ? clampThinkingLevel(this.model, level) : "off";
|
|
@@ -1615,15 +2047,36 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1615
2047
|
// =========================================================================
|
|
1616
2048
|
// Compaction
|
|
1617
2049
|
// =========================================================================
|
|
2050
|
+
/** Generate Pi's built-in compaction summary for manual and automatic compaction. */
|
|
2051
|
+
async _runDefaultCompaction(preparation, requestModel, apiKey, headers, customInstructions, signal, env, reason) {
|
|
2052
|
+
// Ada: al resumen en prosa se le añade un REGISTRO DENSO de hechos
|
|
2053
|
+
// (rutas, comandos, errores) extraídos literalmente de los turnos. Este
|
|
2054
|
+
// es el ÚNICO punto por el que pasan las dos compactaciones de pi (la
|
|
2055
|
+
// manual de `/compact`, RPC y extensiones, y la automática por
|
|
2056
|
+
// umbral/desbordamiento), así que un solo hunk cubre la ruta entera.
|
|
2057
|
+
// Ver core/compactar/ para el porqué de sumar en vez de sustituir.
|
|
2058
|
+
return anadirRegistroDenso(await compact(preparation, requestModel, apiKey, headers, customInstructions, signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason }), undefined), preparation);
|
|
2059
|
+
}
|
|
1618
2060
|
/**
|
|
1619
2061
|
* Manually compact the session context.
|
|
1620
|
-
*
|
|
2062
|
+
*
|
|
2063
|
+
* This is the manual entry point used by `/compact`, RPC, and extensions. It is
|
|
2064
|
+
* separate from automatic threshold/overflow compaction, which enters through
|
|
2065
|
+
* `_checkCompaction()` and `_runAutoCompaction()`. After preparation and the
|
|
2066
|
+
* `session_before_compact` hook, both paths call the lower-level `compact()`
|
|
2067
|
+
* function imported from `./compaction/index.ts`, unless the hook cancels or
|
|
2068
|
+
* supplies a custom result.
|
|
2069
|
+
*
|
|
2070
|
+
* Aborts the current agent operation first. Manual compaction never retries or
|
|
2071
|
+
* continues the interrupted agent turn.
|
|
2072
|
+
*
|
|
1621
2073
|
* @param customInstructions Optional instructions for the compaction summary
|
|
1622
2074
|
*/
|
|
1623
2075
|
async compact(customInstructions) {
|
|
1624
2076
|
await this.abort();
|
|
1625
2077
|
this._compactionAbortController = new AbortController();
|
|
1626
2078
|
this._emit({ type: "compaction_start", reason: "manual" });
|
|
2079
|
+
let fromExtension = false;
|
|
1627
2080
|
try {
|
|
1628
2081
|
if (!this.model) {
|
|
1629
2082
|
throw new Error(formatNoModelSelectedMessage());
|
|
@@ -1641,7 +2094,6 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1641
2094
|
throw new Error("Nothing to compact (session too small)");
|
|
1642
2095
|
}
|
|
1643
2096
|
let extensionCompaction;
|
|
1644
|
-
let fromExtension = false;
|
|
1645
2097
|
if (this._extensionRunner.hasHandlers("session_before_compact")) {
|
|
1646
2098
|
const result = (await this._extensionRunner.emit({
|
|
1647
2099
|
type: "session_before_compact",
|
|
@@ -1674,8 +2126,8 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1674
2126
|
details = extensionCompaction.details;
|
|
1675
2127
|
}
|
|
1676
2128
|
else {
|
|
1677
|
-
//
|
|
1678
|
-
const result = await
|
|
2129
|
+
// Shared default summary generator, also used by automatic compaction.
|
|
2130
|
+
const result = await this._runDefaultCompaction(preparation, requestModel, apiKey, headers, customInstructions, this._compactionAbortController.signal, env, "manual");
|
|
1679
2131
|
summary = result.summary;
|
|
1680
2132
|
firstKeptEntryId = result.firstKeptEntryId;
|
|
1681
2133
|
tokensBefore = result.tokensBefore;
|
|
@@ -1723,6 +2175,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1723
2175
|
catch (error) {
|
|
1724
2176
|
const message = error instanceof Error ? error.message : String(error);
|
|
1725
2177
|
const aborted = message === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
|
|
2178
|
+
const errorMessage = aborted ? undefined : `Compaction failed: ${message}`;
|
|
1726
2179
|
this._compactionAbortController = undefined;
|
|
1727
2180
|
this._emit({
|
|
1728
2181
|
type: "compaction_end",
|
|
@@ -1730,7 +2183,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1730
2183
|
result: undefined,
|
|
1731
2184
|
aborted,
|
|
1732
2185
|
willRetry: false,
|
|
1733
|
-
errorMessage
|
|
2186
|
+
errorMessage,
|
|
2187
|
+
});
|
|
2188
|
+
await this._emitSessionCompactFailed({
|
|
2189
|
+
reason: "manual",
|
|
2190
|
+
errorMessage,
|
|
2191
|
+
aborted,
|
|
2192
|
+
willRetry: false,
|
|
2193
|
+
fromExtension,
|
|
1734
2194
|
});
|
|
1735
2195
|
throw error;
|
|
1736
2196
|
}
|
|
@@ -1752,16 +2212,25 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1752
2212
|
this._branchSummaryAbortController?.abort();
|
|
1753
2213
|
}
|
|
1754
2214
|
/**
|
|
1755
|
-
*
|
|
1756
|
-
*
|
|
2215
|
+
* Dispatch automatic compaction after `agent_end` or before prompt submission.
|
|
2216
|
+
* Manual compaction does not call this method; it enters through `compact()`.
|
|
2217
|
+
*
|
|
2218
|
+
* Automatic cases:
|
|
2219
|
+
* 1. Overflow with retry: a context-overflow error or recoverable length stop;
|
|
2220
|
+
* remove the failed assistant message, compact, and retry the turn once.
|
|
2221
|
+
* 2. Overflow without retry: a successful response exceeded the configured
|
|
2222
|
+
* context window; compact but preserve the completed response.
|
|
2223
|
+
* 3. Threshold without retry: valid or estimated context usage crossed the
|
|
2224
|
+
* configured threshold; compact without retrying the completed response.
|
|
1757
2225
|
*
|
|
1758
|
-
*
|
|
1759
|
-
*
|
|
1760
|
-
*
|
|
1761
|
-
*
|
|
2226
|
+
* Each case calls `_runAutoCompaction()`. After preparation and the
|
|
2227
|
+
* `session_before_compact` hook, that method calls the lower-level `compact()`
|
|
2228
|
+
* function imported from `./compaction/index.ts`, unless the hook cancels or
|
|
2229
|
+
* supplies a custom result.
|
|
1762
2230
|
*
|
|
1763
2231
|
* @param assistantMessage The assistant message to check
|
|
1764
2232
|
* @param skipAbortedCheck If false, include aborted messages (for pre-prompt check). Default: true
|
|
2233
|
+
* @returns Whether the post-run loop should call `agent.continue()` for overflow recovery or queued messages
|
|
1765
2234
|
*/
|
|
1766
2235
|
async _checkCompaction(assistantMessage, skipAbortedCheck = true) {
|
|
1767
2236
|
const settings = this.settingsManager.getCompactionSettings();
|
|
@@ -1784,38 +2253,49 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1784
2253
|
if (assistantIsFromBeforeCompaction) {
|
|
1785
2254
|
return false;
|
|
1786
2255
|
}
|
|
1787
|
-
//
|
|
2256
|
+
// Automatic cases 1 and 2: context overflow.
|
|
1788
2257
|
// A length stop is recoverable when output ended below the model's original desired limit,
|
|
1789
2258
|
// independent of the configured context size or any context-clamped provider request limit.
|
|
1790
|
-
|
|
1791
|
-
// assistant answer already completed and agent.continue() cannot continue from an assistant.
|
|
2259
|
+
const contextOverflow = sameModel && isContextOverflow(assistantMessage, contextWindow);
|
|
1792
2260
|
const recoverableLength = sameModel && isRecoverableLength(assistantMessage, this.model?.maxTokens ?? 0);
|
|
1793
|
-
if (
|
|
2261
|
+
if (contextOverflow || recoverableLength) {
|
|
1794
2262
|
const willRetry = assistantMessage.stopReason !== "stop";
|
|
2263
|
+
// Case 2: the response completed successfully. Compact, but do not retry because
|
|
2264
|
+
// agent.continue() cannot continue from a completed assistant response.
|
|
1795
2265
|
if (!willRetry) {
|
|
1796
2266
|
return await this._runAutoCompaction("overflow", false);
|
|
1797
2267
|
}
|
|
1798
2268
|
if (this._overflowRecoveryAttempted) {
|
|
2269
|
+
const errorMessage = contextOverflow
|
|
2270
|
+
? "Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model."
|
|
2271
|
+
: "Truncated response recovery failed after one compact-and-retry attempt.";
|
|
1799
2272
|
this._emit({
|
|
1800
2273
|
type: "compaction_end",
|
|
1801
2274
|
reason: "overflow",
|
|
1802
2275
|
result: undefined,
|
|
1803
2276
|
aborted: false,
|
|
1804
2277
|
willRetry: false,
|
|
1805
|
-
errorMessage
|
|
2278
|
+
errorMessage,
|
|
2279
|
+
});
|
|
2280
|
+
await this._emitSessionCompactFailed({
|
|
2281
|
+
reason: "overflow",
|
|
2282
|
+
errorMessage,
|
|
2283
|
+
aborted: false,
|
|
2284
|
+
willRetry: false,
|
|
2285
|
+
fromExtension: false,
|
|
1806
2286
|
});
|
|
1807
2287
|
return false;
|
|
1808
2288
|
}
|
|
2289
|
+
// Case 1: remove the failed or truncated message from agent state, compact, and
|
|
2290
|
+
// retry once. The message remains in session history but is excluded from retry context.
|
|
1809
2291
|
this._overflowRecoveryAttempted = true;
|
|
1810
|
-
// Remove the failed or truncated message from agent state. It remains in session history,
|
|
1811
|
-
// but must not be included in the compact-and-retry context.
|
|
1812
2292
|
const messages = this.agent.state.messages;
|
|
1813
2293
|
if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
|
|
1814
2294
|
this.agent.state.messages = messages.slice(0, -1);
|
|
1815
2295
|
}
|
|
1816
2296
|
return await this._runAutoCompaction("overflow", willRetry);
|
|
1817
2297
|
}
|
|
1818
|
-
// Case
|
|
2298
|
+
// Case 3: threshold compaction without retry.
|
|
1819
2299
|
// For error messages or all-zero usage messages, estimate from the last valid response.
|
|
1820
2300
|
// This ensures sessions that hit persistent API errors (e.g. 529) or malformed zero-usage
|
|
1821
2301
|
// responses can still compact and do not reset context accounting.
|
|
@@ -1824,16 +2304,18 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1824
2304
|
if (assistantMessage.stopReason === "error" || directContextTokens === 0) {
|
|
1825
2305
|
const messages = this.agent.state.messages;
|
|
1826
2306
|
const estimate = estimateContextTokens(messages);
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
2307
|
+
// Without provider usage, estimate.tokens is the pure message-size estimate.
|
|
2308
|
+
// Only usage-backed estimates need the stale pre-compaction check.
|
|
2309
|
+
if (estimate.lastUsageIndex !== null) {
|
|
2310
|
+
// Verify the usage source is post-compaction. Kept pre-compaction messages
|
|
2311
|
+
// have stale usage reflecting the old (larger) context and would falsely
|
|
2312
|
+
// trigger compaction right after one just finished.
|
|
2313
|
+
const usageMsg = messages[estimate.lastUsageIndex];
|
|
2314
|
+
if (compactionEntry &&
|
|
2315
|
+
usageMsg.role === "assistant" &&
|
|
2316
|
+
usageMsg.timestamp <= new Date(compactionEntry.timestamp).getTime()) {
|
|
2317
|
+
return false;
|
|
2318
|
+
}
|
|
1837
2319
|
}
|
|
1838
2320
|
contextTokens = estimate.tokens;
|
|
1839
2321
|
}
|
|
@@ -1846,11 +2328,19 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1846
2328
|
return false;
|
|
1847
2329
|
}
|
|
1848
2330
|
/**
|
|
1849
|
-
*
|
|
2331
|
+
* Execute threshold or overflow compaction. Manual compaction uses
|
|
2332
|
+
* `AgentSession.compact()` instead. Both paths call the lower-level `compact()`
|
|
2333
|
+
* function imported from `./compaction/index.ts` after preparation and extension
|
|
2334
|
+
* interception.
|
|
2335
|
+
*
|
|
2336
|
+
* @param reason Automatic trigger selected by `_checkCompaction()`
|
|
2337
|
+
* @param willRetry Whether to continue the interrupted turn after overflow compaction
|
|
2338
|
+
* @returns Whether the post-run loop should call `agent.continue()`
|
|
1850
2339
|
*/
|
|
1851
2340
|
async _runAutoCompaction(reason, willRetry) {
|
|
1852
2341
|
const settings = this.settingsManager.getCompactionSettings();
|
|
1853
2342
|
let started = false;
|
|
2343
|
+
let fromExtension = false;
|
|
1854
2344
|
try {
|
|
1855
2345
|
if (!this.model) {
|
|
1856
2346
|
return false;
|
|
@@ -1865,7 +2355,6 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1865
2355
|
this._autoCompactionAbortController = new AbortController();
|
|
1866
2356
|
started = true;
|
|
1867
2357
|
let extensionCompaction;
|
|
1868
|
-
let fromExtension = false;
|
|
1869
2358
|
if (this._extensionRunner.hasHandlers("session_before_compact")) {
|
|
1870
2359
|
const extensionResult = (await this._extensionRunner.emit({
|
|
1871
2360
|
type: "session_before_compact",
|
|
@@ -1884,6 +2373,12 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1884
2373
|
aborted: true,
|
|
1885
2374
|
willRetry: false,
|
|
1886
2375
|
});
|
|
2376
|
+
await this._emitSessionCompactFailed({
|
|
2377
|
+
reason,
|
|
2378
|
+
aborted: true,
|
|
2379
|
+
willRetry: false,
|
|
2380
|
+
fromExtension: false,
|
|
2381
|
+
});
|
|
1887
2382
|
return false;
|
|
1888
2383
|
}
|
|
1889
2384
|
if (extensionResult?.compaction) {
|
|
@@ -1905,8 +2400,8 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1905
2400
|
details = extensionCompaction.details;
|
|
1906
2401
|
}
|
|
1907
2402
|
else {
|
|
1908
|
-
//
|
|
1909
|
-
const compactResult = await
|
|
2403
|
+
// Shared default summary generator, also used by manual compaction.
|
|
2404
|
+
const compactResult = await this._runDefaultCompaction(preparation, requestModel, apiKey, headers, undefined, this._autoCompactionAbortController.signal, env, reason);
|
|
1910
2405
|
summary = compactResult.summary;
|
|
1911
2406
|
firstKeptEntryId = compactResult.firstKeptEntryId;
|
|
1912
2407
|
tokensBefore = compactResult.tokensBefore;
|
|
@@ -1921,6 +2416,12 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1921
2416
|
aborted: true,
|
|
1922
2417
|
willRetry: false,
|
|
1923
2418
|
});
|
|
2419
|
+
await this._emitSessionCompactFailed({
|
|
2420
|
+
reason,
|
|
2421
|
+
aborted: true,
|
|
2422
|
+
willRetry: false,
|
|
2423
|
+
fromExtension,
|
|
2424
|
+
});
|
|
1924
2425
|
return false;
|
|
1925
2426
|
}
|
|
1926
2427
|
this.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension, usage);
|
|
@@ -1967,15 +2468,23 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1967
2468
|
catch (error) {
|
|
1968
2469
|
const errorMessage = error instanceof Error ? error.message : "compaction failed";
|
|
1969
2470
|
if (started) {
|
|
2471
|
+
const formattedErrorMessage = reason === "overflow"
|
|
2472
|
+
? `Context overflow recovery failed: ${errorMessage}`
|
|
2473
|
+
: `Auto-compaction failed: ${errorMessage}`;
|
|
1970
2474
|
this._emit({
|
|
1971
2475
|
type: "compaction_end",
|
|
1972
2476
|
reason,
|
|
1973
2477
|
result: undefined,
|
|
1974
2478
|
aborted: false,
|
|
1975
2479
|
willRetry: false,
|
|
1976
|
-
errorMessage:
|
|
1977
|
-
|
|
1978
|
-
|
|
2480
|
+
errorMessage: formattedErrorMessage,
|
|
2481
|
+
});
|
|
2482
|
+
await this._emitSessionCompactFailed({
|
|
2483
|
+
reason,
|
|
2484
|
+
errorMessage: formattedErrorMessage,
|
|
2485
|
+
aborted: false,
|
|
2486
|
+
willRetry: false,
|
|
2487
|
+
fromExtension,
|
|
1979
2488
|
});
|
|
1980
2489
|
}
|
|
1981
2490
|
return false;
|
|
@@ -2268,6 +2777,74 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
2268
2777
|
}
|
|
2269
2778
|
}
|
|
2270
2779
|
}
|
|
2780
|
+
// Lo que el PROMPT promete tiene que estar ACTIVO, no solo registrado.
|
|
2781
|
+
//
|
|
2782
|
+
// `sdk.ts` pasa una lista explícita de cuatro tools (read, bash, edit,
|
|
2783
|
+
// write), y eso apaga la rama de arriba que activaría lo recién
|
|
2784
|
+
// registrado. Consecuencia medida: 29 tools construidas e invisibles para
|
|
2785
|
+
// el modelo, mientras el prompt le ordenaba usar cinco de ellas —
|
|
2786
|
+
// "usa la tool goal_new", "Use memory_search when…", "→ browser_*". El
|
|
2787
|
+
// agente las pedía, recibía un error opaco, y desde fuera parecía que "no
|
|
2788
|
+
// usa las funciones".
|
|
2789
|
+
//
|
|
2790
|
+
// Se activa POR PREFIJO y no con una lista de nombres a propósito: una
|
|
2791
|
+
// lista se desincroniza en cuanto alguien añade una tool a una familia, y
|
|
2792
|
+
// esa desincronización silenciosa es justo el defecto que esto arregla.
|
|
2793
|
+
// `_toolRegistry` ya viene filtrado por `isAllowedTool`, así que quien
|
|
2794
|
+
// restrinja tools con `options.tools` sigue mandando.
|
|
2795
|
+
//
|
|
2796
|
+
// `find`, `grep` y `ls` se quedan FUERA deliberadamente: el prompt dice
|
|
2797
|
+
// "usa bash para operaciones de ficheros (ls, grep, find)", así que sus
|
|
2798
|
+
// tools serían un segundo camino para lo mismo — el problema de elección
|
|
2799
|
+
// que ya nos costó trabajo con computer_* y browser_*.
|
|
2800
|
+
// PERO solo cuando nadie ha elegido. Esto es un DEFECTO, no un override:
|
|
2801
|
+
// si el usuario configuró `defaultTools`, o el llamante pasó `tools` o
|
|
2802
|
+
// `noTools`, esa decisión manda y aquí no se toca nada. La primera versión
|
|
2803
|
+
// de este bloque no lo distinguía y rompía cuatro contratos ya probados,
|
|
2804
|
+
// entre ellos "defaultTools se respeta tal cual".
|
|
2805
|
+
//
|
|
2806
|
+
// La señal de "nadie ha elegido" es que la lista entrante sea exactamente
|
|
2807
|
+
// el núcleo que `sdk.ts` usa como valor por defecto. Cualquier otra cosa
|
|
2808
|
+
// —una lista propia, `noTools`, o una selección ya expandida— significa
|
|
2809
|
+
// que alguien decidió, y se respeta.
|
|
2810
|
+
//
|
|
2811
|
+
// Solo hace falta en la PRIMERA construcción: en refrescos posteriores, la
|
|
2812
|
+
// rama de arriba ya activa lo que se acabe de registrar, así que encender
|
|
2813
|
+
// una capacidad en caliente sigue funcionando.
|
|
2814
|
+
const nucleoPorDefecto = ["read", "bash", "edit", "write"].filter(isAllowedTool);
|
|
2815
|
+
const entrante = options?.activeToolNames ?? previousActiveToolNames;
|
|
2816
|
+
const nadieHaElegido = this._allowedToolNames === undefined &&
|
|
2817
|
+
this.settingsManager.getDefaultTools() === undefined &&
|
|
2818
|
+
entrante.length === nucleoPorDefecto.length &&
|
|
2819
|
+
nucleoPorDefecto.every((nombre) => entrante.includes(nombre));
|
|
2820
|
+
const cfg = this.settingsManager.getEngineConfig();
|
|
2821
|
+
const capacidades = [
|
|
2822
|
+
// Sin condición: el prompt las ordena siempre.
|
|
2823
|
+
{ prefijo: "memory_", disponible: true },
|
|
2824
|
+
{ prefijo: "session_search", disponible: true },
|
|
2825
|
+
{ prefijo: "web_", disponible: true },
|
|
2826
|
+
{ prefijo: "ast_", disponible: true },
|
|
2827
|
+
{ prefijo: "update_project_memory", disponible: true },
|
|
2828
|
+
{ prefijo: "scratchpad", disponible: true },
|
|
2829
|
+
{ prefijo: "todo", disponible: true },
|
|
2830
|
+
// Preguntar en vez de adivinar: sin esto el modelo solo puede suponer.
|
|
2831
|
+
{ prefijo: "ask_user_question", disponible: true },
|
|
2832
|
+
// Con condición: cada una tiene su interruptor y su panel.
|
|
2833
|
+
{ prefijo: "browser_", disponible: cfg.computerUse.browser },
|
|
2834
|
+
{ prefijo: "computer_", disponible: cfg.computerUse.enabled },
|
|
2835
|
+
{ prefijo: "goal_", disponible: cfg.goalEngine.enabled },
|
|
2836
|
+
{ prefijo: "workflow", disponible: cfg.workflows.enabled },
|
|
2837
|
+
{ prefijo: "graph_", disponible: cfg.graph.enabled },
|
|
2838
|
+
{ prefijo: "bash_", disponible: true },
|
|
2839
|
+
];
|
|
2840
|
+
for (const { prefijo, disponible } of nadieHaElegido ? capacidades : []) {
|
|
2841
|
+
if (!disponible)
|
|
2842
|
+
continue;
|
|
2843
|
+
for (const nombre of this._toolRegistry.keys()) {
|
|
2844
|
+
if (nombre.startsWith(prefijo))
|
|
2845
|
+
nextActiveToolNames.push(nombre);
|
|
2846
|
+
}
|
|
2847
|
+
}
|
|
2271
2848
|
this.setActiveToolsByName([...new Set(nextActiveToolNames)]);
|
|
2272
2849
|
}
|
|
2273
2850
|
_buildRuntime(options) {
|
|
@@ -2290,13 +2867,164 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
2290
2867
|
}
|
|
2291
2868
|
// Ada Memory Engine tools (memory_add/replace/remove/search,
|
|
2292
2869
|
// session_search, scratchpad, memory_status). Exposed when enabled.
|
|
2870
|
+
// Solo en la sesión principal: un subagente no debe poder mutar la
|
|
2871
|
+
// memoria durable del usuario (anti-recursión, igual que goal_* y
|
|
2872
|
+
// workflow abajo). Hasta ahora la propiedad se sostenía solo por la
|
|
2873
|
+
// allowlist de tools del call site, no por una guardia aquí.
|
|
2293
2874
|
const memoryEngine = this._resourceLoader.getMemoryEngine();
|
|
2294
|
-
if (memoryEngine && this.settingsManager.getProjectMemoryEnabled()) {
|
|
2875
|
+
if (memoryEngine && !this._isSubagentSession && this.settingsManager.getProjectMemoryEnabled()) {
|
|
2295
2876
|
const engineTools = createMemoryEngineTools(memoryEngine);
|
|
2296
2877
|
for (const [name, tool] of Object.entries(engineTools)) {
|
|
2297
2878
|
this._baseToolDefinitions.set(name, tool);
|
|
2298
2879
|
}
|
|
2299
2880
|
}
|
|
2881
|
+
// URLs internas de `read`: memory://, vault://, rule://, audit:// — un
|
|
2882
|
+
// solo `read` en vez de veinte tools (ver core/urls-internas/lector.ts).
|
|
2883
|
+
// `read.ts` es de upstream y el presupuesto de sync está al tope, así que
|
|
2884
|
+
// esto envuelve la definición ya construida en vez de tocar ese fichero.
|
|
2885
|
+
//
|
|
2886
|
+
// memory:// nunca se pasa a un subagente: es la misma anti-recursión que
|
|
2887
|
+
// bloquea memory_* dos bloques más arriba. Sin esto, `read` (que SÍ está
|
|
2888
|
+
// en la allowlist por defecto de todo subagente) sería una puerta trasera
|
|
2889
|
+
// a la memoria durable que ese bloque ya decidió cerrar.
|
|
2890
|
+
const readBase = this._baseToolDefinitions.get("read");
|
|
2891
|
+
if (readBase) {
|
|
2892
|
+
this._baseToolDefinitions.set("read", envolverReadConUrlsInternas(envolverReadConPdf(readBase, this._cwd), {
|
|
2893
|
+
memoryEngine: this._isSubagentSession ? null : memoryEngine,
|
|
2894
|
+
vaultManager: this._resourceLoader.getVaultManager?.() ?? null,
|
|
2895
|
+
cwd: this._cwd,
|
|
2896
|
+
libro: () => this._registro.libro(),
|
|
2897
|
+
}));
|
|
2898
|
+
}
|
|
2899
|
+
// Tools MCP: EXACTAMENTE DOS (mcp_list_tools, mcp_call_tool), nunca una por
|
|
2900
|
+
// herramienta remota — un servidor con 40 tools inflaría el system prompt y
|
|
2901
|
+
// desplazaría el prefijo cacheable. Solo sesión principal: un subagente no
|
|
2902
|
+
// debe poder alcanzar el Jira de la empresa.
|
|
2903
|
+
const mcpManager = this._isSubagentSession ? null : this._resourceLoader.getMcpManager?.();
|
|
2904
|
+
if (mcpManager) {
|
|
2905
|
+
for (const [name, tool] of Object.entries(createMcpTools(mcpManager))) {
|
|
2906
|
+
this._baseToolDefinitions.set(name, tool);
|
|
2907
|
+
}
|
|
2908
|
+
}
|
|
2909
|
+
// El registro de salidas se publica ANTES de crear las tools web, para que
|
|
2910
|
+
// también lo vean los caminos que no nacen aquí — hoy el cliente MCP, que
|
|
2911
|
+
// crea `resource-loader` y no tiene el libro a mano. Sin esto, el informe
|
|
2912
|
+
// para el DPO afirmaba «No hubo transferencias» sobre una sesión que había
|
|
2913
|
+
// hablado con un servidor de terceros. Ver `core/web/registro-red.ts`.
|
|
2914
|
+
publicarAnotarRed((dominio, permitido, motivo) => {
|
|
2915
|
+
void this._registro.libro().anotar({ tipo: "red", dominio, permitido, motivo });
|
|
2916
|
+
});
|
|
2917
|
+
// Tools web. SÍ se registran en subagentes: `deep_research` delega la
|
|
2918
|
+
// búsqueda en ellos, y sin esto ese workflow pedía tools inexistentes.
|
|
2919
|
+
// El acceso no queda abierto: la allowlist del subagente solo las incluye
|
|
2920
|
+
// cuando el script pide `web: true` (ver workflows/agent-runner.ts).
|
|
2921
|
+
for (const [name, tool] of Object.entries(createWebTools({
|
|
2922
|
+
// Vault primero; si está bloqueado o no trae el proveedor cae a la
|
|
2923
|
+
// variable de entorno, que es lo que usa CI. Un `nombreProveedor` por
|
|
2924
|
+
// llamada porque el registro prueba varios (brave, tavily, exa,
|
|
2925
|
+
// searxng, serper), no solo Serper.
|
|
2926
|
+
obtenerClave: crearObtenerClave(() => this._resourceLoader.getVaultManager?.()),
|
|
2927
|
+
// Libro de sesión: qué salió de la máquina y hacia dónde (art. 44 RGPD).
|
|
2928
|
+
// Solo el dominio; la ruta y la query pueden llevar tokens.
|
|
2929
|
+
// Se publica ademas para los caminos de salida que NO nacen aqui: el
|
|
2930
|
+
// cliente MCP lo crea `resource-loader`, que no tiene el libro a mano.
|
|
2931
|
+
// Ver `core/web/registro-red.ts`.
|
|
2932
|
+
anotarRed: (dominio, permitido, motivo) => {
|
|
2933
|
+
void this._registro.libro().anotar({ tipo: "red", dominio, permitido, motivo });
|
|
2934
|
+
},
|
|
2935
|
+
// Búsqueda con la credencial del modelo cuando el proveedor la trae.
|
|
2936
|
+
// Es lo que hace que `web_search` funcione sin configurar nada.
|
|
2937
|
+
buscarNativo: async (consulta, maximo) => {
|
|
2938
|
+
const modelo = this.model;
|
|
2939
|
+
// `null`, no `[]`: no es lo mismo no poder buscar que no encontrar.
|
|
2940
|
+
if (!modelo || !soportaBusquedaNativa(modelo.provider))
|
|
2941
|
+
return null;
|
|
2942
|
+
return buscarConElModelo(consulta, {
|
|
2943
|
+
maxResultados: maximo,
|
|
2944
|
+
completar: async (texto, opciones) => {
|
|
2945
|
+
await this._modelRuntime.completeSimple(modelo, {
|
|
2946
|
+
systemPrompt: "Busca en la web lo que te pidan. Responde en una línea.",
|
|
2947
|
+
messages: [{ role: "user", content: texto }],
|
|
2948
|
+
}, opciones);
|
|
2949
|
+
},
|
|
2950
|
+
});
|
|
2951
|
+
},
|
|
2952
|
+
}))) {
|
|
2953
|
+
this._baseToolDefinitions.set(name, tool);
|
|
2954
|
+
}
|
|
2955
|
+
// Búsqueda y edición estructural (`ast_search`/`ast_edit`). Sin condición,
|
|
2956
|
+
// como las tools web: no dependen de ningún subsistema externo, solo del
|
|
2957
|
+
// compilador de TypeScript que ya está en el bundle. Se registran también
|
|
2958
|
+
// en subagentes: un subagente de refactor necesita la misma precisión.
|
|
2959
|
+
for (const [name, tool] of Object.entries(crearEstructuralTools(this._cwd))) {
|
|
2960
|
+
this._baseToolDefinitions.set(name, tool);
|
|
2961
|
+
}
|
|
2962
|
+
// Tools de navegador. Detrás de `computerUse.enabled`, que hasta ahora era
|
|
2963
|
+
// otro bloque de configuración con panel en el escritorio y nada detrás.
|
|
2964
|
+
// Registrarlas no arranca Chrome: el navegador se abre en la primera tool
|
|
2965
|
+
// que lo necesita. Para subagentes, además hay que pedir `browser: true`.
|
|
2966
|
+
// El navegador NO depende del control del ordenador, y antes sí: se pedía
|
|
2967
|
+
// `computerUse.enabled && computerUse.browser`. Eso dejaba la capacidad más
|
|
2968
|
+
// segura que tenemos —un Chrome con perfil vacío, sin sesiones iniciadas—
|
|
2969
|
+
// detrás del interruptor de la más peligrosa, que viene apagado. Resultado:
|
|
2970
|
+
// en una instalación recién hecha las tools de navegador ni siquiera se
|
|
2971
|
+
// registraban, y la regla del prompt "interactuar con una web → browser_*"
|
|
2972
|
+
// apuntaba al vacío.
|
|
2973
|
+
// La clave sigue viviendo bajo `computerUse` por compatibilidad con las
|
|
2974
|
+
// configuraciones que ya existen; lo que cambia es de qué depende.
|
|
2975
|
+
const configMotor = this.settingsManager.getEngineConfig();
|
|
2976
|
+
if (configMotor.computerUse.browser) {
|
|
2977
|
+
for (const [name, tool] of Object.entries(crearBrowserTools({
|
|
2978
|
+
agentDir: this._resourceLoader.getAgentDir(),
|
|
2979
|
+
// Para que la regla de elección solo nombre lo que existe.
|
|
2980
|
+
ordenador: configMotor.computerUse.enabled,
|
|
2981
|
+
}))) {
|
|
2982
|
+
this._baseToolDefinitions.set(name, tool);
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
// Control del ordenador. El motor es nuestro fork, y corre EN PROCESO: no
|
|
2986
|
+
// hay servidor MCP que registrar. El agente habla con NUESTRAS tools, que
|
|
2987
|
+
// aplican el techo por categoría y las prohibiciones antes de mover nada.
|
|
2988
|
+
// Es un interruptor, sin lista de aplicaciones que mantener: lo que
|
|
2989
|
+
// limita cada aplicación es su categoría, y se calcula sola.
|
|
2990
|
+
if (configMotor.computerUse.enabled) {
|
|
2991
|
+
for (const [name, tool] of Object.entries(crearComputerTools({ navegador: configMotor.computerUse.browser }))) {
|
|
2992
|
+
this._baseToolDefinitions.set(name, tool);
|
|
2993
|
+
}
|
|
2994
|
+
}
|
|
2995
|
+
// Bash interactivo (bash_interactivo/bash_enviar/bash_cerrar). Sin
|
|
2996
|
+
// interruptor de settings a propósito: es la misma categoría de riesgo
|
|
2997
|
+
// que `bash` —pasa por la misma política de aprobación como `ejecucion`—
|
|
2998
|
+
// y ocultarla detrás de una opción solo dejaría al agente sin forma de
|
|
2999
|
+
// responder a un `sudo` o a un `rm -i` en las instalaciones por defecto.
|
|
3000
|
+
for (const [name, tool] of Object.entries(crearInteractivoTools({ cwd: this._cwd }))) {
|
|
3001
|
+
this._baseToolDefinitions.set(name, tool);
|
|
3002
|
+
}
|
|
3003
|
+
// Ada Intelligence Engine: tools del GoalEngine (resuelven el goal
|
|
3004
|
+
// activo por llamada). Registradas si el GoalEngine está habilitado.
|
|
3005
|
+
// Los subagentes NO reciben goal_*/workflow tools: solo el agente
|
|
3006
|
+
// principal orquesta el engine (anti-recursión y control de presupuesto).
|
|
3007
|
+
const goalEngine = this._isSubagentSession ? null : this._resourceLoader.getGoalEngine?.();
|
|
3008
|
+
if (goalEngine && this.settingsManager.getGoalEngineEnabled()) {
|
|
3009
|
+
for (const tool of goalSessionTools(goalEngine, () => this.sessionManager.getSessionId())) {
|
|
3010
|
+
this._baseToolDefinitions.set(tool.name, tool);
|
|
3011
|
+
}
|
|
3012
|
+
// graph_add_nodes: registros puntuales (QA_FINDING/RISK/DECISION).
|
|
3013
|
+
// El spine se auto-registra vía GraphSync — esto es complemento.
|
|
3014
|
+
if (this.settingsManager.getGraphEnabled()) {
|
|
3015
|
+
this._baseToolDefinitions.set("graph_add_nodes", createGraphTool(() => this._resourceLoader.getGraph?.()));
|
|
3016
|
+
}
|
|
3017
|
+
}
|
|
3018
|
+
// Tool `workflow` SOLO en la sesión principal: los subagentes no
|
|
3019
|
+
// orquestan workflows (anti-anidamiento y control de presupuesto).
|
|
3020
|
+
if (!this._isSubagentSession) {
|
|
3021
|
+
this._baseToolDefinitions.set("workflow", createWorkflowTool({
|
|
3022
|
+
getManager: () => this._resourceLoader.getWorkflowManager?.(),
|
|
3023
|
+
confirm: (prompt) => this._confirmWorkflowLaunch(prompt),
|
|
3024
|
+
agentDir: this._resourceLoader.getAgentDir(),
|
|
3025
|
+
sessionId: () => this.sessionManager.getSessionId(),
|
|
3026
|
+
}));
|
|
3027
|
+
}
|
|
2300
3028
|
const extensionsResult = this._resourceLoader.getExtensions();
|
|
2301
3029
|
if (options.flagValues) {
|
|
2302
3030
|
for (const [name, value] of options.flagValues) {
|
|
@@ -2790,6 +3518,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
2790
3518
|
}
|
|
2791
3519
|
}
|
|
2792
3520
|
return {
|
|
3521
|
+
contextBreakdown: this.getContextBreakdown(),
|
|
2793
3522
|
sessionFile: this.sessionFile,
|
|
2794
3523
|
sessionId: this.sessionId,
|
|
2795
3524
|
userMessages,
|
|
@@ -2808,6 +3537,61 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
2808
3537
|
contextUsage: this.getContextUsage(),
|
|
2809
3538
|
};
|
|
2810
3539
|
}
|
|
3540
|
+
/**
|
|
3541
|
+
* Desglose de qué llena la ventana de contexto.
|
|
3542
|
+
*
|
|
3543
|
+
* `getContextUsage()` da un único número; esto dice de dónde sale. Con caché
|
|
3544
|
+
* por prefijo eso no es curiosidad: el coste de tocar algo depende de su
|
|
3545
|
+
* posición, así que saber que las definiciones de tools ocupan 11 K y van
|
|
3546
|
+
* delante te dice que cambiarlas invalida todo lo de detrás.
|
|
3547
|
+
*
|
|
3548
|
+
* El total lo aporta el proveedor y es exacto; el reparto se estima. La
|
|
3549
|
+
* distinción viaja en `totalExacto` para que la interfaz no presente
|
|
3550
|
+
* estimaciones como medidas.
|
|
3551
|
+
*/
|
|
3552
|
+
getContextBreakdown() {
|
|
3553
|
+
const model = this.model;
|
|
3554
|
+
if (!model?.contextWindow)
|
|
3555
|
+
return undefined;
|
|
3556
|
+
const usage = this.getContextUsage();
|
|
3557
|
+
const opciones = this._baseSystemPromptOptions;
|
|
3558
|
+
// Los bloques de memoria y del harness llegan como ficheros de contexto con
|
|
3559
|
+
// una ruta marcada; se separan porque son las dos palancas que el usuario
|
|
3560
|
+
// puede apagar desde ajustes.
|
|
3561
|
+
const esMemoria = (ruta) => ruta.startsWith("<ada-") || ruta.includes("memory");
|
|
3562
|
+
const rutas = opciones?.contextFiles ?? [];
|
|
3563
|
+
const definiciones = [];
|
|
3564
|
+
const mcp = [];
|
|
3565
|
+
for (const [nombre, { definition }] of this._toolDefinitions) {
|
|
3566
|
+
// Nombre + descripción + esquema es lo que de verdad viaja al modelo.
|
|
3567
|
+
const texto = `${nombre}${definition.description ?? ""}${JSON.stringify(definition.parameters ?? {})}`;
|
|
3568
|
+
if (nombre.startsWith("mcp_"))
|
|
3569
|
+
mcp.push(texto);
|
|
3570
|
+
else
|
|
3571
|
+
definiciones.push(texto);
|
|
3572
|
+
}
|
|
3573
|
+
const skills = this._resourceLoader.getSkills().skills.map((skill) => `${skill.name}${skill.description ?? ""}`);
|
|
3574
|
+
return construirDesglose({
|
|
3575
|
+
contextWindow: model.contextWindow,
|
|
3576
|
+
tokensReales: usage?.tokens ?? null,
|
|
3577
|
+
systemPrompt: this.systemPrompt ?? "",
|
|
3578
|
+
toolDefinitions: definiciones,
|
|
3579
|
+
skills,
|
|
3580
|
+
mcpTools: mcp,
|
|
3581
|
+
contextFiles: rutas.filter((f) => !esMemoria(f.path)).map((f) => f.content),
|
|
3582
|
+
memory: rutas.filter((f) => esMemoria(f.path)).map((f) => f.content),
|
|
3583
|
+
conversationTokens: this._estimarTokensConversacion(),
|
|
3584
|
+
});
|
|
3585
|
+
}
|
|
3586
|
+
/** Tokens de los mensajes del hilo activo, con el mismo estimador que compacta. */
|
|
3587
|
+
_estimarTokensConversacion() {
|
|
3588
|
+
let total = 0;
|
|
3589
|
+
for (const entrada of this.sessionManager.getBranch()) {
|
|
3590
|
+
if (entrada.type === "message")
|
|
3591
|
+
total += estimateTokens(entrada.message);
|
|
3592
|
+
}
|
|
3593
|
+
return total;
|
|
3594
|
+
}
|
|
2811
3595
|
getContextUsage() {
|
|
2812
3596
|
const model = this.model;
|
|
2813
3597
|
if (!model)
|