@hoilab/ada-cli 0.84.21 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -2
- package/README.es.md +174 -0
- package/README.md +203 -658
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +85 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +862 -78
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +21 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +21 -6
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +56 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +100 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +32 -50
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +21 -4
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +219 -55
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -1
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +40 -12
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +41 -8
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +19 -7
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +58 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +326 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +156 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -12
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +234 -12
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +28 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +88 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +312 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +283 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +503 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +26 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +18 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +122 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +351 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +62 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +380 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +191 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +180 -56
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +709 -75
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +25 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +62 -51
- package/docs/index.md +15 -21
- package/docs/json.md +10 -5
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +18 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +21 -15
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +47 -22
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +14 -13
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/12-full-control.ts +9 -0
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +35 -261
- package/package.json +9 -3
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ada Prompt Cache — optimizador de aciertos de caché de prompt.
|
|
3
|
+
*
|
|
4
|
+
* Se registra como extensión inline por defecto. Vive entero en ficheros
|
|
5
|
+
* propiedad de Ada, así que no cuesta nada contra el presupuesto de sync, y usa
|
|
6
|
+
* la API pública de extensiones, que es estable.
|
|
7
|
+
*
|
|
8
|
+
* Qué hace, y por qué cada cosa:
|
|
9
|
+
*
|
|
10
|
+
* - Reordena el system prompt para que lo estable quede delante (`stabilize`).
|
|
11
|
+
* Con caché por prefijo, el coste de un cambio depende de su POSICIÓN, no de
|
|
12
|
+
* su tamaño.
|
|
13
|
+
* - Rellena `prompt_cache_key` donde el core no lo pone: endpoints de terceros
|
|
14
|
+
* con retención corta, que es justo el caso de un gateway propio.
|
|
15
|
+
* - Quita `prompt_cache_retention` de endpoints que no lo soportan (un 400 tumba
|
|
16
|
+
* la petición entera) y APRENDE de los 400 que ve.
|
|
17
|
+
* - Repara el orden de TTL de `cache_control` de Anthropic.
|
|
18
|
+
* - Mide el hit rate real por proveedor y lo muestra en el footer. Sin medición
|
|
19
|
+
* todo lo anterior es fe.
|
|
20
|
+
*
|
|
21
|
+
* Se desactiva con `promptCache: false` en settings o `ADA_NO_PROMPT_CACHE=1`.
|
|
22
|
+
*/
|
|
23
|
+
import { diagnose, missingCompatFlags, renderDiagnosis } from "./diagnostics.js";
|
|
24
|
+
import { normalizeAnthropicTtlOrder, withCacheKey, withRetentionGuard } from "./payload.js";
|
|
25
|
+
import { stabilizeSystemPrompt } from "./stabilize.js";
|
|
26
|
+
import { CacheStatsStore, formatStats, readCacheUsage } from "./stats.js";
|
|
27
|
+
export { diagnose } from "./diagnostics.js";
|
|
28
|
+
export { stabilizeSystemPrompt } from "./stabilize.js";
|
|
29
|
+
export { CacheStatsStore, readCacheUsage } from "./stats.js";
|
|
30
|
+
function today() {
|
|
31
|
+
return new Date().toISOString().slice(0, 10);
|
|
32
|
+
}
|
|
33
|
+
/** Etiqueta corta por familia, para el footer. */
|
|
34
|
+
function labelFor(modelId) {
|
|
35
|
+
const id = modelId.toLowerCase();
|
|
36
|
+
if (id.includes("deepseek"))
|
|
37
|
+
return "DS cache";
|
|
38
|
+
if (id.includes("claude"))
|
|
39
|
+
return "Claude cache";
|
|
40
|
+
if (id.includes("gemini"))
|
|
41
|
+
return "Gemini cache";
|
|
42
|
+
if (id.includes("gpt") || id.includes("o1") || id.includes("o3"))
|
|
43
|
+
return "OpenAI cache";
|
|
44
|
+
return "cache";
|
|
45
|
+
}
|
|
46
|
+
export function createPromptCacheExtension(options) {
|
|
47
|
+
return (pi) => {
|
|
48
|
+
if (options.disabled)
|
|
49
|
+
return;
|
|
50
|
+
const store = new CacheStatsStore(options.agentDir);
|
|
51
|
+
void store.load();
|
|
52
|
+
/** Modelos a los que este proceso ya vio rechazar la retención. */
|
|
53
|
+
const retentionRejected = new Set();
|
|
54
|
+
/** ¿La última petición llevó `prompt_cache_retention`? Ver el 400 de abajo. */
|
|
55
|
+
let sentRetentionLastRequest = false;
|
|
56
|
+
let currentModelKey = "unknown";
|
|
57
|
+
let integrityRolledBack = false;
|
|
58
|
+
// ── 1. Prefijo estable ────────────────────────────────────────────────
|
|
59
|
+
pi.on("before_agent_start", async (event) => {
|
|
60
|
+
const opts = event.systemPromptOptions;
|
|
61
|
+
const result = stabilizeSystemPrompt({
|
|
62
|
+
prompt: event.systemPrompt,
|
|
63
|
+
customPrompt: opts.customPrompt,
|
|
64
|
+
appendSystemPrompt: opts.appendSystemPrompt,
|
|
65
|
+
promptGuidelines: opts.promptGuidelines,
|
|
66
|
+
contextFiles: opts.contextFiles,
|
|
67
|
+
});
|
|
68
|
+
if (result.rolledBack)
|
|
69
|
+
integrityRolledBack = true;
|
|
70
|
+
if (result.lifted === 0)
|
|
71
|
+
return undefined;
|
|
72
|
+
return { systemPrompt: result.prompt };
|
|
73
|
+
});
|
|
74
|
+
// ── 2. Payload ────────────────────────────────────────────────────────
|
|
75
|
+
pi.on("before_provider_request", async (event) => {
|
|
76
|
+
const payload = event.payload;
|
|
77
|
+
if (!payload || typeof payload !== "object")
|
|
78
|
+
return undefined;
|
|
79
|
+
const record = payload;
|
|
80
|
+
const api = typeof record.__api === "string" ? record.__api : inferApi(record);
|
|
81
|
+
let next = withCacheKey(record, {
|
|
82
|
+
api,
|
|
83
|
+
sessionId: currentSessionId,
|
|
84
|
+
baseUrl: currentBaseUrl,
|
|
85
|
+
});
|
|
86
|
+
next = withRetentionGuard(next, {
|
|
87
|
+
api,
|
|
88
|
+
baseUrl: currentBaseUrl,
|
|
89
|
+
supportsLongRetention: currentSupportsLongRetention,
|
|
90
|
+
retentionRejected: retentionRejected.has(currentModelKey),
|
|
91
|
+
});
|
|
92
|
+
if (api === "anthropic-messages")
|
|
93
|
+
next = normalizeAnthropicTtlOrder(next);
|
|
94
|
+
// Se recuerda si viajó retención, para poder atribuir un 400 posterior.
|
|
95
|
+
sentRetentionLastRequest = typeof next.prompt_cache_retention === "string";
|
|
96
|
+
return next === record ? undefined : next;
|
|
97
|
+
});
|
|
98
|
+
// ── 3. Aprender de los errores del proveedor ──────────────────────────
|
|
99
|
+
pi.on("after_provider_response", async (event) => {
|
|
100
|
+
// El cuerpo no viaja en este evento, así que no se puede clasificar el
|
|
101
|
+
// error por texto. Se usa la única evidencia disponible: un 400 JUSTO
|
|
102
|
+
// DESPUÉS de haber enviado retención. Sin esa condición, un 400 por
|
|
103
|
+
// cualquier otro motivo (contexto demasiado largo, argumento inválido)
|
|
104
|
+
// desactivaría la retención de ese modelo para siempre.
|
|
105
|
+
if (event.status === 400 && sentRetentionLastRequest) {
|
|
106
|
+
retentionRejected.add(currentModelKey);
|
|
107
|
+
}
|
|
108
|
+
sentRetentionLastRequest = false;
|
|
109
|
+
});
|
|
110
|
+
// ── 4. Medición ───────────────────────────────────────────────────────
|
|
111
|
+
let currentSessionId;
|
|
112
|
+
let currentBaseUrl;
|
|
113
|
+
let currentSupportsLongRetention;
|
|
114
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
115
|
+
currentSessionId = ctx?.sessionManager?.getSessionId?.();
|
|
116
|
+
});
|
|
117
|
+
pi.on("message_end", async (event, ctx) => {
|
|
118
|
+
const message = event.message;
|
|
119
|
+
if (!message || message.role !== "assistant")
|
|
120
|
+
return;
|
|
121
|
+
// Un reintento del host emite message_end con usage a cero: contarlo
|
|
122
|
+
// hundiría el ratio con peticiones que nunca llegaron al proveedor.
|
|
123
|
+
const stop = message.stopReason;
|
|
124
|
+
if (stop === "error" || stop === "aborted")
|
|
125
|
+
return;
|
|
126
|
+
const usage = readCacheUsage(message.usage);
|
|
127
|
+
if (usage.totalInput === 0)
|
|
128
|
+
return;
|
|
129
|
+
const stats = store.record(currentModelKey, today(), usage);
|
|
130
|
+
const text = formatStats(labelFor(currentModelKey), stats);
|
|
131
|
+
if (text)
|
|
132
|
+
ctx?.ui?.setStatus("ada-prompt-cache", integrityRolledBack ? `${text} ⚠️ integridad` : text);
|
|
133
|
+
});
|
|
134
|
+
pi.on("model_select", async (event) => {
|
|
135
|
+
const model = event
|
|
136
|
+
.model;
|
|
137
|
+
if (!model)
|
|
138
|
+
return;
|
|
139
|
+
currentModelKey = `${model.provider ?? "?"}/${model.id ?? "?"}`;
|
|
140
|
+
currentBaseUrl = model.baseUrl;
|
|
141
|
+
const compat = model.compat;
|
|
142
|
+
currentSupportsLongRetention = compat?.supportsLongCacheRetention;
|
|
143
|
+
});
|
|
144
|
+
pi.on("session_shutdown", async () => {
|
|
145
|
+
await store.flush();
|
|
146
|
+
});
|
|
147
|
+
// ── 5. Comando ────────────────────────────────────────────────────────
|
|
148
|
+
pi.registerCommand("cache", {
|
|
149
|
+
description: "Estadísticas y diagnóstico de la caché de prompt",
|
|
150
|
+
handler: async (args, cmdCtx) => {
|
|
151
|
+
const say = (text) => cmdCtx.ui?.notify(text, "info");
|
|
152
|
+
const sub = args.trim().split(/\s+/)[0] || "stats";
|
|
153
|
+
const stats = store.get(currentModelKey);
|
|
154
|
+
if (sub === "reset") {
|
|
155
|
+
store.reset();
|
|
156
|
+
say("Contadores de caché reiniciados.");
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (sub === "doctor") {
|
|
160
|
+
const d = diagnose(stats, {
|
|
161
|
+
api: inferApiFromKey(currentModelKey),
|
|
162
|
+
baseUrl: currentBaseUrl,
|
|
163
|
+
supportsLongRetention: currentSupportsLongRetention,
|
|
164
|
+
});
|
|
165
|
+
const missing = missingCompatFlags({
|
|
166
|
+
api: inferApiFromKey(currentModelKey),
|
|
167
|
+
baseUrl: currentBaseUrl,
|
|
168
|
+
supportsLongRetention: currentSupportsLongRetention,
|
|
169
|
+
});
|
|
170
|
+
const extra = missing.length ? `\n\nFlags de compat que faltan: ${missing.join(", ")}` : "";
|
|
171
|
+
say(`${currentModelKey}\n\n${renderDiagnosis(d)}${extra}`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
say(stats ? formatStats(labelFor(currentModelKey), stats) : "Sin datos de caché todavía.");
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function inferApi(payload) {
|
|
180
|
+
if ("anthropic_version" in payload || "system" in payload)
|
|
181
|
+
return "anthropic-messages";
|
|
182
|
+
if ("input" in payload && !("messages" in payload))
|
|
183
|
+
return "openai-responses";
|
|
184
|
+
return "openai-completions";
|
|
185
|
+
}
|
|
186
|
+
function inferApiFromKey(modelKey) {
|
|
187
|
+
return modelKey.toLowerCase().includes("claude") ? "anthropic-messages" : "openai-completions";
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/prompt-cache/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Ada Prompt Cache — optimizador de aciertos de caché de prompt.\n *\n * Se registra como extensión inline por defecto. Vive entero en ficheros\n * propiedad de Ada, así que no cuesta nada contra el presupuesto de sync, y usa\n * la API pública de extensiones, que es estable.\n *\n * Qué hace, y por qué cada cosa:\n *\n * - Reordena el system prompt para que lo estable quede delante (`stabilize`).\n * Con caché por prefijo, el coste de un cambio depende de su POSICIÓN, no de\n * su tamaño.\n * - Rellena `prompt_cache_key` donde el core no lo pone: endpoints de terceros\n * con retención corta, que es justo el caso de un gateway propio.\n * - Quita `prompt_cache_retention` de endpoints que no lo soportan (un 400 tumba\n * la petición entera) y APRENDE de los 400 que ve.\n * - Repara el orden de TTL de `cache_control` de Anthropic.\n * - Mide el hit rate real por proveedor y lo muestra en el footer. Sin medición\n * todo lo anterior es fe.\n *\n * Se desactiva con `promptCache: false` en settings o `ADA_NO_PROMPT_CACHE=1`.\n */\n\nimport type { ExtensionAPI } from \"../extensions/types.ts\";\nimport { diagnose, missingCompatFlags, renderDiagnosis } from \"./diagnostics.ts\";\nimport { normalizeAnthropicTtlOrder, withCacheKey, withRetentionGuard } from \"./payload.ts\";\nimport { stabilizeSystemPrompt } from \"./stabilize.ts\";\nimport { CacheStatsStore, formatStats, readCacheUsage } from \"./stats.ts\";\n\nexport { diagnose } from \"./diagnostics.ts\";\nexport { stabilizeSystemPrompt } from \"./stabilize.ts\";\nexport { CacheStatsStore, readCacheUsage } from \"./stats.ts\";\n\nfunction today(): string {\n\treturn new Date().toISOString().slice(0, 10);\n}\n\n/** Etiqueta corta por familia, para el footer. */\nfunction labelFor(modelId: string): string {\n\tconst id = modelId.toLowerCase();\n\tif (id.includes(\"deepseek\")) return \"DS cache\";\n\tif (id.includes(\"claude\")) return \"Claude cache\";\n\tif (id.includes(\"gemini\")) return \"Gemini cache\";\n\tif (id.includes(\"gpt\") || id.includes(\"o1\") || id.includes(\"o3\")) return \"OpenAI cache\";\n\treturn \"cache\";\n}\n\nexport interface PromptCacheOptions {\n\tagentDir: string;\n\t/** Desactiva todo (settings o variable de entorno). */\n\tdisabled?: boolean;\n}\n\nexport function createPromptCacheExtension(options: PromptCacheOptions) {\n\treturn (pi: ExtensionAPI): void => {\n\t\tif (options.disabled) return;\n\n\t\tconst store = new CacheStatsStore(options.agentDir);\n\t\tvoid store.load();\n\n\t\t/** Modelos a los que este proceso ya vio rechazar la retención. */\n\t\tconst retentionRejected = new Set<string>();\n\t\t/** ¿La última petición llevó `prompt_cache_retention`? Ver el 400 de abajo. */\n\t\tlet sentRetentionLastRequest = false;\n\t\tlet currentModelKey = \"unknown\";\n\t\tlet integrityRolledBack = false;\n\n\t\t// ── 1. Prefijo estable ────────────────────────────────────────────────\n\t\tpi.on(\"before_agent_start\", async (event) => {\n\t\t\tconst opts = event.systemPromptOptions;\n\t\t\tconst result = stabilizeSystemPrompt({\n\t\t\t\tprompt: event.systemPrompt,\n\t\t\t\tcustomPrompt: opts.customPrompt,\n\t\t\t\tappendSystemPrompt: opts.appendSystemPrompt,\n\t\t\t\tpromptGuidelines: opts.promptGuidelines,\n\t\t\t\tcontextFiles: opts.contextFiles,\n\t\t\t});\n\t\t\tif (result.rolledBack) integrityRolledBack = true;\n\t\t\tif (result.lifted === 0) return undefined;\n\t\t\treturn { systemPrompt: result.prompt };\n\t\t});\n\n\t\t// ── 2. Payload ────────────────────────────────────────────────────────\n\t\tpi.on(\"before_provider_request\", async (event) => {\n\t\t\tconst payload = event.payload;\n\t\t\tif (!payload || typeof payload !== \"object\") return undefined;\n\t\t\tconst record = payload as Record<string, unknown>;\n\t\t\tconst api = typeof record.__api === \"string\" ? record.__api : inferApi(record);\n\n\t\t\tlet next = withCacheKey(record, {\n\t\t\t\tapi,\n\t\t\t\tsessionId: currentSessionId,\n\t\t\t\tbaseUrl: currentBaseUrl,\n\t\t\t});\n\t\t\tnext = withRetentionGuard(next, {\n\t\t\t\tapi,\n\t\t\t\tbaseUrl: currentBaseUrl,\n\t\t\t\tsupportsLongRetention: currentSupportsLongRetention,\n\t\t\t\tretentionRejected: retentionRejected.has(currentModelKey),\n\t\t\t});\n\t\t\tif (api === \"anthropic-messages\") next = normalizeAnthropicTtlOrder(next);\n\t\t\t// Se recuerda si viajó retención, para poder atribuir un 400 posterior.\n\t\t\tsentRetentionLastRequest = typeof next.prompt_cache_retention === \"string\";\n\t\t\treturn next === record ? undefined : next;\n\t\t});\n\n\t\t// ── 3. Aprender de los errores del proveedor ──────────────────────────\n\t\tpi.on(\"after_provider_response\", async (event) => {\n\t\t\t// El cuerpo no viaja en este evento, así que no se puede clasificar el\n\t\t\t// error por texto. Se usa la única evidencia disponible: un 400 JUSTO\n\t\t\t// DESPUÉS de haber enviado retención. Sin esa condición, un 400 por\n\t\t\t// cualquier otro motivo (contexto demasiado largo, argumento inválido)\n\t\t\t// desactivaría la retención de ese modelo para siempre.\n\t\t\tif (event.status === 400 && sentRetentionLastRequest) {\n\t\t\t\tretentionRejected.add(currentModelKey);\n\t\t\t}\n\t\t\tsentRetentionLastRequest = false;\n\t\t});\n\n\t\t// ── 4. Medición ───────────────────────────────────────────────────────\n\t\tlet currentSessionId: string | undefined;\n\t\tlet currentBaseUrl: string | undefined;\n\t\tlet currentSupportsLongRetention: boolean | undefined;\n\n\t\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\t\tcurrentSessionId = ctx?.sessionManager?.getSessionId?.();\n\t\t});\n\n\t\tpi.on(\"message_end\", async (event, ctx) => {\n\t\t\tconst message = event.message as unknown as Record<string, unknown> | undefined;\n\t\t\tif (!message || message.role !== \"assistant\") return;\n\t\t\t// Un reintento del host emite message_end con usage a cero: contarlo\n\t\t\t// hundiría el ratio con peticiones que nunca llegaron al proveedor.\n\t\t\tconst stop = message.stopReason;\n\t\t\tif (stop === \"error\" || stop === \"aborted\") return;\n\t\t\tconst usage = readCacheUsage(message.usage);\n\t\t\tif (usage.totalInput === 0) return;\n\t\t\tconst stats = store.record(currentModelKey, today(), usage);\n\t\t\tconst text = formatStats(labelFor(currentModelKey), stats);\n\t\t\tif (text) ctx?.ui?.setStatus(\"ada-prompt-cache\", integrityRolledBack ? `${text} ⚠️ integridad` : text);\n\t\t});\n\n\t\tpi.on(\"model_select\", async (event) => {\n\t\t\tconst model = (event as { model?: { id?: string; provider?: string; baseUrl?: string; compat?: unknown } })\n\t\t\t\t.model;\n\t\t\tif (!model) return;\n\t\t\tcurrentModelKey = `${model.provider ?? \"?\"}/${model.id ?? \"?\"}`;\n\t\t\tcurrentBaseUrl = model.baseUrl;\n\t\t\tconst compat = model.compat as { supportsLongCacheRetention?: boolean } | undefined;\n\t\t\tcurrentSupportsLongRetention = compat?.supportsLongCacheRetention;\n\t\t});\n\n\t\tpi.on(\"session_shutdown\", async () => {\n\t\t\tawait store.flush();\n\t\t});\n\n\t\t// ── 5. Comando ────────────────────────────────────────────────────────\n\t\tpi.registerCommand(\"cache\", {\n\t\t\tdescription: \"Estadísticas y diagnóstico de la caché de prompt\",\n\t\t\thandler: async (args: string, cmdCtx): Promise<void> => {\n\t\t\t\tconst say = (text: string) => cmdCtx.ui?.notify(text, \"info\");\n\t\t\t\tconst sub = args.trim().split(/\\s+/)[0] || \"stats\";\n\t\t\t\tconst stats = store.get(currentModelKey);\n\t\t\t\tif (sub === \"reset\") {\n\t\t\t\t\tstore.reset();\n\t\t\t\t\tsay(\"Contadores de caché reiniciados.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (sub === \"doctor\") {\n\t\t\t\t\tconst d = diagnose(stats, {\n\t\t\t\t\t\tapi: inferApiFromKey(currentModelKey),\n\t\t\t\t\t\tbaseUrl: currentBaseUrl,\n\t\t\t\t\t\tsupportsLongRetention: currentSupportsLongRetention,\n\t\t\t\t\t});\n\t\t\t\t\tconst missing = missingCompatFlags({\n\t\t\t\t\t\tapi: inferApiFromKey(currentModelKey),\n\t\t\t\t\t\tbaseUrl: currentBaseUrl,\n\t\t\t\t\t\tsupportsLongRetention: currentSupportsLongRetention,\n\t\t\t\t\t});\n\t\t\t\t\tconst extra = missing.length ? `\\n\\nFlags de compat que faltan: ${missing.join(\", \")}` : \"\";\n\t\t\t\t\tsay(`${currentModelKey}\\n\\n${renderDiagnosis(d)}${extra}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsay(stats ? formatStats(labelFor(currentModelKey), stats) : \"Sin datos de caché todavía.\");\n\t\t\t},\n\t\t});\n\t};\n}\n\nfunction inferApi(payload: Record<string, unknown>): string {\n\tif (\"anthropic_version\" in payload || \"system\" in payload) return \"anthropic-messages\";\n\tif (\"input\" in payload && !(\"messages\" in payload)) return \"openai-responses\";\n\treturn \"openai-completions\";\n}\n\nfunction inferApiFromKey(modelKey: string): string {\n\treturn modelKey.toLowerCase().includes(\"claude\") ? \"anthropic-messages\" : \"openai-completions\";\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutaciones del payload de proveedor para maximizar aciertos de caché.
|
|
3
|
+
*
|
|
4
|
+
* Tres cosas, cada una por un motivo distinto:
|
|
5
|
+
*
|
|
6
|
+
* 1. `prompt_cache_key` de respaldo. Ada core ya lo pone, pero solo para la URL
|
|
7
|
+
* oficial de OpenAI o cuando hay retención larga declarada
|
|
8
|
+
* (`openai-completions.ts`). Un endpoint de terceros con retención corta —
|
|
9
|
+
* justo el caso de un gateway propio o un proxy — se queda sin clave, y sin
|
|
10
|
+
* clave el backend no puede enrutar a un worker con la caché caliente.
|
|
11
|
+
*
|
|
12
|
+
* 2. Seguridad de `prompt_cache_retention`. Enviarlo a un endpoint que no lo
|
|
13
|
+
* entiende devuelve 400 y tumba la petición entera. Se envía solo cuando se
|
|
14
|
+
* sabe que se soporta, y se APRENDE de los 400 vistos.
|
|
15
|
+
*
|
|
16
|
+
* 3. Orden de TTL en `cache_control` de Anthropic. La API rechaza un breakpoint
|
|
17
|
+
* de 1h que venga detrás de uno de 5m. Es un fallo de orden, no de contenido,
|
|
18
|
+
* y se puede reparar sin cambiar nada semántico.
|
|
19
|
+
*/
|
|
20
|
+
export declare function clampCacheKey(sessionId: string | undefined): string | undefined;
|
|
21
|
+
/** ¿El payload ya trae una clave efectiva? Nunca se pisa la del host. */
|
|
22
|
+
export declare function hasCacheKey(payload: Record<string, unknown>): boolean;
|
|
23
|
+
export interface PayloadContext {
|
|
24
|
+
api: string;
|
|
25
|
+
baseUrl?: string;
|
|
26
|
+
sessionId?: string;
|
|
27
|
+
/** `compat.supportsLongCacheRetention` del modelo. */
|
|
28
|
+
supportsLongRetention?: boolean;
|
|
29
|
+
/** Modelos a los que este proceso ya vio devolver 400 por retención. */
|
|
30
|
+
retentionRejected?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Añade la clave de caché si falta. No sobrescribe nunca: una clave que cambia
|
|
34
|
+
* entre peticiones es PEOR que ninguna, porque fragmenta el enrutado.
|
|
35
|
+
*/
|
|
36
|
+
export declare function withCacheKey(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown>;
|
|
37
|
+
/**
|
|
38
|
+
* Decide si `prompt_cache_retention` puede viajar.
|
|
39
|
+
*
|
|
40
|
+
* El orden importa: la evidencia empírica (un 400 ya visto) manda sobre la
|
|
41
|
+
* configuración del usuario. Si no, un opt-in equivocado contra un endpoint que
|
|
42
|
+
* lo rechaza devuelve 400 para siempre.
|
|
43
|
+
*/
|
|
44
|
+
export declare function retentionAllowed(ctx: PayloadContext): boolean;
|
|
45
|
+
export declare function withRetentionGuard(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown>;
|
|
46
|
+
/** ¿Este error del proveedor es "no entiendo prompt_cache_retention"? */
|
|
47
|
+
export declare function isRetentionUnsupportedError(text: string): boolean;
|
|
48
|
+
/** ¿Es el error de Anthropic por orden de TTL en cache_control? */
|
|
49
|
+
export declare function isAnthropicTtlOrderError(text: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Recorre los bloques con `cache_control` en ORDEN DE CABLE (tools → system →
|
|
52
|
+
* messages) y degrada cualquier TTL largo que venga detrás de uno corto.
|
|
53
|
+
*
|
|
54
|
+
* Degradar es seguro: se pierde duración de caché, no corrección. Reordenar los
|
|
55
|
+
* breakpoints sí cambiaría qué se cachea, y eso no es nuestro para decidir.
|
|
56
|
+
*/
|
|
57
|
+
export declare function normalizeAnthropicTtlOrder(payload: Record<string, unknown>): Record<string, unknown>;
|
|
58
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../src/core/prompt-cache/payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI/E;AAED,0EAAyE;AACzE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAErE;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,yEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAKD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM3G;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAI7D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKjH;AAED,0EAAyE;AACzE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,oEAAmE;AACnE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAOD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCpG","sourcesContent":["/**\n * Mutaciones del payload de proveedor para maximizar aciertos de caché.\n *\n * Tres cosas, cada una por un motivo distinto:\n *\n * 1. `prompt_cache_key` de respaldo. Ada core ya lo pone, pero solo para la URL\n * oficial de OpenAI o cuando hay retención larga declarada\n * (`openai-completions.ts`). Un endpoint de terceros con retención corta —\n * justo el caso de un gateway propio o un proxy — se queda sin clave, y sin\n * clave el backend no puede enrutar a un worker con la caché caliente.\n *\n * 2. Seguridad de `prompt_cache_retention`. Enviarlo a un endpoint que no lo\n * entiende devuelve 400 y tumba la petición entera. Se envía solo cuando se\n * sabe que se soporta, y se APRENDE de los 400 vistos.\n *\n * 3. Orden de TTL en `cache_control` de Anthropic. La API rechaza un breakpoint\n * de 1h que venga detrás de uno de 5m. Es un fallo de orden, no de contenido,\n * y se puede reparar sin cambiar nada semántico.\n */\n\n/** Límite documentado de OpenAI para prompt_cache_key. */\nconst MAX_CACHE_KEY_LENGTH = 64;\n\nexport function clampCacheKey(sessionId: string | undefined): string | undefined {\n\tconst trimmed = sessionId?.trim();\n\tif (!trimmed) return undefined;\n\treturn [...trimmed].slice(0, MAX_CACHE_KEY_LENGTH).join(\"\");\n}\n\n/** ¿El payload ya trae una clave efectiva? Nunca se pisa la del host. */\nexport function hasCacheKey(payload: Record<string, unknown>): boolean {\n\treturn typeof payload.prompt_cache_key === \"string\" || typeof payload.promptCacheKey === \"string\";\n}\n\nexport interface PayloadContext {\n\tapi: string;\n\tbaseUrl?: string;\n\tsessionId?: string;\n\t/** `compat.supportsLongCacheRetention` del modelo. */\n\tsupportsLongRetention?: boolean;\n\t/** Modelos a los que este proceso ya vio devolver 400 por retención. */\n\tretentionRejected?: boolean;\n}\n\n/** APIs con forma OpenAI donde `prompt_cache_key` significa algo. */\nconst OPENAI_SHAPED = new Set([\"openai-completions\", \"openai-responses\"]);\n\n/**\n * Añade la clave de caché si falta. No sobrescribe nunca: una clave que cambia\n * entre peticiones es PEOR que ninguna, porque fragmenta el enrutado.\n */\nexport function withCacheKey(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown> {\n\tif (!OPENAI_SHAPED.has(ctx.api)) return payload;\n\tif (hasCacheKey(payload)) return payload;\n\tconst key = clampCacheKey(ctx.sessionId);\n\tif (!key) return payload;\n\treturn { ...payload, prompt_cache_key: key };\n}\n\n/**\n * Decide si `prompt_cache_retention` puede viajar.\n *\n * El orden importa: la evidencia empírica (un 400 ya visto) manda sobre la\n * configuración del usuario. Si no, un opt-in equivocado contra un endpoint que\n * lo rechaza devuelve 400 para siempre.\n */\nexport function retentionAllowed(ctx: PayloadContext): boolean {\n\tif (ctx.baseUrl?.includes(\"api.openai.com\")) return true;\n\tif (ctx.retentionRejected) return false;\n\treturn ctx.supportsLongRetention === true;\n}\n\nexport function withRetentionGuard(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown> {\n\tif (typeof payload.prompt_cache_retention !== \"string\") return payload;\n\tif (retentionAllowed(ctx)) return payload;\n\tconst { prompt_cache_retention: _dropped, ...rest } = payload;\n\treturn rest;\n}\n\n/** ¿Este error del proveedor es \"no entiendo prompt_cache_retention\"? */\nexport function isRetentionUnsupportedError(text: string): boolean {\n\treturn /prompt_cache_retention/i.test(text) && /unsupported|unknown|unrecognized|invalid/i.test(text);\n}\n\n/** ¿Es el error de Anthropic por orden de TTL en cache_control? */\nexport function isAnthropicTtlOrderError(text: string): boolean {\n\treturn /cache_control/i.test(text) && /ttl/i.test(text) && /order|1h|5m/i.test(text);\n}\n\ninterface CacheControlHolder {\n\tcache_control?: { type?: string; ttl?: string };\n\t[key: string]: unknown;\n}\n\n/**\n * Recorre los bloques con `cache_control` en ORDEN DE CABLE (tools → system →\n * messages) y degrada cualquier TTL largo que venga detrás de uno corto.\n *\n * Degradar es seguro: se pierde duración de caché, no corrección. Reordenar los\n * breakpoints sí cambiaría qué se cachea, y eso no es nuestro para decidir.\n */\nexport function normalizeAnthropicTtlOrder(payload: Record<string, unknown>): Record<string, unknown> {\n\tconst holders: CacheControlHolder[] = [];\n\tconst collect = (value: unknown): void => {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const item of value) collect(item);\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== \"object\") return;\n\t\tconst record = value as CacheControlHolder;\n\t\tif (record.cache_control && typeof record.cache_control === \"object\") holders.push(record);\n\t\tfor (const nested of Object.values(record)) {\n\t\t\tif (nested && typeof nested === \"object\") collect(nested);\n\t\t}\n\t};\n\t// Orden de cable, no de objeto: es el que valida Anthropic.\n\tcollect(payload.tools);\n\tcollect(payload.system);\n\tcollect(payload.messages);\n\n\tlet seenShort = false;\n\tlet changed = false;\n\tfor (const holder of holders) {\n\t\tconst ttl = holder.cache_control?.ttl;\n\t\tif (ttl === \"5m\" || ttl === undefined) {\n\t\t\tseenShort = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ttl === \"1h\" && seenShort) {\n\t\t\tholder.cache_control = { ...holder.cache_control, ttl: \"5m\" };\n\t\t\tchanged = true;\n\t\t}\n\t}\n\treturn changed ? { ...payload } : payload;\n}\n"]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutaciones del payload de proveedor para maximizar aciertos de caché.
|
|
3
|
+
*
|
|
4
|
+
* Tres cosas, cada una por un motivo distinto:
|
|
5
|
+
*
|
|
6
|
+
* 1. `prompt_cache_key` de respaldo. Ada core ya lo pone, pero solo para la URL
|
|
7
|
+
* oficial de OpenAI o cuando hay retención larga declarada
|
|
8
|
+
* (`openai-completions.ts`). Un endpoint de terceros con retención corta —
|
|
9
|
+
* justo el caso de un gateway propio o un proxy — se queda sin clave, y sin
|
|
10
|
+
* clave el backend no puede enrutar a un worker con la caché caliente.
|
|
11
|
+
*
|
|
12
|
+
* 2. Seguridad de `prompt_cache_retention`. Enviarlo a un endpoint que no lo
|
|
13
|
+
* entiende devuelve 400 y tumba la petición entera. Se envía solo cuando se
|
|
14
|
+
* sabe que se soporta, y se APRENDE de los 400 vistos.
|
|
15
|
+
*
|
|
16
|
+
* 3. Orden de TTL en `cache_control` de Anthropic. La API rechaza un breakpoint
|
|
17
|
+
* de 1h que venga detrás de uno de 5m. Es un fallo de orden, no de contenido,
|
|
18
|
+
* y se puede reparar sin cambiar nada semántico.
|
|
19
|
+
*/
|
|
20
|
+
/** Límite documentado de OpenAI para prompt_cache_key. */
|
|
21
|
+
const MAX_CACHE_KEY_LENGTH = 64;
|
|
22
|
+
export function clampCacheKey(sessionId) {
|
|
23
|
+
const trimmed = sessionId?.trim();
|
|
24
|
+
if (!trimmed)
|
|
25
|
+
return undefined;
|
|
26
|
+
return [...trimmed].slice(0, MAX_CACHE_KEY_LENGTH).join("");
|
|
27
|
+
}
|
|
28
|
+
/** ¿El payload ya trae una clave efectiva? Nunca se pisa la del host. */
|
|
29
|
+
export function hasCacheKey(payload) {
|
|
30
|
+
return typeof payload.prompt_cache_key === "string" || typeof payload.promptCacheKey === "string";
|
|
31
|
+
}
|
|
32
|
+
/** APIs con forma OpenAI donde `prompt_cache_key` significa algo. */
|
|
33
|
+
const OPENAI_SHAPED = new Set(["openai-completions", "openai-responses"]);
|
|
34
|
+
/**
|
|
35
|
+
* Añade la clave de caché si falta. No sobrescribe nunca: una clave que cambia
|
|
36
|
+
* entre peticiones es PEOR que ninguna, porque fragmenta el enrutado.
|
|
37
|
+
*/
|
|
38
|
+
export function withCacheKey(payload, ctx) {
|
|
39
|
+
if (!OPENAI_SHAPED.has(ctx.api))
|
|
40
|
+
return payload;
|
|
41
|
+
if (hasCacheKey(payload))
|
|
42
|
+
return payload;
|
|
43
|
+
const key = clampCacheKey(ctx.sessionId);
|
|
44
|
+
if (!key)
|
|
45
|
+
return payload;
|
|
46
|
+
return { ...payload, prompt_cache_key: key };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Decide si `prompt_cache_retention` puede viajar.
|
|
50
|
+
*
|
|
51
|
+
* El orden importa: la evidencia empírica (un 400 ya visto) manda sobre la
|
|
52
|
+
* configuración del usuario. Si no, un opt-in equivocado contra un endpoint que
|
|
53
|
+
* lo rechaza devuelve 400 para siempre.
|
|
54
|
+
*/
|
|
55
|
+
export function retentionAllowed(ctx) {
|
|
56
|
+
if (ctx.baseUrl?.includes("api.openai.com"))
|
|
57
|
+
return true;
|
|
58
|
+
if (ctx.retentionRejected)
|
|
59
|
+
return false;
|
|
60
|
+
return ctx.supportsLongRetention === true;
|
|
61
|
+
}
|
|
62
|
+
export function withRetentionGuard(payload, ctx) {
|
|
63
|
+
if (typeof payload.prompt_cache_retention !== "string")
|
|
64
|
+
return payload;
|
|
65
|
+
if (retentionAllowed(ctx))
|
|
66
|
+
return payload;
|
|
67
|
+
const { prompt_cache_retention: _dropped, ...rest } = payload;
|
|
68
|
+
return rest;
|
|
69
|
+
}
|
|
70
|
+
/** ¿Este error del proveedor es "no entiendo prompt_cache_retention"? */
|
|
71
|
+
export function isRetentionUnsupportedError(text) {
|
|
72
|
+
return /prompt_cache_retention/i.test(text) && /unsupported|unknown|unrecognized|invalid/i.test(text);
|
|
73
|
+
}
|
|
74
|
+
/** ¿Es el error de Anthropic por orden de TTL en cache_control? */
|
|
75
|
+
export function isAnthropicTtlOrderError(text) {
|
|
76
|
+
return /cache_control/i.test(text) && /ttl/i.test(text) && /order|1h|5m/i.test(text);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Recorre los bloques con `cache_control` en ORDEN DE CABLE (tools → system →
|
|
80
|
+
* messages) y degrada cualquier TTL largo que venga detrás de uno corto.
|
|
81
|
+
*
|
|
82
|
+
* Degradar es seguro: se pierde duración de caché, no corrección. Reordenar los
|
|
83
|
+
* breakpoints sí cambiaría qué se cachea, y eso no es nuestro para decidir.
|
|
84
|
+
*/
|
|
85
|
+
export function normalizeAnthropicTtlOrder(payload) {
|
|
86
|
+
const holders = [];
|
|
87
|
+
const collect = (value) => {
|
|
88
|
+
if (Array.isArray(value)) {
|
|
89
|
+
for (const item of value)
|
|
90
|
+
collect(item);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (!value || typeof value !== "object")
|
|
94
|
+
return;
|
|
95
|
+
const record = value;
|
|
96
|
+
if (record.cache_control && typeof record.cache_control === "object")
|
|
97
|
+
holders.push(record);
|
|
98
|
+
for (const nested of Object.values(record)) {
|
|
99
|
+
if (nested && typeof nested === "object")
|
|
100
|
+
collect(nested);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
// Orden de cable, no de objeto: es el que valida Anthropic.
|
|
104
|
+
collect(payload.tools);
|
|
105
|
+
collect(payload.system);
|
|
106
|
+
collect(payload.messages);
|
|
107
|
+
let seenShort = false;
|
|
108
|
+
let changed = false;
|
|
109
|
+
for (const holder of holders) {
|
|
110
|
+
const ttl = holder.cache_control?.ttl;
|
|
111
|
+
if (ttl === "5m" || ttl === undefined) {
|
|
112
|
+
seenShort = true;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (ttl === "1h" && seenShort) {
|
|
116
|
+
holder.cache_control = { ...holder.cache_control, ttl: "5m" };
|
|
117
|
+
changed = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return changed ? { ...payload } : payload;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/core/prompt-cache/payload.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Mutaciones del payload de proveedor para maximizar aciertos de caché.\n *\n * Tres cosas, cada una por un motivo distinto:\n *\n * 1. `prompt_cache_key` de respaldo. Ada core ya lo pone, pero solo para la URL\n * oficial de OpenAI o cuando hay retención larga declarada\n * (`openai-completions.ts`). Un endpoint de terceros con retención corta —\n * justo el caso de un gateway propio o un proxy — se queda sin clave, y sin\n * clave el backend no puede enrutar a un worker con la caché caliente.\n *\n * 2. Seguridad de `prompt_cache_retention`. Enviarlo a un endpoint que no lo\n * entiende devuelve 400 y tumba la petición entera. Se envía solo cuando se\n * sabe que se soporta, y se APRENDE de los 400 vistos.\n *\n * 3. Orden de TTL en `cache_control` de Anthropic. La API rechaza un breakpoint\n * de 1h que venga detrás de uno de 5m. Es un fallo de orden, no de contenido,\n * y se puede reparar sin cambiar nada semántico.\n */\n\n/** Límite documentado de OpenAI para prompt_cache_key. */\nconst MAX_CACHE_KEY_LENGTH = 64;\n\nexport function clampCacheKey(sessionId: string | undefined): string | undefined {\n\tconst trimmed = sessionId?.trim();\n\tif (!trimmed) return undefined;\n\treturn [...trimmed].slice(0, MAX_CACHE_KEY_LENGTH).join(\"\");\n}\n\n/** ¿El payload ya trae una clave efectiva? Nunca se pisa la del host. */\nexport function hasCacheKey(payload: Record<string, unknown>): boolean {\n\treturn typeof payload.prompt_cache_key === \"string\" || typeof payload.promptCacheKey === \"string\";\n}\n\nexport interface PayloadContext {\n\tapi: string;\n\tbaseUrl?: string;\n\tsessionId?: string;\n\t/** `compat.supportsLongCacheRetention` del modelo. */\n\tsupportsLongRetention?: boolean;\n\t/** Modelos a los que este proceso ya vio devolver 400 por retención. */\n\tretentionRejected?: boolean;\n}\n\n/** APIs con forma OpenAI donde `prompt_cache_key` significa algo. */\nconst OPENAI_SHAPED = new Set([\"openai-completions\", \"openai-responses\"]);\n\n/**\n * Añade la clave de caché si falta. No sobrescribe nunca: una clave que cambia\n * entre peticiones es PEOR que ninguna, porque fragmenta el enrutado.\n */\nexport function withCacheKey(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown> {\n\tif (!OPENAI_SHAPED.has(ctx.api)) return payload;\n\tif (hasCacheKey(payload)) return payload;\n\tconst key = clampCacheKey(ctx.sessionId);\n\tif (!key) return payload;\n\treturn { ...payload, prompt_cache_key: key };\n}\n\n/**\n * Decide si `prompt_cache_retention` puede viajar.\n *\n * El orden importa: la evidencia empírica (un 400 ya visto) manda sobre la\n * configuración del usuario. Si no, un opt-in equivocado contra un endpoint que\n * lo rechaza devuelve 400 para siempre.\n */\nexport function retentionAllowed(ctx: PayloadContext): boolean {\n\tif (ctx.baseUrl?.includes(\"api.openai.com\")) return true;\n\tif (ctx.retentionRejected) return false;\n\treturn ctx.supportsLongRetention === true;\n}\n\nexport function withRetentionGuard(payload: Record<string, unknown>, ctx: PayloadContext): Record<string, unknown> {\n\tif (typeof payload.prompt_cache_retention !== \"string\") return payload;\n\tif (retentionAllowed(ctx)) return payload;\n\tconst { prompt_cache_retention: _dropped, ...rest } = payload;\n\treturn rest;\n}\n\n/** ¿Este error del proveedor es \"no entiendo prompt_cache_retention\"? */\nexport function isRetentionUnsupportedError(text: string): boolean {\n\treturn /prompt_cache_retention/i.test(text) && /unsupported|unknown|unrecognized|invalid/i.test(text);\n}\n\n/** ¿Es el error de Anthropic por orden de TTL en cache_control? */\nexport function isAnthropicTtlOrderError(text: string): boolean {\n\treturn /cache_control/i.test(text) && /ttl/i.test(text) && /order|1h|5m/i.test(text);\n}\n\ninterface CacheControlHolder {\n\tcache_control?: { type?: string; ttl?: string };\n\t[key: string]: unknown;\n}\n\n/**\n * Recorre los bloques con `cache_control` en ORDEN DE CABLE (tools → system →\n * messages) y degrada cualquier TTL largo que venga detrás de uno corto.\n *\n * Degradar es seguro: se pierde duración de caché, no corrección. Reordenar los\n * breakpoints sí cambiaría qué se cachea, y eso no es nuestro para decidir.\n */\nexport function normalizeAnthropicTtlOrder(payload: Record<string, unknown>): Record<string, unknown> {\n\tconst holders: CacheControlHolder[] = [];\n\tconst collect = (value: unknown): void => {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const item of value) collect(item);\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== \"object\") return;\n\t\tconst record = value as CacheControlHolder;\n\t\tif (record.cache_control && typeof record.cache_control === \"object\") holders.push(record);\n\t\tfor (const nested of Object.values(record)) {\n\t\t\tif (nested && typeof nested === \"object\") collect(nested);\n\t\t}\n\t};\n\t// Orden de cable, no de objeto: es el que valida Anthropic.\n\tcollect(payload.tools);\n\tcollect(payload.system);\n\tcollect(payload.messages);\n\n\tlet seenShort = false;\n\tlet changed = false;\n\tfor (const holder of holders) {\n\t\tconst ttl = holder.cache_control?.ttl;\n\t\tif (ttl === \"5m\" || ttl === undefined) {\n\t\t\tseenShort = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ttl === \"1h\" && seenShort) {\n\t\t\tholder.cache_control = { ...holder.cache_control, ttl: \"5m\" };\n\t\t\tchanged = true;\n\t\t}\n\t}\n\treturn changed ? { ...payload } : payload;\n}\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estabilización del prefijo del prompt.
|
|
3
|
+
*
|
|
4
|
+
* Las cachés de prompt (DeepSeek, OpenAI, Anthropic) casan por PREFIJO: un byte
|
|
5
|
+
* distinto en la posición N invalida todo lo que va detrás. En DeepSeek el hit
|
|
6
|
+
* cuesta ~31x menos que el miss, así que el coste de un cambio no es
|
|
7
|
+
* proporcional a su tamaño sino a su POSICIÓN.
|
|
8
|
+
*
|
|
9
|
+
* Esto reordena el system prompt para que todo lo estable quede por delante y lo
|
|
10
|
+
* dinámico detrás de un separador, de modo que el sufijo invalidado sea lo más
|
|
11
|
+
* pequeño posible.
|
|
12
|
+
*
|
|
13
|
+
* Dos decisiones de diseño que no son obvias:
|
|
14
|
+
*
|
|
15
|
+
* 1. Los candidatos ANIDAN — el bloque de un context file contiene su propio
|
|
16
|
+
* contenido a secas. Por eso las ocurrencias se cuentan contra UNA instantánea
|
|
17
|
+
* inmutable del prompt original, no contra el texto que va quedando: recontar
|
|
18
|
+
* tras cada extracción daría resultados incoherentes. Cualquier candidato que
|
|
19
|
+
* no aparezca EXACTAMENTE una vez se deja en su sitio.
|
|
20
|
+
*
|
|
21
|
+
* 2. Hay guardia de integridad. Si tras reordenar desaparece cualquier marcador
|
|
22
|
+
* estructural (una etiqueta, un delimitador), se descarta la reescritura
|
|
23
|
+
* entera y se devuelve el original. Un reordenado con un bug que corrompe el
|
|
24
|
+
* prompt en silencio es mucho peor que no cachear.
|
|
25
|
+
*/
|
|
26
|
+
/** Separador entre la zona estable y la dinámica. */
|
|
27
|
+
export declare const STABLE_SEPARATOR = "\n\n---\n\n";
|
|
28
|
+
export declare function isStableContextFile(path: string): boolean;
|
|
29
|
+
export interface StabilizeInput {
|
|
30
|
+
/** El system prompt ya ensamblado. */
|
|
31
|
+
prompt: string;
|
|
32
|
+
/** Prompt de sistema propio del usuario, si lo hay. */
|
|
33
|
+
customPrompt?: string;
|
|
34
|
+
/** Bloques añadidos al final (incluye la personalidad del engine). */
|
|
35
|
+
appendSystemPrompt?: string;
|
|
36
|
+
/** Guidelines por tool. */
|
|
37
|
+
promptGuidelines?: string[];
|
|
38
|
+
/** Ficheros de contexto cargados. */
|
|
39
|
+
contextFiles?: Array<{
|
|
40
|
+
path: string;
|
|
41
|
+
content: string;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
export interface StabilizeResult {
|
|
45
|
+
prompt: string;
|
|
46
|
+
/** Cuántos bloques se subieron al prefijo estable. */
|
|
47
|
+
lifted: number;
|
|
48
|
+
/** True si la guardia de integridad descartó la reescritura. */
|
|
49
|
+
rolledBack: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Marcadores estructurales: etiquetas y delimitadores de bloque. Si el
|
|
53
|
+
* reordenado pierde alguno, algo se ha comido texto.
|
|
54
|
+
*/
|
|
55
|
+
export declare function extractStructuralMarkers(text: string): string[];
|
|
56
|
+
/** Construye los bloques candidatos a subir, en orden determinista. */
|
|
57
|
+
export declare function buildStableCandidates(input: StabilizeInput): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Reordena el prompt: estable primero, dinámico después del separador.
|
|
60
|
+
*
|
|
61
|
+
* No-op seguro: si nada casa exactamente una vez, o si la guardia de integridad
|
|
62
|
+
* salta, devuelve el prompt original sin tocar.
|
|
63
|
+
*/
|
|
64
|
+
export declare function stabilizeSystemPrompt(input: StabilizeInput): StabilizeResult;
|
|
65
|
+
//# sourceMappingURL=stabilize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stabilize.d.ts","sourceRoot":"","sources":["../../../src/core/prompt-cache/stabilize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,sDAAqD;AACrD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAW9C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,MAAM,WAAW,cAAc;IAC9B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,uDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,iEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CAkBrE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAuD5E","sourcesContent":["/**\n * Estabilización del prefijo del prompt.\n *\n * Las cachés de prompt (DeepSeek, OpenAI, Anthropic) casan por PREFIJO: un byte\n * distinto en la posición N invalida todo lo que va detrás. En DeepSeek el hit\n * cuesta ~31x menos que el miss, así que el coste de un cambio no es\n * proporcional a su tamaño sino a su POSICIÓN.\n *\n * Esto reordena el system prompt para que todo lo estable quede por delante y lo\n * dinámico detrás de un separador, de modo que el sufijo invalidado sea lo más\n * pequeño posible.\n *\n * Dos decisiones de diseño que no son obvias:\n *\n * 1. Los candidatos ANIDAN — el bloque de un context file contiene su propio\n * contenido a secas. Por eso las ocurrencias se cuentan contra UNA instantánea\n * inmutable del prompt original, no contra el texto que va quedando: recontar\n * tras cada extracción daría resultados incoherentes. Cualquier candidato que\n * no aparezca EXACTAMENTE una vez se deja en su sitio.\n *\n * 2. Hay guardia de integridad. Si tras reordenar desaparece cualquier marcador\n * estructural (una etiqueta, un delimitador), se descarta la reescritura\n * entera y se devuelve el original. Un reordenado con un bug que corrompe el\n * prompt en silencio es mucho peor que no cachear.\n */\n\n/** Por debajo de esto un \"candidato\" es ruido que aparece en cualquier sitio. */\nconst MIN_CANDIDATE_LENGTH = 8;\n\n/** Separador entre la zona estable y la dinámica. */\nexport const STABLE_SEPARATOR = \"\\n\\n---\\n\\n\";\n\n/**\n * Ficheros de contexto que se consideran estables.\n *\n * El tamaño NO es criterio: un fichero grande puede cambiar cada turno. Solo se\n * suben ficheros de instrucciones cuyo contenido se sabe estable durante la\n * sesión.\n */\nconst STABLE_CONTEXT_FILES = /(^|\\/)(agents(\\.override)?\\.md|claude\\.md|gemini\\.md|cursor\\.md)$/i;\n\nexport function isStableContextFile(path: string): boolean {\n\treturn STABLE_CONTEXT_FILES.test(path.replace(/\\\\/g, \"/\").toLowerCase());\n}\n\nexport interface StabilizeInput {\n\t/** El system prompt ya ensamblado. */\n\tprompt: string;\n\t/** Prompt de sistema propio del usuario, si lo hay. */\n\tcustomPrompt?: string;\n\t/** Bloques añadidos al final (incluye la personalidad del engine). */\n\tappendSystemPrompt?: string;\n\t/** Guidelines por tool. */\n\tpromptGuidelines?: string[];\n\t/** Ficheros de contexto cargados. */\n\tcontextFiles?: Array<{ path: string; content: string }>;\n}\n\nexport interface StabilizeResult {\n\tprompt: string;\n\t/** Cuántos bloques se subieron al prefijo estable. */\n\tlifted: number;\n\t/** True si la guardia de integridad descartó la reescritura. */\n\trolledBack: boolean;\n}\n\n/**\n * Marcadores estructurales: etiquetas y delimitadores de bloque. Si el\n * reordenado pierde alguno, algo se ha comido texto.\n */\nexport function extractStructuralMarkers(text: string): string[] {\n\tconst markers: string[] = [];\n\tfor (const match of text.matchAll(/<\\/?[a-zA-Z][\\w-]*>/g)) markers.push(match[0]);\n\tfor (const match of text.matchAll(/<!--\\s*[A-Z_]+:(START|END)\\s*-->/g)) markers.push(match[0]);\n\treturn markers.sort();\n}\n\n/** Construye los bloques candidatos a subir, en orden determinista. */\nexport function buildStableCandidates(input: StabilizeInput): string[] {\n\tconst candidates: string[] = [];\n\tconst push = (value: string | undefined) => {\n\t\tconst trimmed = value?.trim();\n\t\tif (trimmed && trimmed.length >= MIN_CANDIDATE_LENGTH) candidates.push(trimmed);\n\t};\n\n\tpush(input.customPrompt);\n\tpush(input.appendSystemPrompt);\n\tfor (const guideline of input.promptGuidelines ?? []) push(`- ${guideline}`);\n\tfor (const file of input.contextFiles ?? []) {\n\t\tif (!isStableContextFile(file.path)) continue;\n\t\t// Dos formas: con cabecera de ruta y sin ella. El ensamblador puede usar\n\t\t// cualquiera de las dos y solo una casará.\n\t\tpush(`## ${file.path}\\n\\n${file.content}`);\n\t\tpush(file.content);\n\t}\n\treturn candidates;\n}\n\n/**\n * Reordena el prompt: estable primero, dinámico después del separador.\n *\n * No-op seguro: si nada casa exactamente una vez, o si la guardia de integridad\n * salta, devuelve el prompt original sin tocar.\n */\nexport function stabilizeSystemPrompt(input: StabilizeInput): StabilizeResult {\n\tconst original = input.prompt;\n\tif (!original.trim()) return { prompt: original, lifted: 0, rolledBack: false };\n\n\tconst candidates = buildStableCandidates(input);\n\tif (candidates.length === 0) return { prompt: original, lifted: 0, rolledBack: false };\n\n\t// Contar SIEMPRE contra la instantánea original: los candidatos anidan.\n\tconst snapshot = original;\n\tconst occurrencesOf = (needle: string): number => {\n\t\tlet count = 0;\n\t\tlet from = 0;\n\t\twhile (true) {\n\t\t\tconst at = snapshot.indexOf(needle, from);\n\t\t\tif (at === -1) break;\n\t\t\tcount++;\n\t\t\tfrom = at + needle.length;\n\t\t\tif (count > 1) break; // con saber que hay más de una basta\n\t\t}\n\t\treturn count;\n\t};\n\n\tconst stable: string[] = [];\n\tlet rest = original;\n\tconst seen = new Set<string>();\n\tfor (const candidate of candidates) {\n\t\tif (seen.has(candidate)) continue;\n\t\tif (occurrencesOf(candidate) !== 1) continue;\n\t\tconst at = rest.indexOf(candidate);\n\t\tif (at === -1) continue; // ya extraído dentro de otro candidato\n\t\tseen.add(candidate);\n\t\tstable.push(candidate);\n\t\trest = rest.slice(0, at) + rest.slice(at + candidate.length);\n\t}\n\n\tif (stable.length === 0) return { prompt: original, lifted: 0, rolledBack: false };\n\n\tconst stableJoined = stable.join(\"\\n\\n\");\n\t// Ya estabilizado: sin esto una segunda pasada apilaría otro separador y el\n\t// prefijo se movería en cada turno — exactamente lo contrario de lo que\n\t// buscamos. La idempotencia no es elegancia aquí, es la propiedad.\n\tif (original.startsWith(stableJoined + STABLE_SEPARATOR)) {\n\t\treturn { prompt: original, lifted: 0, rolledBack: false };\n\t}\n\n\tconst rewritten = `${stableJoined}${STABLE_SEPARATOR}${rest.trim()}`;\n\n\t// Guardia de integridad: ningún marcador estructural puede desaparecer.\n\tconst before = extractStructuralMarkers(original);\n\tconst after = extractStructuralMarkers(rewritten);\n\tif (before.length !== after.length || before.some((m, i) => m !== after[i])) {\n\t\treturn { prompt: original, lifted: 0, rolledBack: true };\n\t}\n\n\treturn { prompt: rewritten, lifted: stable.length, rolledBack: false };\n}\n"]}
|