@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,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtins — generadores de scripts de workflow (deep-research, code-review,
|
|
3
|
+
* product-build, codebase-audit, multi-perspective).
|
|
4
|
+
*
|
|
5
|
+
* Los builtins son versionados con el SDK y TESTEADOS — no scripts sueltos
|
|
6
|
+
* del usuario. Devuelven el script que ejecuta el runtime.
|
|
7
|
+
*
|
|
8
|
+
* Regla de oro: TODO fragmento estático de prompt se emite con q()
|
|
9
|
+
* (JSON.stringify) — el escapado queda garantizado por construcción y el
|
|
10
|
+
* script generado SIEMPRE es JS válido (verificado por tests vm-parse).
|
|
11
|
+
*/
|
|
12
|
+
/** Emite un literal string JS correctamente escapado. */
|
|
13
|
+
function q(s) {
|
|
14
|
+
return JSON.stringify(s);
|
|
15
|
+
}
|
|
16
|
+
/** Deep-research: plan → gather (parallel, con web tools) → verify → report. */
|
|
17
|
+
export function generateDeepResearchScript(options = {}) {
|
|
18
|
+
const angles = Math.min(Math.max(options.angles ?? 4, 1), 12);
|
|
19
|
+
const minSupport = options.minSupport ?? 2;
|
|
20
|
+
return `export const meta = {
|
|
21
|
+
"name": "deep_research",
|
|
22
|
+
"description": "Deep research con búsqueda web y verificación cruzada",
|
|
23
|
+
"phases": [
|
|
24
|
+
{ "title": "Queries" },
|
|
25
|
+
{ "title": "Gather" },
|
|
26
|
+
{ "title": "Verify" },
|
|
27
|
+
{ "title": "Report" }
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
phase("Queries")
|
|
32
|
+
const plan = await agent({
|
|
33
|
+
prompt: ${q("Planifica la investigación web para esta pregunta: ")} + (args.question ?? "") +
|
|
34
|
+
${q(`\n\nProduce ${angles} consultas diversas y específicas. Devuelve JSON {"queries": ["..."]}.`)},
|
|
35
|
+
label: "planificar consultas",
|
|
36
|
+
schema: { type: "object", properties: { queries: { type: "array", items: { type: "string" } } }, required: ["queries"] }
|
|
37
|
+
})
|
|
38
|
+
const planned = plan && Array.isArray(plan.queries) ? plan.queries.filter((q) => typeof q === "string" && q.trim().length > 0) : []
|
|
39
|
+
const queries = (planned.length > 0 ? planned : [args.question ?? ""]).slice(0, ${angles})
|
|
40
|
+
|
|
41
|
+
phase("Gather")
|
|
42
|
+
const gathered = await parallel(queries.map((q, i) => () =>
|
|
43
|
+
agent({
|
|
44
|
+
prompt: ${q("Investiga esta consulta usando las tools web_search y web_fetch.\nConsulta: ")} + q +
|
|
45
|
+
${q('\n\nPasos: (1) web_search; (2) web_fetch de las 2 URLs más relevantes; (3) extrae claims verificables, cada uno con su URL exacta. NO inventes fuentes. Devuelve JSON {"sources": [{"url": string, "claims": [string]}]}.')},
|
|
46
|
+
label: "investigar: " + String(q).slice(0, 60),
|
|
47
|
+
readOnly: true,
|
|
48
|
+
web: true,
|
|
49
|
+
schema: { type: "object", properties: { sources: { type: "array", items: { type: "object", properties: { url: { type: "string" }, claims: { type: "array", items: { type: "string" } } }, required: ["url", "claims"] } } }, required: ["sources"] }
|
|
50
|
+
})
|
|
51
|
+
))
|
|
52
|
+
const allSources = gathered.filter(Boolean).flatMap((g) => (g && g.sources) || [])
|
|
53
|
+
|
|
54
|
+
phase("Verify")
|
|
55
|
+
const verified = await agent({
|
|
56
|
+
prompt: ${q(`Verifica los claims recopilados. Para cada claim, comprueba que tenga al menos ${minSupport} fuentes independientes que lo respalden. Devuelve JSON {"verifiedClaims": [{ "claim": string, "sources": [string] }], "uncertain": [string]}.`)},
|
|
57
|
+
label: "verificar claims (" + allSources.length + " fuentes)",
|
|
58
|
+
readOnly: true,
|
|
59
|
+
schema: { type: "object", properties: { verifiedClaims: { type: "array", items: { type: "object", properties: { claim: { type: "string" }, sources: { type: "array", items: { type: "string" } } }, required: ["claim", "sources"] } }, uncertain: { type: "array", items: { type: "string" } } }, required: ["verifiedClaims", "uncertain"] }
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
phase("Report")
|
|
63
|
+
const report = await agent({
|
|
64
|
+
prompt: ${q("Escribe un informe en Markdown sobre: ")} + (args.question ?? "") +
|
|
65
|
+
${q('\n\nUsa SOLO los claims verificados, citando las fuentes como [1], [2]... con la lista de fuentes al final. Marca explícitamente lo incierto. Devuelve el informe en JSON {"report": string}.')},
|
|
66
|
+
label: "redactar informe",
|
|
67
|
+
schema: { type: "object", properties: { report: { type: "string" } }, required: ["report"] }
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
return report ? report.report : null
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
/** Code-review: diff por módulo → reviewers paralelos → síntesis con severidad. */
|
|
74
|
+
export function generateCodeReviewScript(options = {}) {
|
|
75
|
+
const reviewers = Math.min(Math.max(options.reviewers ?? 3, 1), 6);
|
|
76
|
+
const perspectives = [
|
|
77
|
+
"bugs y errores lógicos",
|
|
78
|
+
"seguridad y límites de confianza",
|
|
79
|
+
"mantenibilidad y deuda técnica",
|
|
80
|
+
].slice(0, reviewers);
|
|
81
|
+
return `export const meta = {
|
|
82
|
+
"name": "code_review",
|
|
83
|
+
"description": "Revisión de código con reviewers paralelos y síntesis por severidad",
|
|
84
|
+
"phases": [
|
|
85
|
+
{ "title": "Diff" },
|
|
86
|
+
{ "title": "Review" },
|
|
87
|
+
{ "title": "Synthesize" }
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
phase("Diff")
|
|
92
|
+
const diff = await agent({
|
|
93
|
+
prompt: ${q('Obtén el diff del cambio (git diff HEAD~1 o el rango indicado en args.diff). Devuelve JSON {"diff": string} con el diff completo (máx 10000 chars).')},
|
|
94
|
+
label: "obtener diff",
|
|
95
|
+
schema: { type: "object", properties: { diff: { type: "string" } }, required: ["diff"] }
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
phase("Review")
|
|
99
|
+
const perspectives = ${JSON.stringify(perspectives)}
|
|
100
|
+
const reviews = await parallel(perspectives.map((p, i) => () =>
|
|
101
|
+
agent({
|
|
102
|
+
prompt: ${q("Revisa el siguiente diff desde la perspectiva: ")} + p +
|
|
103
|
+
${q("\n\nDIFF:\n")} + (diff ? diff.diff : "(sin diff)") +
|
|
104
|
+
${q('\n\nPara cada hallazgo cita archivo:línea. NO inventes. Devuelve JSON {"findings": [{"severity": "critical|major|minor", "file": string, "line": number, "issue": string, "suggestion": string}]}.')},
|
|
105
|
+
label: "revisar: " + p,
|
|
106
|
+
readOnly: true,
|
|
107
|
+
schema: { type: "object", properties: { findings: { type: "array", items: { type: "object", properties: { severity: { type: "string" }, file: { type: "string" }, line: { type: "number" }, issue: { type: "string" }, suggestion: { type: "string" } }, required: ["severity", "file", "issue"] } } }, required: ["findings"] }
|
|
108
|
+
})
|
|
109
|
+
))
|
|
110
|
+
|
|
111
|
+
phase("Synthesize")
|
|
112
|
+
const synthesis = await agent({
|
|
113
|
+
prompt: ${q('Sintetiza estos hallazgos de revisión en un informe final Markdown ordenado por severidad (crítico primero), sin duplicados y con las citas archivo:línea. Devuelve JSON {"report": string}.')},
|
|
114
|
+
label: "sintetizar hallazgos",
|
|
115
|
+
schema: { type: "object", properties: { report: { type: "string" } }, required: ["report"] }
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
return synthesis ? synthesis.report : null
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Product-build (Ada Intelligence, §4): acceptance criteria → fases TDD →
|
|
123
|
+
* verify ejecuta los tests → done con verified_by y evidencia.
|
|
124
|
+
*/
|
|
125
|
+
export function generateProductBuildScript() {
|
|
126
|
+
return `export const meta = {
|
|
127
|
+
"name": "product_build",
|
|
128
|
+
"description": "Construcción de producto con acceptance criteria y verify con evidencia",
|
|
129
|
+
"phases": [
|
|
130
|
+
{ "title": "Frame" },
|
|
131
|
+
{ "title": "Plan" },
|
|
132
|
+
{ "title": "Build" },
|
|
133
|
+
{ "title": "Verify" },
|
|
134
|
+
{ "title": "Done" }
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
phase("Frame")
|
|
139
|
+
const framed = await agent({
|
|
140
|
+
prompt: ${q("Enmarca el producto para este brief: ")} + ((args.brief ?? args.acceptanceCriteria) ?? "") +
|
|
141
|
+
${q('\n\nDefine acceptance criteria observables y medibles. Devuelve JSON {"criteria": [{"id": string, "description": string}]} (máx 6).')},
|
|
142
|
+
label: "definir criterios",
|
|
143
|
+
schema: { type: "object", properties: { criteria: { type: "array", items: { type: "object", properties: { id: { type: "string" }, description: { type: "string" } }, required: ["id", "description"] } } }, required: ["criteria"] }
|
|
144
|
+
})
|
|
145
|
+
const criteria = (framed && framed.criteria) || []
|
|
146
|
+
|
|
147
|
+
phase("Plan")
|
|
148
|
+
const planned = await agent({
|
|
149
|
+
prompt: ${q('Planifica las tareas para cumplir estos criterios. Por cada criterio indica el test que lo verifica. Devuelve JSON {"tasks": [{"title": string, "criterion": string, "test": string}]}.\n\nCriterios:\n')} +
|
|
150
|
+
JSON.stringify(criteria),
|
|
151
|
+
label: "planificar tareas",
|
|
152
|
+
schema: { type: "object", properties: { tasks: { type: "array", items: { type: "object", properties: { title: { type: "string" }, criterion: { type: "string" }, test: { type: "string" } }, required: ["title", "criterion"] } } }, required: ["tasks"] }
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
phase("Build")
|
|
156
|
+
const built = await parallel((planned && planned.tasks || []).map((t, i) => () =>
|
|
157
|
+
agent({
|
|
158
|
+
prompt: ${q("Tarea: ")} + t.title + ${q("\nCriterio que resuelve: ")} + t.criterion +
|
|
159
|
+
${q("\nImplementa el mínimo y escribe el test: ")} + (t.test ?? "") +
|
|
160
|
+
${q('\nEjecuta el test y confirma. Devuelve el archivo que cambiaste en {"file": string, "verified": boolean}.')},
|
|
161
|
+
label: "construir: " + t.title,
|
|
162
|
+
isolation: "worktree",
|
|
163
|
+
schema: { type: "object", properties: { file: { type: "string" }, verified: { type: "boolean" } }, required: ["file", "verified"] }
|
|
164
|
+
})
|
|
165
|
+
))
|
|
166
|
+
const artifacts = built.filter(Boolean).filter((b) => b && b.verified)
|
|
167
|
+
|
|
168
|
+
phase("Verify")
|
|
169
|
+
const verification = await agent({
|
|
170
|
+
prompt: ${q('Ejecuta el/los comando(s) de verificación del proyecto (args.verifyCommand o el test runner default). Para cada criterio, confirma con evidencia archivo:línea o salida de test. Devuelve JSON {"results": [{"criterion": string, "verified_by": string, "evidence": string}]}.')},
|
|
171
|
+
label: "verificar criterios (" + criteria.length + ")",
|
|
172
|
+
schema: { type: "object", properties: { results: { type: "array", items: { type: "object", properties: { criterion: { type: "string" }, verified_by: { type: "string" }, evidence: { type: "string" } }, required: ["criterion", "verified_by", "evidence"] } } }, required: ["results"] }
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
phase("Done")
|
|
176
|
+
const done = await agent({
|
|
177
|
+
prompt: ${q('Redacta el informe final de build. Solo declara done si CADA criterio tiene verified_by y evidencia. Devuelve JSON {"report": string, "done": boolean, "gaps": [string]}.')},
|
|
178
|
+
label: "informe final",
|
|
179
|
+
schema: { type: "object", properties: { report: { type: "string" }, done: { type: "boolean" }, gaps: { type: "array", items: { type: "string" } } }, required: ["report", "done"] }
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
return done ? done.report || JSON.stringify(done) : null
|
|
183
|
+
`;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Codebase-audit (§4): módulos → auditoría paralela (seguridad, deuda, bugs,
|
|
187
|
+
* compliance) → informe + (opcional) nodos QA_FINDING/RISK del grafo.
|
|
188
|
+
*/
|
|
189
|
+
export function generateCodebaseAuditScript(options = {}) {
|
|
190
|
+
const angles = Math.min(Math.max(options.angles ?? 4, 1), 8);
|
|
191
|
+
const perspectives = [
|
|
192
|
+
"seguridad (injection, secrets, límites de confianza)",
|
|
193
|
+
"deuda técnica y arquitectura",
|
|
194
|
+
"bugs y correctitud",
|
|
195
|
+
"cumplimiento / RGPD / datos personales",
|
|
196
|
+
].slice(0, angles);
|
|
197
|
+
const graphHooks = options.graph
|
|
198
|
+
? "\n\nTras el informe, usa la tool graph_add_nodes para registrar QA_FINDING y RISK con sus citas."
|
|
199
|
+
: "";
|
|
200
|
+
return `export const meta = {
|
|
201
|
+
"name": "codebase_audit",
|
|
202
|
+
"description": "Auditoría del codebase con ángulos paralelos y síntesis",
|
|
203
|
+
"phases": [
|
|
204
|
+
{ "title": "Walk" },
|
|
205
|
+
{ "title": "Audit" },
|
|
206
|
+
{ "title": "Report" }
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
phase("Walk")
|
|
211
|
+
const modules = await agent({
|
|
212
|
+
prompt: ${q(`Audita este repo: (args.path ?? "."). En qué módulos se dividiría la auditoría. Devuelve JSON {"modules": [string]} (máx ${angles}).`)},
|
|
213
|
+
label: "identificar módulos",
|
|
214
|
+
schema: { type: "object", properties: { modules: { type: "array", items: { type: "string" } } }, required: ["modules"] }
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
phase("Audit")
|
|
218
|
+
const perspectives = ${JSON.stringify(perspectives)}
|
|
219
|
+
const audits = await parallel(perspectives.map((p, i) => () =>
|
|
220
|
+
agent({
|
|
221
|
+
prompt: ${q("Audita el módulo(s) desde la perspectiva: ")} + p +
|
|
222
|
+
${q("\nMódulos: ")} + JSON.stringify((modules && modules.modules) || []) +
|
|
223
|
+
${q(`\nPara cada hallazgo cita archivo:línea. Devuelve JSON {"findings": [{"type": "RISK|QA_FINDING", "severity": string, "file": string, "line": number, "issue": string}]}.${graphHooks}`)},
|
|
224
|
+
label: "auditar: " + p,
|
|
225
|
+
schema: { type: "object", properties: { findings: { type: "array", items: { type: "object", properties: { type: { type: "string" }, severity: { type: "string" }, file: { type: "string" }, issue: { type: "string" } }, required: ["type", "severity", "file", "issue"] } } }, required: ["findings"] }
|
|
226
|
+
})
|
|
227
|
+
))
|
|
228
|
+
|
|
229
|
+
phase("Report")
|
|
230
|
+
const report = await agent({
|
|
231
|
+
prompt: ${q('Sintetiza los hallazgos de auditoría en un informe Markdown ordenado por severidad, agrupado por perspectiva, con citas archivo:línea y recomendaciones priorizadas. Devuelve JSON {"report": string}.')},
|
|
232
|
+
label: "sintetizar auditoría",
|
|
233
|
+
schema: { type: "object", properties: { report: { type: "string" } }, required: ["report"] }
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
return report ? report.report : null
|
|
237
|
+
`;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Multi-perspective (§4): el mismo problema desde N ángulos → síntesis con
|
|
241
|
+
* desacuerdos explícitos (no consenso falso).
|
|
242
|
+
*/
|
|
243
|
+
export function generateMultiPerspectiveScript(options = {}) {
|
|
244
|
+
const n = Math.min(Math.max(options.perspectives ?? 4, 2), 8);
|
|
245
|
+
const list = [
|
|
246
|
+
"correctitud e invariantes",
|
|
247
|
+
"rendimiento y escalabilidad",
|
|
248
|
+
"seguridad y confianza",
|
|
249
|
+
"mantenibilidad y claridad",
|
|
250
|
+
"producto y UX",
|
|
251
|
+
"coste de operación",
|
|
252
|
+
].slice(0, n);
|
|
253
|
+
return `export const meta = {
|
|
254
|
+
"name": "multi_perspective",
|
|
255
|
+
"description": "Análisis del mismo problema desde N perspectivas con desacuerdos explícitos",
|
|
256
|
+
"phases": [
|
|
257
|
+
{ "title": "Perspectives" },
|
|
258
|
+
{ "title": "Synthesize" }
|
|
259
|
+
]
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
phase("Perspectives")
|
|
263
|
+
const views = await parallel(${JSON.stringify(list)}.map((p, i) => () =>
|
|
264
|
+
agent({
|
|
265
|
+
prompt: ${q("Analiza este problema: ")} + (args.problem ?? "") +
|
|
266
|
+
${q("\nDesde la perspectiva: ")} + p +
|
|
267
|
+
${q('\nDa tu análisis, recomendación y riesgos. Devuelve JSON {"perspective": string, "recommendation": string, "risks": [string]}.')},
|
|
268
|
+
label: "perspectiva: " + p,
|
|
269
|
+
schema: { type: "object", properties: { perspective: { type: "string" }, recommendation: { type: "string" }, risks: { type: "array", items: { type: "string" } } }, required: ["perspective", "recommendation"] }
|
|
270
|
+
})
|
|
271
|
+
))
|
|
272
|
+
|
|
273
|
+
phase("Synthesize")
|
|
274
|
+
const synthesis = await agent({
|
|
275
|
+
prompt: ${q('Sintetiza los análisis. SEÑALA EXPLÍCITAMENTE los desacuerdos entre perspectivas (no creas consenso falso). Devuelve JSON {"summary": string, "disagreements": [string], "recommended": string}.')},
|
|
276
|
+
label: "sintetizar análisis",
|
|
277
|
+
schema: { type: "object", properties: { summary: { type: "string" }, disagreements: { type: "array", items: { type: "string" } }, recommended: { type: "string" } }, required: ["summary", "recommended"] }
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
return synthesis ? synthesis.summary || JSON.stringify(synthesis) : null
|
|
281
|
+
`;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=builtins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/core/workflows/builtins.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Builtins — generadores de scripts de workflow (deep-research, code-review,\n * product-build, codebase-audit, multi-perspective).\n *\n * Los builtins son versionados con el SDK y TESTEADOS — no scripts sueltos\n * del usuario. Devuelven el script que ejecuta el runtime.\n *\n * Regla de oro: TODO fragmento estático de prompt se emite con q()\n * (JSON.stringify) — el escapado queda garantizado por construcción y el\n * script generado SIEMPRE es JS válido (verificado por tests vm-parse).\n */\n\n/** Emite un literal string JS correctamente escapado. */\nfunction q(s: string): string {\n\treturn JSON.stringify(s);\n}\n\n/** Deep-research: plan → gather (parallel, con web tools) → verify → report. */\nexport function generateDeepResearchScript(options: { angles?: number; minSupport?: number } = {}): string {\n\tconst angles = Math.min(Math.max(options.angles ?? 4, 1), 12);\n\tconst minSupport = options.minSupport ?? 2;\n\treturn `export const meta = {\n \"name\": \"deep_research\",\n \"description\": \"Deep research con búsqueda web y verificación cruzada\",\n \"phases\": [\n { \"title\": \"Queries\" },\n { \"title\": \"Gather\" },\n { \"title\": \"Verify\" },\n { \"title\": \"Report\" }\n ]\n}\n\nphase(\"Queries\")\nconst plan = await agent({\n prompt: ${q(\"Planifica la investigación web para esta pregunta: \")} + (args.question ?? \"\") +\n ${q(`\\n\\nProduce ${angles} consultas diversas y específicas. Devuelve JSON {\"queries\": [\"...\"]}.`)},\n label: \"planificar consultas\",\n schema: { type: \"object\", properties: { queries: { type: \"array\", items: { type: \"string\" } } }, required: [\"queries\"] }\n})\nconst planned = plan && Array.isArray(plan.queries) ? plan.queries.filter((q) => typeof q === \"string\" && q.trim().length > 0) : []\nconst queries = (planned.length > 0 ? planned : [args.question ?? \"\"]).slice(0, ${angles})\n\nphase(\"Gather\")\nconst gathered = await parallel(queries.map((q, i) => () =>\n agent({\n prompt: ${q(\"Investiga esta consulta usando las tools web_search y web_fetch.\\nConsulta: \")} + q +\n ${q('\\n\\nPasos: (1) web_search; (2) web_fetch de las 2 URLs más relevantes; (3) extrae claims verificables, cada uno con su URL exacta. NO inventes fuentes. Devuelve JSON {\"sources\": [{\"url\": string, \"claims\": [string]}]}.')},\n label: \"investigar: \" + String(q).slice(0, 60),\n readOnly: true,\n web: true,\n schema: { type: \"object\", properties: { sources: { type: \"array\", items: { type: \"object\", properties: { url: { type: \"string\" }, claims: { type: \"array\", items: { type: \"string\" } } }, required: [\"url\", \"claims\"] } } }, required: [\"sources\"] }\n })\n))\nconst allSources = gathered.filter(Boolean).flatMap((g) => (g && g.sources) || [])\n\nphase(\"Verify\")\nconst verified = await agent({\n prompt: ${q(`Verifica los claims recopilados. Para cada claim, comprueba que tenga al menos ${minSupport} fuentes independientes que lo respalden. Devuelve JSON {\"verifiedClaims\": [{ \"claim\": string, \"sources\": [string] }], \"uncertain\": [string]}.`)},\n label: \"verificar claims (\" + allSources.length + \" fuentes)\",\n readOnly: true,\n schema: { type: \"object\", properties: { verifiedClaims: { type: \"array\", items: { type: \"object\", properties: { claim: { type: \"string\" }, sources: { type: \"array\", items: { type: \"string\" } } }, required: [\"claim\", \"sources\"] } }, uncertain: { type: \"array\", items: { type: \"string\" } } }, required: [\"verifiedClaims\", \"uncertain\"] }\n})\n\nphase(\"Report\")\nconst report = await agent({\n prompt: ${q(\"Escribe un informe en Markdown sobre: \")} + (args.question ?? \"\") +\n ${q('\\n\\nUsa SOLO los claims verificados, citando las fuentes como [1], [2]... con la lista de fuentes al final. Marca explícitamente lo incierto. Devuelve el informe en JSON {\"report\": string}.')},\n label: \"redactar informe\",\n schema: { type: \"object\", properties: { report: { type: \"string\" } }, required: [\"report\"] }\n})\n\nreturn report ? report.report : null\n`;\n}\n\n/** Code-review: diff por módulo → reviewers paralelos → síntesis con severidad. */\nexport function generateCodeReviewScript(options: { reviewers?: number } = {}): string {\n\tconst reviewers = Math.min(Math.max(options.reviewers ?? 3, 1), 6);\n\tconst perspectives = [\n\t\t\"bugs y errores lógicos\",\n\t\t\"seguridad y límites de confianza\",\n\t\t\"mantenibilidad y deuda técnica\",\n\t].slice(0, reviewers);\n\treturn `export const meta = {\n \"name\": \"code_review\",\n \"description\": \"Revisión de código con reviewers paralelos y síntesis por severidad\",\n \"phases\": [\n { \"title\": \"Diff\" },\n { \"title\": \"Review\" },\n { \"title\": \"Synthesize\" }\n ]\n}\n\nphase(\"Diff\")\nconst diff = await agent({\n prompt: ${q('Obtén el diff del cambio (git diff HEAD~1 o el rango indicado en args.diff). Devuelve JSON {\"diff\": string} con el diff completo (máx 10000 chars).')},\n label: \"obtener diff\",\n schema: { type: \"object\", properties: { diff: { type: \"string\" } }, required: [\"diff\"] }\n})\n\nphase(\"Review\")\nconst perspectives = ${JSON.stringify(perspectives)}\nconst reviews = await parallel(perspectives.map((p, i) => () =>\n agent({\n prompt: ${q(\"Revisa el siguiente diff desde la perspectiva: \")} + p +\n ${q(\"\\n\\nDIFF:\\n\")} + (diff ? diff.diff : \"(sin diff)\") +\n ${q('\\n\\nPara cada hallazgo cita archivo:línea. NO inventes. Devuelve JSON {\"findings\": [{\"severity\": \"critical|major|minor\", \"file\": string, \"line\": number, \"issue\": string, \"suggestion\": string}]}.')},\n label: \"revisar: \" + p,\n readOnly: true,\n schema: { type: \"object\", properties: { findings: { type: \"array\", items: { type: \"object\", properties: { severity: { type: \"string\" }, file: { type: \"string\" }, line: { type: \"number\" }, issue: { type: \"string\" }, suggestion: { type: \"string\" } }, required: [\"severity\", \"file\", \"issue\"] } } }, required: [\"findings\"] }\n })\n))\n\nphase(\"Synthesize\")\nconst synthesis = await agent({\n prompt: ${q('Sintetiza estos hallazgos de revisión en un informe final Markdown ordenado por severidad (crítico primero), sin duplicados y con las citas archivo:línea. Devuelve JSON {\"report\": string}.')},\n label: \"sintetizar hallazgos\",\n schema: { type: \"object\", properties: { report: { type: \"string\" } }, required: [\"report\"] }\n})\n\nreturn synthesis ? synthesis.report : null\n`;\n}\n\n/**\n * Product-build (Ada Intelligence, §4): acceptance criteria → fases TDD →\n * verify ejecuta los tests → done con verified_by y evidencia.\n */\nexport function generateProductBuildScript(): string {\n\treturn `export const meta = {\n \"name\": \"product_build\",\n \"description\": \"Construcción de producto con acceptance criteria y verify con evidencia\",\n \"phases\": [\n { \"title\": \"Frame\" },\n { \"title\": \"Plan\" },\n { \"title\": \"Build\" },\n { \"title\": \"Verify\" },\n { \"title\": \"Done\" }\n ]\n}\n\nphase(\"Frame\")\nconst framed = await agent({\n prompt: ${q(\"Enmarca el producto para este brief: \")} + ((args.brief ?? args.acceptanceCriteria) ?? \"\") +\n ${q('\\n\\nDefine acceptance criteria observables y medibles. Devuelve JSON {\"criteria\": [{\"id\": string, \"description\": string}]} (máx 6).')},\n label: \"definir criterios\",\n schema: { type: \"object\", properties: { criteria: { type: \"array\", items: { type: \"object\", properties: { id: { type: \"string\" }, description: { type: \"string\" } }, required: [\"id\", \"description\"] } } }, required: [\"criteria\"] }\n})\nconst criteria = (framed && framed.criteria) || []\n\nphase(\"Plan\")\nconst planned = await agent({\n prompt: ${q('Planifica las tareas para cumplir estos criterios. Por cada criterio indica el test que lo verifica. Devuelve JSON {\"tasks\": [{\"title\": string, \"criterion\": string, \"test\": string}]}.\\n\\nCriterios:\\n')} +\n JSON.stringify(criteria),\n label: \"planificar tareas\",\n schema: { type: \"object\", properties: { tasks: { type: \"array\", items: { type: \"object\", properties: { title: { type: \"string\" }, criterion: { type: \"string\" }, test: { type: \"string\" } }, required: [\"title\", \"criterion\"] } } }, required: [\"tasks\"] }\n})\n\nphase(\"Build\")\nconst built = await parallel((planned && planned.tasks || []).map((t, i) => () =>\n agent({\n prompt: ${q(\"Tarea: \")} + t.title + ${q(\"\\nCriterio que resuelve: \")} + t.criterion +\n ${q(\"\\nImplementa el mínimo y escribe el test: \")} + (t.test ?? \"\") +\n ${q('\\nEjecuta el test y confirma. Devuelve el archivo que cambiaste en {\"file\": string, \"verified\": boolean}.')},\n label: \"construir: \" + t.title,\n isolation: \"worktree\",\n schema: { type: \"object\", properties: { file: { type: \"string\" }, verified: { type: \"boolean\" } }, required: [\"file\", \"verified\"] }\n })\n))\nconst artifacts = built.filter(Boolean).filter((b) => b && b.verified)\n\nphase(\"Verify\")\nconst verification = await agent({\n prompt: ${q('Ejecuta el/los comando(s) de verificación del proyecto (args.verifyCommand o el test runner default). Para cada criterio, confirma con evidencia archivo:línea o salida de test. Devuelve JSON {\"results\": [{\"criterion\": string, \"verified_by\": string, \"evidence\": string}]}.')},\n label: \"verificar criterios (\" + criteria.length + \")\",\n schema: { type: \"object\", properties: { results: { type: \"array\", items: { type: \"object\", properties: { criterion: { type: \"string\" }, verified_by: { type: \"string\" }, evidence: { type: \"string\" } }, required: [\"criterion\", \"verified_by\", \"evidence\"] } } }, required: [\"results\"] }\n})\n\nphase(\"Done\")\nconst done = await agent({\n prompt: ${q('Redacta el informe final de build. Solo declara done si CADA criterio tiene verified_by y evidencia. Devuelve JSON {\"report\": string, \"done\": boolean, \"gaps\": [string]}.')},\n label: \"informe final\",\n schema: { type: \"object\", properties: { report: { type: \"string\" }, done: { type: \"boolean\" }, gaps: { type: \"array\", items: { type: \"string\" } } }, required: [\"report\", \"done\"] }\n})\n\nreturn done ? done.report || JSON.stringify(done) : null\n`;\n}\n\n/**\n * Codebase-audit (§4): módulos → auditoría paralela (seguridad, deuda, bugs,\n * compliance) → informe + (opcional) nodos QA_FINDING/RISK del grafo.\n */\nexport function generateCodebaseAuditScript(options: { angles?: number; graph?: boolean } = {}): string {\n\tconst angles = Math.min(Math.max(options.angles ?? 4, 1), 8);\n\tconst perspectives = [\n\t\t\"seguridad (injection, secrets, límites de confianza)\",\n\t\t\"deuda técnica y arquitectura\",\n\t\t\"bugs y correctitud\",\n\t\t\"cumplimiento / RGPD / datos personales\",\n\t].slice(0, angles);\n\tconst graphHooks = options.graph\n\t\t? \"\\n\\nTras el informe, usa la tool graph_add_nodes para registrar QA_FINDING y RISK con sus citas.\"\n\t\t: \"\";\n\treturn `export const meta = {\n \"name\": \"codebase_audit\",\n \"description\": \"Auditoría del codebase con ángulos paralelos y síntesis\",\n \"phases\": [\n { \"title\": \"Walk\" },\n { \"title\": \"Audit\" },\n { \"title\": \"Report\" }\n ]\n}\n\nphase(\"Walk\")\nconst modules = await agent({\n prompt: ${q(`Audita este repo: (args.path ?? \".\"). En qué módulos se dividiría la auditoría. Devuelve JSON {\"modules\": [string]} (máx ${angles}).`)},\n label: \"identificar módulos\",\n schema: { type: \"object\", properties: { modules: { type: \"array\", items: { type: \"string\" } } }, required: [\"modules\"] }\n})\n\nphase(\"Audit\")\nconst perspectives = ${JSON.stringify(perspectives)}\nconst audits = await parallel(perspectives.map((p, i) => () =>\n agent({\n prompt: ${q(\"Audita el módulo(s) desde la perspectiva: \")} + p +\n ${q(\"\\nMódulos: \")} + JSON.stringify((modules && modules.modules) || []) +\n ${q(`\\nPara cada hallazgo cita archivo:línea. Devuelve JSON {\"findings\": [{\"type\": \"RISK|QA_FINDING\", \"severity\": string, \"file\": string, \"line\": number, \"issue\": string}]}.${graphHooks}`)},\n label: \"auditar: \" + p,\n schema: { type: \"object\", properties: { findings: { type: \"array\", items: { type: \"object\", properties: { type: { type: \"string\" }, severity: { type: \"string\" }, file: { type: \"string\" }, issue: { type: \"string\" } }, required: [\"type\", \"severity\", \"file\", \"issue\"] } } }, required: [\"findings\"] }\n })\n))\n\nphase(\"Report\")\nconst report = await agent({\n prompt: ${q('Sintetiza los hallazgos de auditoría en un informe Markdown ordenado por severidad, agrupado por perspectiva, con citas archivo:línea y recomendaciones priorizadas. Devuelve JSON {\"report\": string}.')},\n label: \"sintetizar auditoría\",\n schema: { type: \"object\", properties: { report: { type: \"string\" } }, required: [\"report\"] }\n})\n\nreturn report ? report.report : null\n`;\n}\n\n/**\n * Multi-perspective (§4): el mismo problema desde N ángulos → síntesis con\n * desacuerdos explícitos (no consenso falso).\n */\nexport function generateMultiPerspectiveScript(options: { perspectives?: number } = {}): string {\n\tconst n = Math.min(Math.max(options.perspectives ?? 4, 2), 8);\n\tconst list = [\n\t\t\"correctitud e invariantes\",\n\t\t\"rendimiento y escalabilidad\",\n\t\t\"seguridad y confianza\",\n\t\t\"mantenibilidad y claridad\",\n\t\t\"producto y UX\",\n\t\t\"coste de operación\",\n\t].slice(0, n);\n\treturn `export const meta = {\n \"name\": \"multi_perspective\",\n \"description\": \"Análisis del mismo problema desde N perspectivas con desacuerdos explícitos\",\n \"phases\": [\n { \"title\": \"Perspectives\" },\n { \"title\": \"Synthesize\" }\n ]\n}\n\nphase(\"Perspectives\")\nconst views = await parallel(${JSON.stringify(list)}.map((p, i) => () =>\n agent({\n prompt: ${q(\"Analiza este problema: \")} + (args.problem ?? \"\") +\n ${q(\"\\nDesde la perspectiva: \")} + p +\n ${q('\\nDa tu análisis, recomendación y riesgos. Devuelve JSON {\"perspective\": string, \"recommendation\": string, \"risks\": [string]}.')},\n label: \"perspectiva: \" + p,\n schema: { type: \"object\", properties: { perspective: { type: \"string\" }, recommendation: { type: \"string\" }, risks: { type: \"array\", items: { type: \"string\" } } }, required: [\"perspective\", \"recommendation\"] }\n })\n))\n\nphase(\"Synthesize\")\nconst synthesis = await agent({\n prompt: ${q('Sintetiza los análisis. SEÑALA EXPLÍCITAMENTE los desacuerdos entre perspectivas (no creas consenso falso). Devuelve JSON {\"summary\": string, \"disagreements\": [string], \"recommended\": string}.')},\n label: \"sintetizar análisis\",\n schema: { type: \"object\", properties: { summary: { type: \"string\" }, disagreements: { type: \"array\", items: { type: \"string\" } }, recommended: { type: \"string\" } }, required: [\"summary\", \"recommended\"] }\n})\n\nreturn synthesis ? synthesis.summary || JSON.stringify(synthesis) : null\n`;\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Esquema de salida de un subagente.
|
|
3
|
+
*
|
|
4
|
+
* Se declara en el frontmatter de su definición (`~/.ada/agents/<n>.md`,
|
|
5
|
+
* campo `outputSchema`) o se pasa por el script del workflow
|
|
6
|
+
* (`agent({ schema })`). El host valida la salida contra él — ver
|
|
7
|
+
* `validador.ts` para el reintento cuando no valida.
|
|
8
|
+
*
|
|
9
|
+
* typebox 1.x serializa `Type.Object(...)` como JSON Schema plano (sin
|
|
10
|
+
* símbolos ni funciones), así que un `outputSchema:` escrito a mano en YAML
|
|
11
|
+
* es intercambiable con un `Type.Object(...)` del script sin ningún paso de
|
|
12
|
+
* conversión — YAML anidado y JSON Schema son la misma forma.
|
|
13
|
+
*/
|
|
14
|
+
import type { TSchema } from "typebox";
|
|
15
|
+
export interface ResultadoComprobacion {
|
|
16
|
+
valida: boolean;
|
|
17
|
+
/** Un mensaje por error, con su ruta dentro del valor. Vacío si `valida`. */
|
|
18
|
+
errores: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Comprueba que `valor` TIENE PINTA de JSON Schema antes de usarlo para
|
|
22
|
+
* validar nada.
|
|
23
|
+
*
|
|
24
|
+
* Un esquema vacío (`{}`) o sin ninguna de estas claves acepta CUALQUIER
|
|
25
|
+
* valor sin restricción — eso no es "sin esquema" (que el caller distingue
|
|
26
|
+
* con `undefined`/ausencia del campo), es un esquema declarado pero roto, y
|
|
27
|
+
* dejarlo pasar haría que todo "validara" en silencio.
|
|
28
|
+
*/
|
|
29
|
+
export declare function esEsquemaValido(valor: unknown): valor is TSchema;
|
|
30
|
+
/** Comprueba `valor` contra `esquema`. Errores concretos: ruta + motivo. */
|
|
31
|
+
export declare function comprobar(esquema: TSchema, valor: unknown): ResultadoComprobacion;
|
|
32
|
+
//# sourceMappingURL=esquema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esquema.d.ts","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/esquema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAIhE;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAIjF","sourcesContent":["/**\n * Esquema de salida de un subagente.\n *\n * Se declara en el frontmatter de su definición (`~/.ada/agents/<n>.md`,\n * campo `outputSchema`) o se pasa por el script del workflow\n * (`agent({ schema })`). El host valida la salida contra él — ver\n * `validador.ts` para el reintento cuando no valida.\n *\n * typebox 1.x serializa `Type.Object(...)` como JSON Schema plano (sin\n * símbolos ni funciones), así que un `outputSchema:` escrito a mano en YAML\n * es intercambiable con un `Type.Object(...)` del script sin ningún paso de\n * conversión — YAML anidado y JSON Schema son la misma forma.\n */\nimport type { TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\n\nexport interface ResultadoComprobacion {\n\tvalida: boolean;\n\t/** Un mensaje por error, con su ruta dentro del valor. Vacío si `valida`. */\n\terrores: string[];\n}\n\nconst CLAVES_DE_FORMA = [\"type\", \"properties\", \"anyOf\", \"oneOf\", \"allOf\", \"$ref\", \"enum\", \"const\"] as const;\n\n/**\n * Comprueba que `valor` TIENE PINTA de JSON Schema antes de usarlo para\n * validar nada.\n *\n * Un esquema vacío (`{}`) o sin ninguna de estas claves acepta CUALQUIER\n * valor sin restricción — eso no es \"sin esquema\" (que el caller distingue\n * con `undefined`/ausencia del campo), es un esquema declarado pero roto, y\n * dejarlo pasar haría que todo \"validara\" en silencio.\n */\nexport function esEsquemaValido(valor: unknown): valor is TSchema {\n\tif (valor === null || typeof valor !== \"object\" || Array.isArray(valor)) return false;\n\tconst claves = Object.keys(valor as Record<string, unknown>);\n\treturn claves.some((c) => (CLAVES_DE_FORMA as readonly string[]).includes(c));\n}\n\n/** Comprueba `valor` contra `esquema`. Errores concretos: ruta + motivo. */\nexport function comprobar(esquema: TSchema, valor: unknown): ResultadoComprobacion {\n\tif (Value.Check(esquema, valor)) return { valida: true, errores: [] };\n\tconst errores = [...Value.Errors(esquema, valor)].map((e) => `${e.instancePath || \"(raíz)\"}: ${e.message}`);\n\treturn { valida: false, errores };\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Value } from "typebox/value";
|
|
2
|
+
const CLAVES_DE_FORMA = ["type", "properties", "anyOf", "oneOf", "allOf", "$ref", "enum", "const"];
|
|
3
|
+
/**
|
|
4
|
+
* Comprueba que `valor` TIENE PINTA de JSON Schema antes de usarlo para
|
|
5
|
+
* validar nada.
|
|
6
|
+
*
|
|
7
|
+
* Un esquema vacío (`{}`) o sin ninguna de estas claves acepta CUALQUIER
|
|
8
|
+
* valor sin restricción — eso no es "sin esquema" (que el caller distingue
|
|
9
|
+
* con `undefined`/ausencia del campo), es un esquema declarado pero roto, y
|
|
10
|
+
* dejarlo pasar haría que todo "validara" en silencio.
|
|
11
|
+
*/
|
|
12
|
+
export function esEsquemaValido(valor) {
|
|
13
|
+
if (valor === null || typeof valor !== "object" || Array.isArray(valor))
|
|
14
|
+
return false;
|
|
15
|
+
const claves = Object.keys(valor);
|
|
16
|
+
return claves.some((c) => CLAVES_DE_FORMA.includes(c));
|
|
17
|
+
}
|
|
18
|
+
/** Comprueba `valor` contra `esquema`. Errores concretos: ruta + motivo. */
|
|
19
|
+
export function comprobar(esquema, valor) {
|
|
20
|
+
if (Value.Check(esquema, valor))
|
|
21
|
+
return { valida: true, errores: [] };
|
|
22
|
+
const errores = [...Value.Errors(esquema, valor)].map((e) => `${e.instancePath || "(raíz)"}: ${e.message}`);
|
|
23
|
+
return { valida: false, errores };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=esquema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esquema.js","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/esquema.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQtC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE5G;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAoB;IACjE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,eAAqC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC9E;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE,KAAc,EAAyB;IAClF,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,SAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,CAClC","sourcesContent":["/**\n * Esquema de salida de un subagente.\n *\n * Se declara en el frontmatter de su definición (`~/.ada/agents/<n>.md`,\n * campo `outputSchema`) o se pasa por el script del workflow\n * (`agent({ schema })`). El host valida la salida contra él — ver\n * `validador.ts` para el reintento cuando no valida.\n *\n * typebox 1.x serializa `Type.Object(...)` como JSON Schema plano (sin\n * símbolos ni funciones), así que un `outputSchema:` escrito a mano en YAML\n * es intercambiable con un `Type.Object(...)` del script sin ningún paso de\n * conversión — YAML anidado y JSON Schema son la misma forma.\n */\nimport type { TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\n\nexport interface ResultadoComprobacion {\n\tvalida: boolean;\n\t/** Un mensaje por error, con su ruta dentro del valor. Vacío si `valida`. */\n\terrores: string[];\n}\n\nconst CLAVES_DE_FORMA = [\"type\", \"properties\", \"anyOf\", \"oneOf\", \"allOf\", \"$ref\", \"enum\", \"const\"] as const;\n\n/**\n * Comprueba que `valor` TIENE PINTA de JSON Schema antes de usarlo para\n * validar nada.\n *\n * Un esquema vacío (`{}`) o sin ninguna de estas claves acepta CUALQUIER\n * valor sin restricción — eso no es \"sin esquema\" (que el caller distingue\n * con `undefined`/ausencia del campo), es un esquema declarado pero roto, y\n * dejarlo pasar haría que todo \"validara\" en silencio.\n */\nexport function esEsquemaValido(valor: unknown): valor is TSchema {\n\tif (valor === null || typeof valor !== \"object\" || Array.isArray(valor)) return false;\n\tconst claves = Object.keys(valor as Record<string, unknown>);\n\treturn claves.some((c) => (CLAVES_DE_FORMA as readonly string[]).includes(c));\n}\n\n/** Comprueba `valor` contra `esquema`. Errores concretos: ruta + motivo. */\nexport function comprobar(esquema: TSchema, valor: unknown): ResultadoComprobacion {\n\tif (Value.Check(esquema, valor)) return { valida: true, errores: [] };\n\tconst errores = [...Value.Errors(esquema, valor)].map((e) => `${e.instancePath || \"(raíz)\"}: ${e.message}`);\n\treturn { valida: false, errores };\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reparación de argumentos de tool mal formados, ANTES de gastar un turno en
|
|
3
|
+
* un error de validación.
|
|
4
|
+
*
|
|
5
|
+
* Dos capas, deliberadamente separadas porque arreglan cosas distintas:
|
|
6
|
+
*
|
|
7
|
+
* 1. `repararJSON` — un campo de texto que debería ser un objeto/array llega
|
|
8
|
+
* con una coma colgante o doblemente serializado (fallos típicos de LLM).
|
|
9
|
+
* Parseo tolerante con UN solo intento de arreglo; nunca reescribe
|
|
10
|
+
* comillas simples ni añade comillas a claves sueltas — eso puede corromper
|
|
11
|
+
* contenido legítimo (código, texto con comillas), y aquí perder el atajo
|
|
12
|
+
* es barato, pero corromper datos no lo es.
|
|
13
|
+
*
|
|
14
|
+
* 2. `repararConEsquema` — campo de más (`additionalProperties: false`) y
|
|
15
|
+
* número/booleano-como-cadena, en las propiedades del NIVEL SUPERIOR del
|
|
16
|
+
* objeto. Lee `type`/`properties`/`additionalProperties` directamente del
|
|
17
|
+
* esquema en vez de delegar en `Value.Clean`/`Value.Convert` de
|
|
18
|
+
* `typebox/value`: esas dos SOLO reconocen esquemas construidos con
|
|
19
|
+
* `Type.Object(...)` (llevan una marca interna de "tipo de nodo" que
|
|
20
|
+
* `JSON.stringify` no serializa); un esquema declarado a mano en YAML
|
|
21
|
+
* (`outputSchema:` del frontmatter de un agente, parseado a un objeto
|
|
22
|
+
* plano) NO la lleva, y Clean/Convert se quedan calladas sin tocar nada —
|
|
23
|
+
* un "no pude" disfrazado de éxito, descubierto ejecutándolo de verdad, no
|
|
24
|
+
* leyendo la documentación. Leer la forma JSON a pelo funciona igual para
|
|
25
|
+
* los dos orígenes, porque ambos SON JSON Schema plano una vez
|
|
26
|
+
* serializados.
|
|
27
|
+
*
|
|
28
|
+
* Nunca inventa un valor para un campo que no se puede convertir de
|
|
29
|
+
* verdad (una cadena "abc" en un campo number se queda "abc", no se
|
|
30
|
+
* convierte en `0`) — un valor inventado en silencio es peor que el error
|
|
31
|
+
* que reemplaza, exactamente el defecto que la regla del proyecto prohíbe
|
|
32
|
+
* (que "no pude" se lea como éxito).
|
|
33
|
+
*/
|
|
34
|
+
import type { TSchema } from "typebox";
|
|
35
|
+
export interface JSONReparado {
|
|
36
|
+
valor: unknown;
|
|
37
|
+
/** true si hizo falta el arreglo de coma colgante (el parseo directo falló). */
|
|
38
|
+
reparado: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parseo tolerante de JSON: intento directo y, si falla, un único intento
|
|
42
|
+
* tras quitar comas colgantes. `undefined` si ninguno de los dos vale —
|
|
43
|
+
* "no pude repararlo", no "el valor es nulo".
|
|
44
|
+
*/
|
|
45
|
+
export declare function repararJSON(texto: string): JSONReparado | undefined;
|
|
46
|
+
export interface ValorReparado {
|
|
47
|
+
valor: unknown;
|
|
48
|
+
/** true si se quitó algún campo de más o se convirtió algún tipo. */
|
|
49
|
+
reparado: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Repara `valor` contra `esquema`: quita campos de más del nivel superior
|
|
53
|
+
* cuando el esquema es cerrado (`additionalProperties: false`) y convierte
|
|
54
|
+
* número-como-cadena / booleano-como-cadena en las propiedades declaradas,
|
|
55
|
+
* SOLO cuando la conversión es real. Sin recursión: opera en el objeto de
|
|
56
|
+
* argumentos de una tool, que es plano por construcción.
|
|
57
|
+
*/
|
|
58
|
+
export declare function repararConEsquema(esquema: TSchema, valor: unknown): ValorReparado;
|
|
59
|
+
/**
|
|
60
|
+
* `prepareArguments` genérico para un `ToolDefinition`: aplica `repararJSON`
|
|
61
|
+
* a los campos de texto indicados (los que un modelo puede mandar doblemente
|
|
62
|
+
* serializados) y luego `repararConEsquema` al objeto entero. Solo sustituye
|
|
63
|
+
* un campo de texto cuando el JSON reparado es un objeto o array — un valor
|
|
64
|
+
* de texto que por casualidad parsea como número o booleano ("42", "true") se
|
|
65
|
+
* deja tal cual: ahí el texto original es casi siempre lo que el modelo quiso
|
|
66
|
+
* decir, no un valor doblemente serializado.
|
|
67
|
+
*/
|
|
68
|
+
export declare function repararArgumentos<T = unknown>(esquema: TSchema, camposTexto?: string[]): (args: unknown) => T;
|
|
69
|
+
//# sourceMappingURL=reparar-argumentos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reparar-argumentos.d.ts","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/reparar-argumentos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOvC,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,iFAAgF;IAChF,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAanE;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,0EAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CAClB;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAuCjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAiBjH","sourcesContent":["/**\n * Reparación de argumentos de tool mal formados, ANTES de gastar un turno en\n * un error de validación.\n *\n * Dos capas, deliberadamente separadas porque arreglan cosas distintas:\n *\n * 1. `repararJSON` — un campo de texto que debería ser un objeto/array llega\n * con una coma colgante o doblemente serializado (fallos típicos de LLM).\n * Parseo tolerante con UN solo intento de arreglo; nunca reescribe\n * comillas simples ni añade comillas a claves sueltas — eso puede corromper\n * contenido legítimo (código, texto con comillas), y aquí perder el atajo\n * es barato, pero corromper datos no lo es.\n *\n * 2. `repararConEsquema` — campo de más (`additionalProperties: false`) y\n * número/booleano-como-cadena, en las propiedades del NIVEL SUPERIOR del\n * objeto. Lee `type`/`properties`/`additionalProperties` directamente del\n * esquema en vez de delegar en `Value.Clean`/`Value.Convert` de\n * `typebox/value`: esas dos SOLO reconocen esquemas construidos con\n * `Type.Object(...)` (llevan una marca interna de \"tipo de nodo\" que\n * `JSON.stringify` no serializa); un esquema declarado a mano en YAML\n * (`outputSchema:` del frontmatter de un agente, parseado a un objeto\n * plano) NO la lleva, y Clean/Convert se quedan calladas sin tocar nada —\n * un \"no pude\" disfrazado de éxito, descubierto ejecutándolo de verdad, no\n * leyendo la documentación. Leer la forma JSON a pelo funciona igual para\n * los dos orígenes, porque ambos SON JSON Schema plano una vez\n * serializados.\n *\n * Nunca inventa un valor para un campo que no se puede convertir de\n * verdad (una cadena \"abc\" en un campo number se queda \"abc\", no se\n * convierte en `0`) — un valor inventado en silencio es peor que el error\n * que reemplaza, exactamente el defecto que la regla del proyecto prohíbe\n * (que \"no pude\" se lea como éxito).\n */\nimport type { TSchema } from \"typebox\";\n\n/** Quita una coma colgante antes de `}`/`]` — el error de JSON más común de un LLM. */\nfunction quitarComaColgante(texto: string): string {\n\treturn texto.replace(/,(\\s*[}\\]])/g, \"$1\");\n}\n\nexport interface JSONReparado {\n\tvalor: unknown;\n\t/** true si hizo falta el arreglo de coma colgante (el parseo directo falló). */\n\treparado: boolean;\n}\n\n/**\n * Parseo tolerante de JSON: intento directo y, si falla, un único intento\n * tras quitar comas colgantes. `undefined` si ninguno de los dos vale —\n * \"no pude repararlo\", no \"el valor es nulo\".\n */\nexport function repararJSON(texto: string): JSONReparado | undefined {\n\ttry {\n\t\treturn { valor: JSON.parse(texto), reparado: false };\n\t} catch {\n\t\t// sigue con el intento de arreglo\n\t}\n\tconst sinComa = quitarComaColgante(texto);\n\tif (sinComa === texto) return undefined;\n\ttry {\n\t\treturn { valor: JSON.parse(sinComa), reparado: true };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport interface ValorReparado {\n\tvalor: unknown;\n\t/** true si se quitó algún campo de más o se convirtió algún tipo. */\n\treparado: boolean;\n}\n\ninterface FormaObjeto {\n\ttype?: unknown;\n\tproperties?: Record<string, { type?: unknown }>;\n\tadditionalProperties?: unknown;\n}\n\nfunction comoNumero(texto: string): number | undefined {\n\tif (texto.trim() === \"\") return undefined;\n\tconst n = Number(texto);\n\treturn Number.isFinite(n) ? n : undefined;\n}\n\nfunction comoBooleano(texto: string): boolean | undefined {\n\tif (texto === \"true\") return true;\n\tif (texto === \"false\") return false;\n\treturn undefined;\n}\n\n/**\n * Repara `valor` contra `esquema`: quita campos de más del nivel superior\n * cuando el esquema es cerrado (`additionalProperties: false`) y convierte\n * número-como-cadena / booleano-como-cadena en las propiedades declaradas,\n * SOLO cuando la conversión es real. Sin recursión: opera en el objeto de\n * argumentos de una tool, que es plano por construcción.\n */\nexport function repararConEsquema(esquema: TSchema, valor: unknown): ValorReparado {\n\tif (valor === null || typeof valor !== \"object\" || Array.isArray(valor)) return { valor, reparado: false };\n\tconst forma = esquema as FormaObjeto;\n\tif (forma.type !== \"object\" || forma.properties === null || typeof forma.properties !== \"object\") {\n\t\treturn { valor, reparado: false };\n\t}\n\tconst propiedades = forma.properties;\n\tconst cerrado = forma.additionalProperties === false;\n\tlet reparado = false;\n\tconst salida: Record<string, unknown> = {};\n\tfor (const [clave, actual] of Object.entries(valor as Record<string, unknown>)) {\n\t\tconst propEsquema = propiedades[clave];\n\t\tif (!propEsquema) {\n\t\t\tif (cerrado) {\n\t\t\t\treparado = true; // campo de más: se quita\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsalida[clave] = actual;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof actual === \"string\" && propEsquema.type === \"number\") {\n\t\t\tconst convertido = comoNumero(actual);\n\t\t\tif (convertido !== undefined) {\n\t\t\t\tsalida[clave] = convertido;\n\t\t\t\treparado = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (typeof actual === \"string\" && propEsquema.type === \"boolean\") {\n\t\t\tconst convertido = comoBooleano(actual);\n\t\t\tif (convertido !== undefined) {\n\t\t\t\tsalida[clave] = convertido;\n\t\t\t\treparado = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tsalida[clave] = actual;\n\t}\n\treturn { valor: salida, reparado };\n}\n\n/**\n * `prepareArguments` genérico para un `ToolDefinition`: aplica `repararJSON`\n * a los campos de texto indicados (los que un modelo puede mandar doblemente\n * serializados) y luego `repararConEsquema` al objeto entero. Solo sustituye\n * un campo de texto cuando el JSON reparado es un objeto o array — un valor\n * de texto que por casualidad parsea como número o booleano (\"42\", \"true\") se\n * deja tal cual: ahí el texto original es casi siempre lo que el modelo quiso\n * decir, no un valor doblemente serializado.\n */\nexport function repararArgumentos<T = unknown>(esquema: TSchema, camposTexto: string[] = []): (args: unknown) => T {\n\treturn (args: unknown): T => {\n\t\tif (args === null || typeof args !== \"object\") return args as T;\n\t\tlet objeto = args as Record<string, unknown>;\n\t\tlet huboReparoDeTexto = false;\n\t\tfor (const campo of camposTexto) {\n\t\t\tconst bruto = objeto[campo];\n\t\t\tif (typeof bruto !== \"string\") continue;\n\t\t\tconst parseado = repararJSON(bruto);\n\t\t\tif (parseado && parseado.valor !== null && typeof parseado.valor === \"object\") {\n\t\t\t\tobjeto = { ...objeto, [campo]: parseado.valor };\n\t\t\t\thuboReparoDeTexto = true;\n\t\t\t}\n\t\t}\n\t\tconst { valor, reparado } = repararConEsquema(esquema, objeto);\n\t\treturn (huboReparoDeTexto || reparado ? valor : args) as T;\n\t};\n}\n"]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/** Quita una coma colgante antes de `}`/`]` — el error de JSON más común de un LLM. */
|
|
2
|
+
function quitarComaColgante(texto) {
|
|
3
|
+
return texto.replace(/,(\s*[}\]])/g, "$1");
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Parseo tolerante de JSON: intento directo y, si falla, un único intento
|
|
7
|
+
* tras quitar comas colgantes. `undefined` si ninguno de los dos vale —
|
|
8
|
+
* "no pude repararlo", no "el valor es nulo".
|
|
9
|
+
*/
|
|
10
|
+
export function repararJSON(texto) {
|
|
11
|
+
try {
|
|
12
|
+
return { valor: JSON.parse(texto), reparado: false };
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// sigue con el intento de arreglo
|
|
16
|
+
}
|
|
17
|
+
const sinComa = quitarComaColgante(texto);
|
|
18
|
+
if (sinComa === texto)
|
|
19
|
+
return undefined;
|
|
20
|
+
try {
|
|
21
|
+
return { valor: JSON.parse(sinComa), reparado: true };
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function comoNumero(texto) {
|
|
28
|
+
if (texto.trim() === "")
|
|
29
|
+
return undefined;
|
|
30
|
+
const n = Number(texto);
|
|
31
|
+
return Number.isFinite(n) ? n : undefined;
|
|
32
|
+
}
|
|
33
|
+
function comoBooleano(texto) {
|
|
34
|
+
if (texto === "true")
|
|
35
|
+
return true;
|
|
36
|
+
if (texto === "false")
|
|
37
|
+
return false;
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Repara `valor` contra `esquema`: quita campos de más del nivel superior
|
|
42
|
+
* cuando el esquema es cerrado (`additionalProperties: false`) y convierte
|
|
43
|
+
* número-como-cadena / booleano-como-cadena en las propiedades declaradas,
|
|
44
|
+
* SOLO cuando la conversión es real. Sin recursión: opera en el objeto de
|
|
45
|
+
* argumentos de una tool, que es plano por construcción.
|
|
46
|
+
*/
|
|
47
|
+
export function repararConEsquema(esquema, valor) {
|
|
48
|
+
if (valor === null || typeof valor !== "object" || Array.isArray(valor))
|
|
49
|
+
return { valor, reparado: false };
|
|
50
|
+
const forma = esquema;
|
|
51
|
+
if (forma.type !== "object" || forma.properties === null || typeof forma.properties !== "object") {
|
|
52
|
+
return { valor, reparado: false };
|
|
53
|
+
}
|
|
54
|
+
const propiedades = forma.properties;
|
|
55
|
+
const cerrado = forma.additionalProperties === false;
|
|
56
|
+
let reparado = false;
|
|
57
|
+
const salida = {};
|
|
58
|
+
for (const [clave, actual] of Object.entries(valor)) {
|
|
59
|
+
const propEsquema = propiedades[clave];
|
|
60
|
+
if (!propEsquema) {
|
|
61
|
+
if (cerrado) {
|
|
62
|
+
reparado = true; // campo de más: se quita
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
salida[clave] = actual;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (typeof actual === "string" && propEsquema.type === "number") {
|
|
69
|
+
const convertido = comoNumero(actual);
|
|
70
|
+
if (convertido !== undefined) {
|
|
71
|
+
salida[clave] = convertido;
|
|
72
|
+
reparado = true;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (typeof actual === "string" && propEsquema.type === "boolean") {
|
|
77
|
+
const convertido = comoBooleano(actual);
|
|
78
|
+
if (convertido !== undefined) {
|
|
79
|
+
salida[clave] = convertido;
|
|
80
|
+
reparado = true;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
salida[clave] = actual;
|
|
85
|
+
}
|
|
86
|
+
return { valor: salida, reparado };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* `prepareArguments` genérico para un `ToolDefinition`: aplica `repararJSON`
|
|
90
|
+
* a los campos de texto indicados (los que un modelo puede mandar doblemente
|
|
91
|
+
* serializados) y luego `repararConEsquema` al objeto entero. Solo sustituye
|
|
92
|
+
* un campo de texto cuando el JSON reparado es un objeto o array — un valor
|
|
93
|
+
* de texto que por casualidad parsea como número o booleano ("42", "true") se
|
|
94
|
+
* deja tal cual: ahí el texto original es casi siempre lo que el modelo quiso
|
|
95
|
+
* decir, no un valor doblemente serializado.
|
|
96
|
+
*/
|
|
97
|
+
export function repararArgumentos(esquema, camposTexto = []) {
|
|
98
|
+
return (args) => {
|
|
99
|
+
if (args === null || typeof args !== "object")
|
|
100
|
+
return args;
|
|
101
|
+
let objeto = args;
|
|
102
|
+
let huboReparoDeTexto = false;
|
|
103
|
+
for (const campo of camposTexto) {
|
|
104
|
+
const bruto = objeto[campo];
|
|
105
|
+
if (typeof bruto !== "string")
|
|
106
|
+
continue;
|
|
107
|
+
const parseado = repararJSON(bruto);
|
|
108
|
+
if (parseado && parseado.valor !== null && typeof parseado.valor === "object") {
|
|
109
|
+
objeto = { ...objeto, [campo]: parseado.valor };
|
|
110
|
+
huboReparoDeTexto = true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const { valor, reparado } = repararConEsquema(esquema, objeto);
|
|
114
|
+
return (huboReparoDeTexto || reparado ? valor : args);
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=reparar-argumentos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reparar-argumentos.js","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/reparar-argumentos.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Reparación de argumentos de tool mal formados, ANTES de gastar un turno en\n * un error de validación.\n *\n * Dos capas, deliberadamente separadas porque arreglan cosas distintas:\n *\n * 1. `repararJSON` — un campo de texto que debería ser un objeto/array llega\n * con una coma colgante o doblemente serializado (fallos típicos de LLM).\n * Parseo tolerante con UN solo intento de arreglo; nunca reescribe\n * comillas simples ni añade comillas a claves sueltas — eso puede corromper\n * contenido legítimo (código, texto con comillas), y aquí perder el atajo\n * es barato, pero corromper datos no lo es.\n *\n * 2. `repararConEsquema` — campo de más (`additionalProperties: false`) y\n * número/booleano-como-cadena, en las propiedades del NIVEL SUPERIOR del\n * objeto. Lee `type`/`properties`/`additionalProperties` directamente del\n * esquema en vez de delegar en `Value.Clean`/`Value.Convert` de\n * `typebox/value`: esas dos SOLO reconocen esquemas construidos con\n * `Type.Object(...)` (llevan una marca interna de \"tipo de nodo\" que\n * `JSON.stringify` no serializa); un esquema declarado a mano en YAML\n * (`outputSchema:` del frontmatter de un agente, parseado a un objeto\n * plano) NO la lleva, y Clean/Convert se quedan calladas sin tocar nada —\n * un \"no pude\" disfrazado de éxito, descubierto ejecutándolo de verdad, no\n * leyendo la documentación. Leer la forma JSON a pelo funciona igual para\n * los dos orígenes, porque ambos SON JSON Schema plano una vez\n * serializados.\n *\n * Nunca inventa un valor para un campo que no se puede convertir de\n * verdad (una cadena \"abc\" en un campo number se queda \"abc\", no se\n * convierte en `0`) — un valor inventado en silencio es peor que el error\n * que reemplaza, exactamente el defecto que la regla del proyecto prohíbe\n * (que \"no pude\" se lea como éxito).\n */\nimport type { TSchema } from \"typebox\";\n\n/** Quita una coma colgante antes de `}`/`]` — el error de JSON más común de un LLM. */\nfunction quitarComaColgante(texto: string): string {\n\treturn texto.replace(/,(\\s*[}\\]])/g, \"$1\");\n}\n\nexport interface JSONReparado {\n\tvalor: unknown;\n\t/** true si hizo falta el arreglo de coma colgante (el parseo directo falló). */\n\treparado: boolean;\n}\n\n/**\n * Parseo tolerante de JSON: intento directo y, si falla, un único intento\n * tras quitar comas colgantes. `undefined` si ninguno de los dos vale —\n * \"no pude repararlo\", no \"el valor es nulo\".\n */\nexport function repararJSON(texto: string): JSONReparado | undefined {\n\ttry {\n\t\treturn { valor: JSON.parse(texto), reparado: false };\n\t} catch {\n\t\t// sigue con el intento de arreglo\n\t}\n\tconst sinComa = quitarComaColgante(texto);\n\tif (sinComa === texto) return undefined;\n\ttry {\n\t\treturn { valor: JSON.parse(sinComa), reparado: true };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport interface ValorReparado {\n\tvalor: unknown;\n\t/** true si se quitó algún campo de más o se convirtió algún tipo. */\n\treparado: boolean;\n}\n\ninterface FormaObjeto {\n\ttype?: unknown;\n\tproperties?: Record<string, { type?: unknown }>;\n\tadditionalProperties?: unknown;\n}\n\nfunction comoNumero(texto: string): number | undefined {\n\tif (texto.trim() === \"\") return undefined;\n\tconst n = Number(texto);\n\treturn Number.isFinite(n) ? n : undefined;\n}\n\nfunction comoBooleano(texto: string): boolean | undefined {\n\tif (texto === \"true\") return true;\n\tif (texto === \"false\") return false;\n\treturn undefined;\n}\n\n/**\n * Repara `valor` contra `esquema`: quita campos de más del nivel superior\n * cuando el esquema es cerrado (`additionalProperties: false`) y convierte\n * número-como-cadena / booleano-como-cadena en las propiedades declaradas,\n * SOLO cuando la conversión es real. Sin recursión: opera en el objeto de\n * argumentos de una tool, que es plano por construcción.\n */\nexport function repararConEsquema(esquema: TSchema, valor: unknown): ValorReparado {\n\tif (valor === null || typeof valor !== \"object\" || Array.isArray(valor)) return { valor, reparado: false };\n\tconst forma = esquema as FormaObjeto;\n\tif (forma.type !== \"object\" || forma.properties === null || typeof forma.properties !== \"object\") {\n\t\treturn { valor, reparado: false };\n\t}\n\tconst propiedades = forma.properties;\n\tconst cerrado = forma.additionalProperties === false;\n\tlet reparado = false;\n\tconst salida: Record<string, unknown> = {};\n\tfor (const [clave, actual] of Object.entries(valor as Record<string, unknown>)) {\n\t\tconst propEsquema = propiedades[clave];\n\t\tif (!propEsquema) {\n\t\t\tif (cerrado) {\n\t\t\t\treparado = true; // campo de más: se quita\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsalida[clave] = actual;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof actual === \"string\" && propEsquema.type === \"number\") {\n\t\t\tconst convertido = comoNumero(actual);\n\t\t\tif (convertido !== undefined) {\n\t\t\t\tsalida[clave] = convertido;\n\t\t\t\treparado = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (typeof actual === \"string\" && propEsquema.type === \"boolean\") {\n\t\t\tconst convertido = comoBooleano(actual);\n\t\t\tif (convertido !== undefined) {\n\t\t\t\tsalida[clave] = convertido;\n\t\t\t\treparado = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tsalida[clave] = actual;\n\t}\n\treturn { valor: salida, reparado };\n}\n\n/**\n * `prepareArguments` genérico para un `ToolDefinition`: aplica `repararJSON`\n * a los campos de texto indicados (los que un modelo puede mandar doblemente\n * serializados) y luego `repararConEsquema` al objeto entero. Solo sustituye\n * un campo de texto cuando el JSON reparado es un objeto o array — un valor\n * de texto que por casualidad parsea como número o booleano (\"42\", \"true\") se\n * deja tal cual: ahí el texto original es casi siempre lo que el modelo quiso\n * decir, no un valor doblemente serializado.\n */\nexport function repararArgumentos<T = unknown>(esquema: TSchema, camposTexto: string[] = []): (args: unknown) => T {\n\treturn (args: unknown): T => {\n\t\tif (args === null || typeof args !== \"object\") return args as T;\n\t\tlet objeto = args as Record<string, unknown>;\n\t\tlet huboReparoDeTexto = false;\n\t\tfor (const campo of camposTexto) {\n\t\t\tconst bruto = objeto[campo];\n\t\t\tif (typeof bruto !== \"string\") continue;\n\t\t\tconst parseado = repararJSON(bruto);\n\t\t\tif (parseado && parseado.valor !== null && typeof parseado.valor === \"object\") {\n\t\t\t\tobjeto = { ...objeto, [campo]: parseado.valor };\n\t\t\t\thuboReparoDeTexto = true;\n\t\t\t}\n\t\t}\n\t\tconst { valor, reparado } = repararConEsquema(esquema, objeto);\n\t\treturn (huboReparoDeTexto || reparado ? valor : args) as T;\n\t};\n}\n"]}
|