@hoilab/ada-cli 0.84.22 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -2
- package/README.es.md +17 -6
- package/README.md +109 -11
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +30 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +430 -22
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +17 -5
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +11 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +12 -10
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-export.js +15 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -1
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +25 -42
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +19 -1
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +71 -5
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -2
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +4 -5
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +27 -1
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +7 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +8 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +93 -1
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/settings-manager.d.ts +110 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +53 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -3
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -7
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +232 -7
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +8 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +2 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -1
- package/dist/core/workflows/agent-runner.js +131 -44
- package/dist/core/workflows/agent-runner.js.map +1 -1
- package/dist/core/workflows/builtins.d.ts.map +1 -1
- package/dist/core/workflows/builtins.js +1 -0
- package/dist/core/workflows/builtins.js.map +1 -1
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +17 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/engine.js +41 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -1
- package/dist/core/workflows/index.d.ts +8 -0
- package/dist/core/workflows/index.d.ts.map +1 -1
- package/dist/core/workflows/index.js +4 -0
- package/dist/core/workflows/index.js.map +1 -1
- package/dist/core/workflows/manager.d.ts +10 -0
- package/dist/core/workflows/manager.d.ts.map +1 -1
- package/dist/core/workflows/manager.js +35 -11
- package/dist/core/workflows/manager.js.map +1 -1
- package/dist/core/workflows/runtime.d.ts +13 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -1
- package/dist/core/workflows/runtime.js +80 -1
- package/dist/core/workflows/runtime.js.map +1 -1
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/types.d.ts +49 -0
- package/dist/core/workflows/types.d.ts.map +1 -1
- package/dist/core/workflows/types.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +8 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +41 -7
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +9 -86
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -7
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +137 -146
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +10 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +10 -10
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +51 -49
- package/docs/index.md +15 -21
- package/docs/json.md +3 -3
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +7 -7
- package/docs/models.md +12 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +12 -12
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +45 -20
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +11 -11
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/sdk/12-full-control.ts +9 -0
- package/npm-shrinkwrap.json +35 -251
- package/package.json +10 -4
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler: trabajo recurrente o diferido.
|
|
3
|
+
*
|
|
4
|
+
* Copiado del competidor SOLO en los dos detalles que separan un scheduler de
|
|
5
|
+
* un pie de plomo:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Reclamar antes de entregar.** Un job cuya ejecución anterior sigue en
|
|
8
|
+
* vuelo se SALTA, no se encola. Sin esto, un job más lento que su intervalo
|
|
9
|
+
* acumula ejecuciones hasta ahogar la sesión.
|
|
10
|
+
* 2. **`nextRunAt` avanza al reclamar**, no al terminar. Así una ejecución lenta
|
|
11
|
+
* no arrastra el horario.
|
|
12
|
+
*
|
|
13
|
+
* Y tres frenos que a ellos les faltan, cada uno por un riesgo real:
|
|
14
|
+
*
|
|
15
|
+
* - **Nunca hace steer.** Su modo por defecto inyecta el prompt recurrente
|
|
16
|
+
* DENTRO de un turno activo, que es un vector de inyección: lo que diga el
|
|
17
|
+
* texto programado entra a mitad de un razonamiento. Aquí siempre se entrega
|
|
18
|
+
* como turno nuevo, y no es configurable.
|
|
19
|
+
* - **Techo de ejecuciones y caducidad obligatorios.** Un heartbeat desatendido
|
|
20
|
+
* gasta tokens para siempre; ellos no tienen tope alguno.
|
|
21
|
+
* - **Se desactiva solo tras fallos seguidos**, para que un job roto no siga
|
|
22
|
+
* quemando presupuesto indefinidamente.
|
|
23
|
+
*/
|
|
24
|
+
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
25
|
+
import { dirname, join } from "node:path";
|
|
26
|
+
/** Tope duro: ningún job puede programarse sin límite de ejecuciones. */
|
|
27
|
+
const MAX_RUNS_CEILING = 1000;
|
|
28
|
+
const FAILURES_BEFORE_DISABLE = 3;
|
|
29
|
+
export class Scheduler {
|
|
30
|
+
path;
|
|
31
|
+
data = { version: 1, jobs: [], inFlight: [] };
|
|
32
|
+
loaded = false;
|
|
33
|
+
counter = 0;
|
|
34
|
+
constructor(agentDir) {
|
|
35
|
+
this.path = join(agentDir, "scheduler.json");
|
|
36
|
+
}
|
|
37
|
+
load() {
|
|
38
|
+
if (this.loaded)
|
|
39
|
+
return;
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(readFileSync(this.path, "utf-8"));
|
|
42
|
+
if (parsed.version === 1 && Array.isArray(parsed.jobs)) {
|
|
43
|
+
this.data = { version: 1, jobs: parsed.jobs, inFlight: parsed.inFlight ?? [] };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// primer arranque o fichero corrupto
|
|
48
|
+
}
|
|
49
|
+
this.loaded = true;
|
|
50
|
+
}
|
|
51
|
+
save() {
|
|
52
|
+
mkdirSync(dirname(this.path), { recursive: true });
|
|
53
|
+
const tmp = `${this.path}.tmp`;
|
|
54
|
+
writeFileSync(tmp, JSON.stringify(this.data, null, 1), "utf-8");
|
|
55
|
+
renameSync(tmp, this.path);
|
|
56
|
+
}
|
|
57
|
+
list() {
|
|
58
|
+
this.load();
|
|
59
|
+
return this.data.jobs;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Programa un job. `maxRuns` y `expiresAt` son obligatorios a propósito: un
|
|
63
|
+
* scheduler sin techo es una fuga de presupuesto con sintaxis bonita.
|
|
64
|
+
*/
|
|
65
|
+
add(input) {
|
|
66
|
+
this.load();
|
|
67
|
+
if (!input.prompt.trim())
|
|
68
|
+
return { ok: false, error: "El prompt no puede estar vacío." };
|
|
69
|
+
if (!Number.isFinite(input.maxRuns) || input.maxRuns < 1) {
|
|
70
|
+
return { ok: false, error: "maxRuns es obligatorio y debe ser >= 1." };
|
|
71
|
+
}
|
|
72
|
+
if (input.maxRuns > MAX_RUNS_CEILING) {
|
|
73
|
+
return { ok: false, error: `maxRuns no puede superar ${MAX_RUNS_CEILING}.` };
|
|
74
|
+
}
|
|
75
|
+
if (Number.isNaN(Date.parse(input.expiresAt))) {
|
|
76
|
+
return { ok: false, error: "expiresAt es obligatorio y debe ser una fecha ISO." };
|
|
77
|
+
}
|
|
78
|
+
if (this.data.jobs.some((job) => job.id === input.id)) {
|
|
79
|
+
return { ok: false, error: `Ya existe un job con id '${input.id}'.` };
|
|
80
|
+
}
|
|
81
|
+
this.data.jobs.push({
|
|
82
|
+
id: input.id,
|
|
83
|
+
prompt: input.prompt,
|
|
84
|
+
intervalMs: input.intervalMs,
|
|
85
|
+
nextRunAt: input.firstRunAt,
|
|
86
|
+
runsUsed: 0,
|
|
87
|
+
maxRuns: input.maxRuns,
|
|
88
|
+
expiresAt: input.expiresAt,
|
|
89
|
+
enabled: true,
|
|
90
|
+
consecutiveFailures: 0,
|
|
91
|
+
createdAt: input.now ?? new Date().toISOString(),
|
|
92
|
+
});
|
|
93
|
+
this.save();
|
|
94
|
+
return { ok: true };
|
|
95
|
+
}
|
|
96
|
+
remove(id) {
|
|
97
|
+
this.load();
|
|
98
|
+
const before = this.data.jobs.length;
|
|
99
|
+
this.data.jobs = this.data.jobs.filter((job) => job.id !== id);
|
|
100
|
+
if (this.data.jobs.length === before)
|
|
101
|
+
return false;
|
|
102
|
+
this.save();
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Reclama los jobs vencidos.
|
|
107
|
+
*
|
|
108
|
+
* Un job con una ejecución en vuelo se salta: avanza su horario pero no se
|
|
109
|
+
* entrega. Es lo que impide que un job lento se acumule sobre sí mismo.
|
|
110
|
+
*/
|
|
111
|
+
claimDue(nowIso) {
|
|
112
|
+
this.load();
|
|
113
|
+
const now = Date.parse(nowIso);
|
|
114
|
+
const inFlightJobs = new Set(this.data.inFlight.map((entry) => entry.jobId));
|
|
115
|
+
const dispatches = [];
|
|
116
|
+
for (const job of this.data.jobs) {
|
|
117
|
+
if (!job.enabled)
|
|
118
|
+
continue;
|
|
119
|
+
if (Date.parse(job.expiresAt) <= now) {
|
|
120
|
+
job.enabled = false;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (job.runsUsed >= job.maxRuns) {
|
|
124
|
+
job.enabled = false;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (Date.parse(job.nextRunAt) > now)
|
|
128
|
+
continue;
|
|
129
|
+
// El horario avanza SIEMPRE al reclamar, incluso si se salta: una
|
|
130
|
+
// ejecución lenta no debe arrastrar el calendario.
|
|
131
|
+
job.nextRunAt = job.intervalMs
|
|
132
|
+
? new Date(now + job.intervalMs).toISOString()
|
|
133
|
+
: new Date(now + 1).toISOString();
|
|
134
|
+
if (!job.intervalMs)
|
|
135
|
+
job.enabled = false; // ejecución única
|
|
136
|
+
if (inFlightJobs.has(job.id))
|
|
137
|
+
continue; // ya hay una en vuelo: se salta
|
|
138
|
+
const dispatchId = `d-${job.id}-${++this.counter}`;
|
|
139
|
+
this.data.inFlight.push({ dispatchId, jobId: job.id, claimedAt: nowIso });
|
|
140
|
+
job.runsUsed += 1;
|
|
141
|
+
dispatches.push({ dispatchId, job: { ...job } });
|
|
142
|
+
}
|
|
143
|
+
this.save();
|
|
144
|
+
return dispatches;
|
|
145
|
+
}
|
|
146
|
+
/** Cierra una ejecución. Tras varios fallos seguidos el job se desactiva. */
|
|
147
|
+
complete(dispatchId, ok) {
|
|
148
|
+
this.load();
|
|
149
|
+
const index = this.data.inFlight.findIndex((entry) => entry.dispatchId === dispatchId);
|
|
150
|
+
if (index === -1)
|
|
151
|
+
return;
|
|
152
|
+
const [entry] = this.data.inFlight.splice(index, 1);
|
|
153
|
+
const job = this.data.jobs.find((candidate) => candidate.id === entry.jobId);
|
|
154
|
+
if (job) {
|
|
155
|
+
job.consecutiveFailures = ok ? 0 : job.consecutiveFailures + 1;
|
|
156
|
+
if (job.consecutiveFailures >= FAILURES_BEFORE_DISABLE)
|
|
157
|
+
job.enabled = false;
|
|
158
|
+
}
|
|
159
|
+
this.save();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Libera ejecuciones que murieron con el proceso.
|
|
163
|
+
*
|
|
164
|
+
* Sin esto un crash deja el job marcado como "en vuelo" para siempre y no
|
|
165
|
+
* vuelve a entregarse nunca — el mismo fallo que teníamos en los workflows.
|
|
166
|
+
*/
|
|
167
|
+
reconcile(nowIso, staleAfterMs = 30 * 60 * 1000) {
|
|
168
|
+
this.load();
|
|
169
|
+
const now = Date.parse(nowIso);
|
|
170
|
+
const before = this.data.inFlight.length;
|
|
171
|
+
this.data.inFlight = this.data.inFlight.filter((entry) => now - Date.parse(entry.claimedAt) < staleAfterMs);
|
|
172
|
+
const reclaimed = before - this.data.inFlight.length;
|
|
173
|
+
if (reclaimed > 0)
|
|
174
|
+
this.save();
|
|
175
|
+
return reclaimed;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/core/scheduler/scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Scheduler: trabajo recurrente o diferido.\n *\n * Copiado del competidor SOLO en los dos detalles que separan un scheduler de\n * un pie de plomo:\n *\n * 1. **Reclamar antes de entregar.** Un job cuya ejecución anterior sigue en\n * vuelo se SALTA, no se encola. Sin esto, un job más lento que su intervalo\n * acumula ejecuciones hasta ahogar la sesión.\n * 2. **`nextRunAt` avanza al reclamar**, no al terminar. Así una ejecución lenta\n * no arrastra el horario.\n *\n * Y tres frenos que a ellos les faltan, cada uno por un riesgo real:\n *\n * - **Nunca hace steer.** Su modo por defecto inyecta el prompt recurrente\n * DENTRO de un turno activo, que es un vector de inyección: lo que diga el\n * texto programado entra a mitad de un razonamiento. Aquí siempre se entrega\n * como turno nuevo, y no es configurable.\n * - **Techo de ejecuciones y caducidad obligatorios.** Un heartbeat desatendido\n * gasta tokens para siempre; ellos no tienen tope alguno.\n * - **Se desactiva solo tras fallos seguidos**, para que un job roto no siga\n * quemando presupuesto indefinidamente.\n */\n\nimport { mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\n/** Tope duro: ningún job puede programarse sin límite de ejecuciones. */\nconst MAX_RUNS_CEILING = 1000;\nconst FAILURES_BEFORE_DISABLE = 3;\n\nexport interface ScheduledJob {\n\tid: string;\n\t/** Texto que se entrega como turno nuevo. */\n\tprompt: string;\n\t/** Repetición en ms. Ausente = ejecución única. */\n\tintervalMs?: number;\n\tnextRunAt: string;\n\trunsUsed: number;\n\t/** Obligatorio: sin techo no se crea el job. */\n\tmaxRuns: number;\n\t/** ISO. Pasada esta fecha el job no vuelve a correr. */\n\texpiresAt: string;\n\tenabled: boolean;\n\tconsecutiveFailures: number;\n\tcreatedAt: string;\n}\n\nexport interface Dispatch {\n\tdispatchId: string;\n\tjob: ScheduledJob;\n}\n\ninterface SchedulerFile {\n\tversion: 1;\n\tjobs: ScheduledJob[];\n\t/** Ejecuciones reclamadas y aún sin cerrar. */\n\tinFlight: Array<{ dispatchId: string; jobId: string; claimedAt: string }>;\n}\n\nexport class Scheduler {\n\tprivate path: string;\n\tprivate data: SchedulerFile = { version: 1, jobs: [], inFlight: [] };\n\tprivate loaded = false;\n\tprivate counter = 0;\n\n\tconstructor(agentDir: string) {\n\t\tthis.path = join(agentDir, \"scheduler.json\");\n\t}\n\n\tprivate load(): void {\n\t\tif (this.loaded) return;\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(readFileSync(this.path, \"utf-8\")) as SchedulerFile;\n\t\t\tif (parsed.version === 1 && Array.isArray(parsed.jobs)) {\n\t\t\t\tthis.data = { version: 1, jobs: parsed.jobs, inFlight: parsed.inFlight ?? [] };\n\t\t\t}\n\t\t} catch {\n\t\t\t// primer arranque o fichero corrupto\n\t\t}\n\t\tthis.loaded = true;\n\t}\n\n\tprivate save(): void {\n\t\tmkdirSync(dirname(this.path), { recursive: true });\n\t\tconst tmp = `${this.path}.tmp`;\n\t\twriteFileSync(tmp, JSON.stringify(this.data, null, 1), \"utf-8\");\n\t\trenameSync(tmp, this.path);\n\t}\n\n\tlist(): ScheduledJob[] {\n\t\tthis.load();\n\t\treturn this.data.jobs;\n\t}\n\n\t/**\n\t * Programa un job. `maxRuns` y `expiresAt` son obligatorios a propósito: un\n\t * scheduler sin techo es una fuga de presupuesto con sintaxis bonita.\n\t */\n\tadd(input: {\n\t\tid: string;\n\t\tprompt: string;\n\t\tfirstRunAt: string;\n\t\tintervalMs?: number;\n\t\tmaxRuns: number;\n\t\texpiresAt: string;\n\t\tnow?: string;\n\t}): { ok: boolean; error?: string } {\n\t\tthis.load();\n\t\tif (!input.prompt.trim()) return { ok: false, error: \"El prompt no puede estar vacío.\" };\n\t\tif (!Number.isFinite(input.maxRuns) || input.maxRuns < 1) {\n\t\t\treturn { ok: false, error: \"maxRuns es obligatorio y debe ser >= 1.\" };\n\t\t}\n\t\tif (input.maxRuns > MAX_RUNS_CEILING) {\n\t\t\treturn { ok: false, error: `maxRuns no puede superar ${MAX_RUNS_CEILING}.` };\n\t\t}\n\t\tif (Number.isNaN(Date.parse(input.expiresAt))) {\n\t\t\treturn { ok: false, error: \"expiresAt es obligatorio y debe ser una fecha ISO.\" };\n\t\t}\n\t\tif (this.data.jobs.some((job) => job.id === input.id)) {\n\t\t\treturn { ok: false, error: `Ya existe un job con id '${input.id}'.` };\n\t\t}\n\t\tthis.data.jobs.push({\n\t\t\tid: input.id,\n\t\t\tprompt: input.prompt,\n\t\t\tintervalMs: input.intervalMs,\n\t\t\tnextRunAt: input.firstRunAt,\n\t\t\trunsUsed: 0,\n\t\t\tmaxRuns: input.maxRuns,\n\t\t\texpiresAt: input.expiresAt,\n\t\t\tenabled: true,\n\t\t\tconsecutiveFailures: 0,\n\t\t\tcreatedAt: input.now ?? new Date().toISOString(),\n\t\t});\n\t\tthis.save();\n\t\treturn { ok: true };\n\t}\n\n\tremove(id: string): boolean {\n\t\tthis.load();\n\t\tconst before = this.data.jobs.length;\n\t\tthis.data.jobs = this.data.jobs.filter((job) => job.id !== id);\n\t\tif (this.data.jobs.length === before) return false;\n\t\tthis.save();\n\t\treturn true;\n\t}\n\n\t/**\n\t * Reclama los jobs vencidos.\n\t *\n\t * Un job con una ejecución en vuelo se salta: avanza su horario pero no se\n\t * entrega. Es lo que impide que un job lento se acumule sobre sí mismo.\n\t */\n\tclaimDue(nowIso: string): Dispatch[] {\n\t\tthis.load();\n\t\tconst now = Date.parse(nowIso);\n\t\tconst inFlightJobs = new Set(this.data.inFlight.map((entry) => entry.jobId));\n\t\tconst dispatches: Dispatch[] = [];\n\n\t\tfor (const job of this.data.jobs) {\n\t\t\tif (!job.enabled) continue;\n\t\t\tif (Date.parse(job.expiresAt) <= now) {\n\t\t\t\tjob.enabled = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (job.runsUsed >= job.maxRuns) {\n\t\t\t\tjob.enabled = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (Date.parse(job.nextRunAt) > now) continue;\n\n\t\t\t// El horario avanza SIEMPRE al reclamar, incluso si se salta: una\n\t\t\t// ejecución lenta no debe arrastrar el calendario.\n\t\t\tjob.nextRunAt = job.intervalMs\n\t\t\t\t? new Date(now + job.intervalMs).toISOString()\n\t\t\t\t: new Date(now + 1).toISOString();\n\t\t\tif (!job.intervalMs) job.enabled = false; // ejecución única\n\n\t\t\tif (inFlightJobs.has(job.id)) continue; // ya hay una en vuelo: se salta\n\n\t\t\tconst dispatchId = `d-${job.id}-${++this.counter}`;\n\t\t\tthis.data.inFlight.push({ dispatchId, jobId: job.id, claimedAt: nowIso });\n\t\t\tjob.runsUsed += 1;\n\t\t\tdispatches.push({ dispatchId, job: { ...job } });\n\t\t}\n\t\tthis.save();\n\t\treturn dispatches;\n\t}\n\n\t/** Cierra una ejecución. Tras varios fallos seguidos el job se desactiva. */\n\tcomplete(dispatchId: string, ok: boolean): void {\n\t\tthis.load();\n\t\tconst index = this.data.inFlight.findIndex((entry) => entry.dispatchId === dispatchId);\n\t\tif (index === -1) return;\n\t\tconst [entry] = this.data.inFlight.splice(index, 1);\n\t\tconst job = this.data.jobs.find((candidate) => candidate.id === entry.jobId);\n\t\tif (job) {\n\t\t\tjob.consecutiveFailures = ok ? 0 : job.consecutiveFailures + 1;\n\t\t\tif (job.consecutiveFailures >= FAILURES_BEFORE_DISABLE) job.enabled = false;\n\t\t}\n\t\tthis.save();\n\t}\n\n\t/**\n\t * Libera ejecuciones que murieron con el proceso.\n\t *\n\t * Sin esto un crash deja el job marcado como \"en vuelo\" para siempre y no\n\t * vuelve a entregarse nunca — el mismo fallo que teníamos en los workflows.\n\t */\n\treconcile(nowIso: string, staleAfterMs = 30 * 60 * 1000): number {\n\t\tthis.load();\n\t\tconst now = Date.parse(nowIso);\n\t\tconst before = this.data.inFlight.length;\n\t\tthis.data.inFlight = this.data.inFlight.filter((entry) => now - Date.parse(entry.claimedAt) < staleAfterMs);\n\t\tconst reclaimed = before - this.data.inFlight.length;\n\t\tif (reclaimed > 0) this.save();\n\t\treturn reclaimed;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cerrar las llamadas que un turno abortado deja a medias — desde el paquete
|
|
3
|
+
* que sí llega al cliente.
|
|
4
|
+
*
|
|
5
|
+
* EL FALLO. Los proveedores rechazan un historial donde un `tool_use` no tiene
|
|
6
|
+
* su `tool_result`. Si al abortar el par queda a medias, la conversación entera
|
|
7
|
+
* deja de poder reanudarse: un Ctrl-C en el momento equivocado no estropea el
|
|
8
|
+
* turno, estropea la sesión.
|
|
9
|
+
*
|
|
10
|
+
* Medido sobre el historial real, antes de arreglarlo:
|
|
11
|
+
*
|
|
12
|
+
* user:text | assistant:toolCall <- huérfana
|
|
13
|
+
*
|
|
14
|
+
* y después:
|
|
15
|
+
*
|
|
16
|
+
* user:text | assistant:toolCall | toolResult:text
|
|
17
|
+
*
|
|
18
|
+
* POR QUÉ AQUÍ Y NO SOLO EN EL BUCLE. El arreglo existe también en
|
|
19
|
+
* `packages/agent/src/agent-loop.ts`, pero ESE PAQUETE NO VIAJA: el tarball de
|
|
20
|
+
* `@hoilab/ada-cli` resuelve `@earendil-works/pi-agent-core` del registro de
|
|
21
|
+
* npm, así que quien instala recibe el de upstream, sin el arreglo. Medido con
|
|
22
|
+
* `npm pack --dry-run`: cero ficheros de esos paquetes en el tarball.
|
|
23
|
+
*
|
|
24
|
+
* ES IDEMPOTENTE POR CONSTRUCCIÓN, que es lo que permite tener las dos. Solo
|
|
25
|
+
* cierra lo que sigue abierto: si el bucle ya lo hizo —al ejecutar desde el
|
|
26
|
+
* árbol de fuentes— no encuentra huérfanas y no añade nada. Nunca duplica.
|
|
27
|
+
*/
|
|
28
|
+
interface LlamadaAbierta {
|
|
29
|
+
id: string;
|
|
30
|
+
nombre: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Las llamadas de `mensaje` que el historial no ha cerrado todavía.
|
|
34
|
+
*
|
|
35
|
+
* OJO CON LA FORMA, porque la primera versión de esta comprobación miró la
|
|
36
|
+
* equivocada y no medía nada: una llamada es un BLOQUE dentro del contenido de
|
|
37
|
+
* un mensaje `assistant`, pero un resultado es un MENSAJE entero con
|
|
38
|
+
* `role: "toolResult"` y su `toolCallId` al nivel del mensaje, no un bloque.
|
|
39
|
+
*/
|
|
40
|
+
export declare function llamadasSinCerrar(historial: readonly unknown[], mensaje: unknown): LlamadaAbierta[];
|
|
41
|
+
/**
|
|
42
|
+
* Cierra en `historial` las llamadas que `mensaje` dejó abiertas.
|
|
43
|
+
*
|
|
44
|
+
* Devuelve cuántas cerró: cero es la respuesta normal y significa que no había
|
|
45
|
+
* nada que cerrar, no que no se haya mirado.
|
|
46
|
+
*/
|
|
47
|
+
export declare function cerrarLlamadasAbiertas(historial: unknown[], mensaje: unknown): number;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=cerrar-llamadas-abiertas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cerrar-llamadas-abiertas.d.ts","sourceRoot":"","sources":["../../../src/core/sesion/cerrar-llamadas-abiertas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AASH,UAAU,cAAc;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAgBnG;AAcD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAIrF","sourcesContent":["/**\n * Cerrar las llamadas que un turno abortado deja a medias — desde el paquete\n * que sí llega al cliente.\n *\n * EL FALLO. Los proveedores rechazan un historial donde un `tool_use` no tiene\n * su `tool_result`. Si al abortar el par queda a medias, la conversación entera\n * deja de poder reanudarse: un Ctrl-C en el momento equivocado no estropea el\n * turno, estropea la sesión.\n *\n * Medido sobre el historial real, antes de arreglarlo:\n *\n * user:text | assistant:toolCall <- huérfana\n *\n * y después:\n *\n * user:text | assistant:toolCall | toolResult:text\n *\n * POR QUÉ AQUÍ Y NO SOLO EN EL BUCLE. El arreglo existe también en\n * `packages/agent/src/agent-loop.ts`, pero ESE PAQUETE NO VIAJA: el tarball de\n * `@hoilab/ada-cli` resuelve `@earendil-works/pi-agent-core` del registro de\n * npm, así que quien instala recibe el de upstream, sin el arreglo. Medido con\n * `npm pack --dry-run`: cero ficheros de esos paquetes en el tarball.\n *\n * ES IDEMPOTENTE POR CONSTRUCCIÓN, que es lo que permite tener las dos. Solo\n * cierra lo que sigue abierto: si el bucle ya lo hizo —al ejecutar desde el\n * árbol de fuentes— no encuentra huérfanas y no añade nada. Nunca duplica.\n */\n\n/** Lo mínimo que hace falta de un mensaje para decidir. */\ninterface MensajeMinimo {\n\trole?: string;\n\ttoolCallId?: unknown;\n\tcontent?: unknown;\n}\n\ninterface LlamadaAbierta {\n\tid: string;\n\tnombre: string;\n}\n\n/**\n * Las llamadas de `mensaje` que el historial no ha cerrado todavía.\n *\n * OJO CON LA FORMA, porque la primera versión de esta comprobación miró la\n * equivocada y no medía nada: una llamada es un BLOQUE dentro del contenido de\n * un mensaje `assistant`, pero un resultado es un MENSAJE entero con\n * `role: \"toolResult\"` y su `toolCallId` al nivel del mensaje, no un bloque.\n */\nexport function llamadasSinCerrar(historial: readonly unknown[], mensaje: unknown): LlamadaAbierta[] {\n\tconst m = mensaje as MensajeMinimo;\n\tconst bloques = Array.isArray(m?.content) ? (m.content as Array<Record<string, unknown>>) : [];\n\tconst abiertas: LlamadaAbierta[] = [];\n\tfor (const b of bloques) {\n\t\tif (b.type === \"toolCall\" && typeof b.id === \"string\") {\n\t\t\tabiertas.push({ id: b.id, nombre: typeof b.name === \"string\" ? b.name : \"desconocida\" });\n\t\t}\n\t}\n\tif (abiertas.length === 0) return [];\n\n\tconst cerradas = new Set<string>();\n\tfor (const entrada of historial as MensajeMinimo[]) {\n\t\tif (entrada?.role === \"toolResult\" && typeof entrada.toolCallId === \"string\") cerradas.add(entrada.toolCallId);\n\t}\n\treturn abiertas.filter((l) => !cerradas.has(l.id));\n}\n\n/** El resultado sintético que habría producido la ejecución al ver la señal. */\nfunction resultadoDeAborto(llamada: LlamadaAbierta): Record<string, unknown> {\n\treturn {\n\t\trole: \"toolResult\",\n\t\ttoolCallId: llamada.id,\n\t\ttoolName: llamada.nombre,\n\t\tcontent: [{ type: \"text\", text: \"Operation aborted\" }],\n\t\tisError: true,\n\t\ttimestamp: Date.now(),\n\t};\n}\n\n/**\n * Cierra en `historial` las llamadas que `mensaje` dejó abiertas.\n *\n * Devuelve cuántas cerró: cero es la respuesta normal y significa que no había\n * nada que cerrar, no que no se haya mirado.\n */\nexport function cerrarLlamadasAbiertas(historial: unknown[], mensaje: unknown): number {\n\tconst abiertas = llamadasSinCerrar(historial, mensaje);\n\tfor (const llamada of abiertas) historial.push(resultadoDeAborto(llamada));\n\treturn abiertas.length;\n}\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cerrar las llamadas que un turno abortado deja a medias — desde el paquete
|
|
3
|
+
* que sí llega al cliente.
|
|
4
|
+
*
|
|
5
|
+
* EL FALLO. Los proveedores rechazan un historial donde un `tool_use` no tiene
|
|
6
|
+
* su `tool_result`. Si al abortar el par queda a medias, la conversación entera
|
|
7
|
+
* deja de poder reanudarse: un Ctrl-C en el momento equivocado no estropea el
|
|
8
|
+
* turno, estropea la sesión.
|
|
9
|
+
*
|
|
10
|
+
* Medido sobre el historial real, antes de arreglarlo:
|
|
11
|
+
*
|
|
12
|
+
* user:text | assistant:toolCall <- huérfana
|
|
13
|
+
*
|
|
14
|
+
* y después:
|
|
15
|
+
*
|
|
16
|
+
* user:text | assistant:toolCall | toolResult:text
|
|
17
|
+
*
|
|
18
|
+
* POR QUÉ AQUÍ Y NO SOLO EN EL BUCLE. El arreglo existe también en
|
|
19
|
+
* `packages/agent/src/agent-loop.ts`, pero ESE PAQUETE NO VIAJA: el tarball de
|
|
20
|
+
* `@hoilab/ada-cli` resuelve `@earendil-works/pi-agent-core` del registro de
|
|
21
|
+
* npm, así que quien instala recibe el de upstream, sin el arreglo. Medido con
|
|
22
|
+
* `npm pack --dry-run`: cero ficheros de esos paquetes en el tarball.
|
|
23
|
+
*
|
|
24
|
+
* ES IDEMPOTENTE POR CONSTRUCCIÓN, que es lo que permite tener las dos. Solo
|
|
25
|
+
* cierra lo que sigue abierto: si el bucle ya lo hizo —al ejecutar desde el
|
|
26
|
+
* árbol de fuentes— no encuentra huérfanas y no añade nada. Nunca duplica.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Las llamadas de `mensaje` que el historial no ha cerrado todavía.
|
|
30
|
+
*
|
|
31
|
+
* OJO CON LA FORMA, porque la primera versión de esta comprobación miró la
|
|
32
|
+
* equivocada y no medía nada: una llamada es un BLOQUE dentro del contenido de
|
|
33
|
+
* un mensaje `assistant`, pero un resultado es un MENSAJE entero con
|
|
34
|
+
* `role: "toolResult"` y su `toolCallId` al nivel del mensaje, no un bloque.
|
|
35
|
+
*/
|
|
36
|
+
export function llamadasSinCerrar(historial, mensaje) {
|
|
37
|
+
const m = mensaje;
|
|
38
|
+
const bloques = Array.isArray(m?.content) ? m.content : [];
|
|
39
|
+
const abiertas = [];
|
|
40
|
+
for (const b of bloques) {
|
|
41
|
+
if (b.type === "toolCall" && typeof b.id === "string") {
|
|
42
|
+
abiertas.push({ id: b.id, nombre: typeof b.name === "string" ? b.name : "desconocida" });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (abiertas.length === 0)
|
|
46
|
+
return [];
|
|
47
|
+
const cerradas = new Set();
|
|
48
|
+
for (const entrada of historial) {
|
|
49
|
+
if (entrada?.role === "toolResult" && typeof entrada.toolCallId === "string")
|
|
50
|
+
cerradas.add(entrada.toolCallId);
|
|
51
|
+
}
|
|
52
|
+
return abiertas.filter((l) => !cerradas.has(l.id));
|
|
53
|
+
}
|
|
54
|
+
/** El resultado sintético que habría producido la ejecución al ver la señal. */
|
|
55
|
+
function resultadoDeAborto(llamada) {
|
|
56
|
+
return {
|
|
57
|
+
role: "toolResult",
|
|
58
|
+
toolCallId: llamada.id,
|
|
59
|
+
toolName: llamada.nombre,
|
|
60
|
+
content: [{ type: "text", text: "Operation aborted" }],
|
|
61
|
+
isError: true,
|
|
62
|
+
timestamp: Date.now(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Cierra en `historial` las llamadas que `mensaje` dejó abiertas.
|
|
67
|
+
*
|
|
68
|
+
* Devuelve cuántas cerró: cero es la respuesta normal y significa que no había
|
|
69
|
+
* nada que cerrar, no que no se haya mirado.
|
|
70
|
+
*/
|
|
71
|
+
export function cerrarLlamadasAbiertas(historial, mensaje) {
|
|
72
|
+
const abiertas = llamadasSinCerrar(historial, mensaje);
|
|
73
|
+
for (const llamada of abiertas)
|
|
74
|
+
historial.push(resultadoDeAborto(llamada));
|
|
75
|
+
return abiertas.length;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cerrar-llamadas-abiertas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cerrar-llamadas-abiertas.js","sourceRoot":"","sources":["../../../src/core/sesion/cerrar-llamadas-abiertas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA6B,EAAE,OAAgB,EAAoB;IACpG,MAAM,CAAC,GAAG,OAAwB,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,OAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1F,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,SAA4B,EAAE,CAAC;QACpD,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,CACnD;AAED,oFAAgF;AAChF,SAAS,iBAAiB,CAAC,OAAuB,EAA2B;IAC5E,OAAO;QACN,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACrB,CAAC;AAAA,CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAoB,EAAE,OAAgB,EAAU;IACtF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,MAAM,CAAC;AAAA,CACvB","sourcesContent":["/**\n * Cerrar las llamadas que un turno abortado deja a medias — desde el paquete\n * que sí llega al cliente.\n *\n * EL FALLO. Los proveedores rechazan un historial donde un `tool_use` no tiene\n * su `tool_result`. Si al abortar el par queda a medias, la conversación entera\n * deja de poder reanudarse: un Ctrl-C en el momento equivocado no estropea el\n * turno, estropea la sesión.\n *\n * Medido sobre el historial real, antes de arreglarlo:\n *\n * user:text | assistant:toolCall <- huérfana\n *\n * y después:\n *\n * user:text | assistant:toolCall | toolResult:text\n *\n * POR QUÉ AQUÍ Y NO SOLO EN EL BUCLE. El arreglo existe también en\n * `packages/agent/src/agent-loop.ts`, pero ESE PAQUETE NO VIAJA: el tarball de\n * `@hoilab/ada-cli` resuelve `@earendil-works/pi-agent-core` del registro de\n * npm, así que quien instala recibe el de upstream, sin el arreglo. Medido con\n * `npm pack --dry-run`: cero ficheros de esos paquetes en el tarball.\n *\n * ES IDEMPOTENTE POR CONSTRUCCIÓN, que es lo que permite tener las dos. Solo\n * cierra lo que sigue abierto: si el bucle ya lo hizo —al ejecutar desde el\n * árbol de fuentes— no encuentra huérfanas y no añade nada. Nunca duplica.\n */\n\n/** Lo mínimo que hace falta de un mensaje para decidir. */\ninterface MensajeMinimo {\n\trole?: string;\n\ttoolCallId?: unknown;\n\tcontent?: unknown;\n}\n\ninterface LlamadaAbierta {\n\tid: string;\n\tnombre: string;\n}\n\n/**\n * Las llamadas de `mensaje` que el historial no ha cerrado todavía.\n *\n * OJO CON LA FORMA, porque la primera versión de esta comprobación miró la\n * equivocada y no medía nada: una llamada es un BLOQUE dentro del contenido de\n * un mensaje `assistant`, pero un resultado es un MENSAJE entero con\n * `role: \"toolResult\"` y su `toolCallId` al nivel del mensaje, no un bloque.\n */\nexport function llamadasSinCerrar(historial: readonly unknown[], mensaje: unknown): LlamadaAbierta[] {\n\tconst m = mensaje as MensajeMinimo;\n\tconst bloques = Array.isArray(m?.content) ? (m.content as Array<Record<string, unknown>>) : [];\n\tconst abiertas: LlamadaAbierta[] = [];\n\tfor (const b of bloques) {\n\t\tif (b.type === \"toolCall\" && typeof b.id === \"string\") {\n\t\t\tabiertas.push({ id: b.id, nombre: typeof b.name === \"string\" ? b.name : \"desconocida\" });\n\t\t}\n\t}\n\tif (abiertas.length === 0) return [];\n\n\tconst cerradas = new Set<string>();\n\tfor (const entrada of historial as MensajeMinimo[]) {\n\t\tif (entrada?.role === \"toolResult\" && typeof entrada.toolCallId === \"string\") cerradas.add(entrada.toolCallId);\n\t}\n\treturn abiertas.filter((l) => !cerradas.has(l.id));\n}\n\n/** El resultado sintético que habría producido la ejecución al ver la señal. */\nfunction resultadoDeAborto(llamada: LlamadaAbierta): Record<string, unknown> {\n\treturn {\n\t\trole: \"toolResult\",\n\t\ttoolCallId: llamada.id,\n\t\ttoolName: llamada.nombre,\n\t\tcontent: [{ type: \"text\", text: \"Operation aborted\" }],\n\t\tisError: true,\n\t\ttimestamp: Date.now(),\n\t};\n}\n\n/**\n * Cierra en `historial` las llamadas que `mensaje` dejó abiertas.\n *\n * Devuelve cuántas cerró: cero es la respuesta normal y significa que no había\n * nada que cerrar, no que no se haya mirado.\n */\nexport function cerrarLlamadasAbiertas(historial: unknown[], mensaje: unknown): number {\n\tconst abiertas = llamadasSinCerrar(historial, mensaje);\n\tfor (const llamada of abiertas) historial.push(resultadoDeAborto(llamada));\n\treturn abiertas.length;\n}\n"]}
|
|
@@ -85,6 +85,19 @@ export interface Settings {
|
|
|
85
85
|
shellCommandPrefix?: string;
|
|
86
86
|
npmCommand?: string[];
|
|
87
87
|
collapseChangelog?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* INERTE desde que se quitaron las dos cosas que gobernaba.
|
|
90
|
+
*
|
|
91
|
+
* Eran el aviso de instalación a `https://pi.dev/api/report-install` y las
|
|
92
|
+
* cabeceras de atribución por defecto (`HTTP-Referer: https://ada.dev` y
|
|
93
|
+
* compañía). Las dos salían activadas y las dos contaban a un tercero algo
|
|
94
|
+
* que nadie había pedido contar, así que se fueron.
|
|
95
|
+
*
|
|
96
|
+
* El campo se conserva porque es superficie pública del SDK y quitarlo
|
|
97
|
+
* rompería a quien lo escriba; ponerlo a `true` o a `false` ya no cambia
|
|
98
|
+
* nada. Se dice aquí en vez de dejar un interruptor que finge gobernar algo:
|
|
99
|
+
* una casilla que no hace nada es peor que una casilla que no existe.
|
|
100
|
+
*/
|
|
88
101
|
enableInstallTelemetry?: boolean;
|
|
89
102
|
enableAnalytics?: boolean;
|
|
90
103
|
trackingId?: string;
|
|
@@ -107,6 +120,7 @@ export interface Settings {
|
|
|
107
120
|
permissions?: Record<string, unknown>;
|
|
108
121
|
graph?: Record<string, unknown>;
|
|
109
122
|
computerUse?: Record<string, unknown>;
|
|
123
|
+
advisor?: Record<string, unknown>;
|
|
110
124
|
memoryMode?: "policy" | "inject";
|
|
111
125
|
memoryPrivacyLevel?: "strict" | "balanced" | "permissive";
|
|
112
126
|
memoryAuditEnabled?: boolean;
|
|
@@ -316,6 +330,13 @@ export declare class SettingsManager {
|
|
|
316
330
|
setFullscreenScrollbar(mode: ScrollViewScrollbar): void;
|
|
317
331
|
getImageAutoResize(): boolean;
|
|
318
332
|
getProjectMemoryEnabled(): boolean;
|
|
333
|
+
/** Servidores MCP declarados por el usuario (`mcpServers` en settings). */
|
|
334
|
+
getMcpServers(): Record<string, import("./mcp/manager.ts").McpServerConfig> | undefined;
|
|
335
|
+
/**
|
|
336
|
+
* Optimizador de caché de prompt (activo por defecto). Reordena el prefijo
|
|
337
|
+
* estable y rellena las claves de caché; ver core/prompt-cache/.
|
|
338
|
+
*/
|
|
339
|
+
getPromptCacheEnabled(): boolean;
|
|
319
340
|
setProjectMemoryEnabled(enabled: boolean): void;
|
|
320
341
|
getMemoryMode(): "policy" | "inject";
|
|
321
342
|
setMemoryMode(mode: "policy" | "inject"): void;
|
|
@@ -357,13 +378,96 @@ export declare class SettingsManager {
|
|
|
357
378
|
failureInjectMaxEntries: number;
|
|
358
379
|
};
|
|
359
380
|
/** Config completa del Ada Intelligence Engine (bloques con defaults). */
|
|
381
|
+
/**
|
|
382
|
+
* Configuración del engine con los defaults ya aplicados.
|
|
383
|
+
*
|
|
384
|
+
* El tipo de retorno se INFIERE a propósito. La anotación anterior era
|
|
385
|
+
* `Record<string, unknown>` por bloque, que tiraba toda la forma: quien
|
|
386
|
+
* llamaba veía `cfg.workflows.budget` como `unknown` y tenía que castear
|
|
387
|
+
* para leer un valor que este mismo método acababa de construir. Un tipo
|
|
388
|
+
* que obliga a castear no está documentando nada.
|
|
389
|
+
*/
|
|
360
390
|
getEngineConfig(): {
|
|
361
|
-
workflows:
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
391
|
+
workflows: {
|
|
392
|
+
enabled: boolean;
|
|
393
|
+
concurrency: number;
|
|
394
|
+
maxAgentsPerRun: number;
|
|
395
|
+
budget: {
|
|
396
|
+
perRun: {
|
|
397
|
+
tokens: number;
|
|
398
|
+
usd: number;
|
|
399
|
+
};
|
|
400
|
+
perAgent: {
|
|
401
|
+
tokens: number;
|
|
402
|
+
};
|
|
403
|
+
perPhase: {} | null;
|
|
404
|
+
};
|
|
405
|
+
timeouts: {
|
|
406
|
+
agentMs: number;
|
|
407
|
+
scriptMs: number;
|
|
408
|
+
drainMs: number;
|
|
409
|
+
};
|
|
410
|
+
judge: {
|
|
411
|
+
model: string;
|
|
412
|
+
crossModel: boolean;
|
|
413
|
+
cheapForIntermediate: boolean;
|
|
414
|
+
};
|
|
415
|
+
models: {
|
|
416
|
+
cheap: string | null;
|
|
417
|
+
main: string | null;
|
|
418
|
+
judge: string | null;
|
|
419
|
+
cheapCandidates: string[];
|
|
420
|
+
cheapThinking: string | null;
|
|
421
|
+
mainThinking: string | null;
|
|
422
|
+
judgeThinking: string | null;
|
|
423
|
+
};
|
|
424
|
+
autoResume: boolean;
|
|
425
|
+
web: {
|
|
426
|
+
searchProvider: string;
|
|
427
|
+
fetch: string;
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
goalEngine: {
|
|
431
|
+
enabled: boolean;
|
|
432
|
+
maxTurns: number;
|
|
433
|
+
repeatDetector: number;
|
|
434
|
+
stopFile: string;
|
|
435
|
+
budgetTokens: number;
|
|
436
|
+
autopilot: boolean;
|
|
437
|
+
allowShipThrough: boolean;
|
|
438
|
+
askBefore: {};
|
|
439
|
+
workTier: string;
|
|
440
|
+
planOnly: boolean;
|
|
441
|
+
};
|
|
442
|
+
hooks: {
|
|
443
|
+
enabled: boolean;
|
|
444
|
+
failClosedHeadless: boolean;
|
|
445
|
+
events: Record<string, {
|
|
446
|
+
matcher?: string | undefined;
|
|
447
|
+
command: string;
|
|
448
|
+
timeoutMs?: number | undefined;
|
|
449
|
+
}[]>;
|
|
450
|
+
};
|
|
451
|
+
permissions: {
|
|
452
|
+
level: string;
|
|
453
|
+
destructiveGuards: boolean;
|
|
454
|
+
envGuards: boolean;
|
|
455
|
+
denied: unknown;
|
|
456
|
+
};
|
|
457
|
+
graph: {
|
|
458
|
+
enabled: boolean;
|
|
459
|
+
minConfidence: number;
|
|
460
|
+
gates: boolean;
|
|
461
|
+
};
|
|
462
|
+
computerUse: {
|
|
463
|
+
enabled: boolean;
|
|
464
|
+
backend: string;
|
|
465
|
+
browser: boolean;
|
|
466
|
+
};
|
|
467
|
+
advisor: {
|
|
468
|
+
enabled: boolean;
|
|
469
|
+
cadaCuantosTurnos: number;
|
|
470
|
+
};
|
|
367
471
|
};
|
|
368
472
|
getWorkflowsEnabled(): boolean;
|
|
369
473
|
setWorkflowsEnabled(v: boolean): void;
|