@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,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ¿La edición ha introducido un error de TIPOS?
|
|
3
|
+
*
|
|
4
|
+
* `parseo.ts` responde si el fichero sigue siendo sintácticamente válido, que
|
|
5
|
+
* es el fallo más burdo. Este responde el siguiente: el fichero parsea, pero
|
|
6
|
+
* llamas a la función con un argumento de más, o le pasas una cadena donde
|
|
7
|
+
* esperaba un número. Hasta ahora eso solo salía al ejecutar `npm run check`,
|
|
8
|
+
* que el modelo no lanza solo.
|
|
9
|
+
*
|
|
10
|
+
* oh-my-pi lo resuelve con un cliente LSP (9.920 líneas) que necesita un
|
|
11
|
+
* servidor de lenguaje instalado. Aquí sale del compilador de TypeScript que ya
|
|
12
|
+
* está en el proyecto, con un `LanguageService` que mantiene el programa vivo
|
|
13
|
+
* entre ediciones. Medido sobre este repositorio (343 ficheros):
|
|
14
|
+
*
|
|
15
|
+
* primera comprobación 2.500 ms (una vez por proyecto, perezosa)
|
|
16
|
+
* otro fichero 14 ms
|
|
17
|
+
* tras cambiar el fichero 124-220 ms
|
|
18
|
+
*
|
|
19
|
+
* LA PRECONDICIÓN QUE LO HACE USABLE
|
|
20
|
+
*
|
|
21
|
+
* Solo se informa de lo que la edición ha INTRODUCIDO. Un repositorio a medio
|
|
22
|
+
* refactorizar tiene cientos de errores de tipos, y volcárselos al modelo en
|
|
23
|
+
* cada edición sería ruido puro: dejaría de leerlos el primer día y con ellos
|
|
24
|
+
* el que sí importaba. Se comparan los diagnósticos de antes y los de después,
|
|
25
|
+
* y solo viajan los nuevos.
|
|
26
|
+
*
|
|
27
|
+
* Y solo se paga cuando hace falta: si después de la edición no hay ningún
|
|
28
|
+
* diagnóstico, no se calcula el "antes". La mayoría de ediciones son correctas,
|
|
29
|
+
* así que el caso normal es una comprobación, no dos.
|
|
30
|
+
*/
|
|
31
|
+
import { dirname } from "node:path";
|
|
32
|
+
import ts from "typescript";
|
|
33
|
+
/** Extensiones que tiene sentido comprobar. */
|
|
34
|
+
const COMPROBABLES = new Set([".ts", ".tsx", ".mts", ".cts"]);
|
|
35
|
+
/**
|
|
36
|
+
* Tope de ficheros por proyecto.
|
|
37
|
+
*
|
|
38
|
+
* En un monorepo gigante la primera comprobación se va de las manos y el
|
|
39
|
+
* usuario nota un parón que no ha pedido. Por encima del tope se calla y lo
|
|
40
|
+
* dice — que es distinto de decir que está todo bien.
|
|
41
|
+
*/
|
|
42
|
+
const TOPE_FICHEROS = 5000;
|
|
43
|
+
export class ComprobadorDeTipos {
|
|
44
|
+
/** Un servicio por `tsconfig`. Se reutiliza entre ediciones: es lo que hace que la segunda cueste 124 ms. */
|
|
45
|
+
proyectos = new Map();
|
|
46
|
+
descartados = new Map();
|
|
47
|
+
/** Por qué no se puede comprobar este fichero, o `null` si sí se puede. */
|
|
48
|
+
porQueNo(ruta) {
|
|
49
|
+
const punto = ruta.lastIndexOf(".");
|
|
50
|
+
if (punto === -1 || !COMPROBABLES.has(ruta.slice(punto).toLowerCase()))
|
|
51
|
+
return "extension-no-comprobable";
|
|
52
|
+
const cfg = this.buscarConfig(ruta);
|
|
53
|
+
if (!cfg)
|
|
54
|
+
return "sin-tsconfig";
|
|
55
|
+
return this.descartados.get(cfg) ?? null;
|
|
56
|
+
}
|
|
57
|
+
buscarConfig(ruta) {
|
|
58
|
+
return ts.findConfigFile(dirname(ruta), ts.sys.fileExists, "tsconfig.json");
|
|
59
|
+
}
|
|
60
|
+
proyectoDe(rutaConfig) {
|
|
61
|
+
const existente = this.proyectos.get(rutaConfig);
|
|
62
|
+
if (existente)
|
|
63
|
+
return existente;
|
|
64
|
+
if (this.descartados.has(rutaConfig))
|
|
65
|
+
return null;
|
|
66
|
+
const raiz = dirname(rutaConfig);
|
|
67
|
+
const cfg = ts.readConfigFile(rutaConfig, ts.sys.readFile);
|
|
68
|
+
if (cfg.error) {
|
|
69
|
+
this.descartados.set(rutaConfig, "sin-tsconfig");
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const parsed = ts.parseJsonConfigFileContent(cfg.config, ts.sys, raiz);
|
|
73
|
+
if (parsed.fileNames.length > TOPE_FICHEROS) {
|
|
74
|
+
this.descartados.set(rutaConfig, "proyecto-demasiado-grande");
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const overlay = new Map();
|
|
78
|
+
const versiones = new Map();
|
|
79
|
+
const host = {
|
|
80
|
+
getScriptFileNames: () => parsed.fileNames,
|
|
81
|
+
getScriptVersion: (f) => String(versiones.get(f) ?? 0),
|
|
82
|
+
getScriptSnapshot: (f) => {
|
|
83
|
+
const texto = overlay.get(f) ?? ts.sys.readFile(f);
|
|
84
|
+
return texto === undefined ? undefined : ts.ScriptSnapshot.fromString(texto);
|
|
85
|
+
},
|
|
86
|
+
getCurrentDirectory: () => raiz,
|
|
87
|
+
getCompilationSettings: () => parsed.options,
|
|
88
|
+
getDefaultLibFileName: (o) => ts.getDefaultLibFilePath(o),
|
|
89
|
+
fileExists: (f) => overlay.has(f) || ts.sys.fileExists(f),
|
|
90
|
+
readFile: (f) => overlay.get(f) ?? ts.sys.readFile(f),
|
|
91
|
+
readDirectory: ts.sys.readDirectory,
|
|
92
|
+
directoryExists: ts.sys.directoryExists,
|
|
93
|
+
getDirectories: ts.sys.getDirectories,
|
|
94
|
+
};
|
|
95
|
+
const proyecto = {
|
|
96
|
+
servicio: ts.createLanguageService(host, ts.createDocumentRegistry()),
|
|
97
|
+
overlay,
|
|
98
|
+
versiones,
|
|
99
|
+
raiz,
|
|
100
|
+
};
|
|
101
|
+
this.proyectos.set(rutaConfig, proyecto);
|
|
102
|
+
return proyecto;
|
|
103
|
+
}
|
|
104
|
+
/** Diagnósticos de un contenido concreto, sin tocar el disco. */
|
|
105
|
+
diagnosticar(proyecto, ruta, contenido) {
|
|
106
|
+
proyecto.overlay.set(ruta, contenido);
|
|
107
|
+
proyecto.versiones.set(ruta, (proyecto.versiones.get(ruta) ?? 0) + 1);
|
|
108
|
+
let brutos;
|
|
109
|
+
try {
|
|
110
|
+
brutos = proyecto.servicio.getSemanticDiagnostics(ruta);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Un fallo del servicio degrada la señal, no la sesión.
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
const fuente = proyecto.servicio.getProgram()?.getSourceFile(ruta);
|
|
117
|
+
return brutos.map((d) => {
|
|
118
|
+
const pos = fuente && d.start !== undefined ? fuente.getLineAndCharacterOfPosition(d.start) : null;
|
|
119
|
+
return { linea: pos ? pos.line + 1 : 0, mensaje: ts.flattenDiagnosticMessageText(d.messageText, " ") };
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Los errores de tipos que esta edición ha INTRODUCIDO.
|
|
124
|
+
*
|
|
125
|
+
* Devuelve lista vacía cuando no hay ninguno nuevo, y también cuando no se
|
|
126
|
+
* puede comprobar — para eso está `porQueNo()`, que quien llama debe mirar si
|
|
127
|
+
* quiere distinguir «no hay errores» de «no lo he mirado». Son cosas muy
|
|
128
|
+
* distintas y confundirlas es lo que convierte un aviso en una mentira.
|
|
129
|
+
*/
|
|
130
|
+
introducidos(ruta, antes, despues) {
|
|
131
|
+
if (this.porQueNo(ruta))
|
|
132
|
+
return [];
|
|
133
|
+
const cfg = this.buscarConfig(ruta);
|
|
134
|
+
if (!cfg)
|
|
135
|
+
return [];
|
|
136
|
+
const proyecto = this.proyectoDe(cfg);
|
|
137
|
+
if (!proyecto)
|
|
138
|
+
return [];
|
|
139
|
+
const despuesDiag = this.diagnosticar(proyecto, ruta, despues);
|
|
140
|
+
if (despuesDiag.length === 0) {
|
|
141
|
+
proyecto.overlay.delete(ruta);
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
// Solo aquí se paga la segunda comprobación: la mayoría de ediciones son
|
|
145
|
+
// correctas y salen por el `return` de arriba con una sola.
|
|
146
|
+
const antesDiag = antes === null ? [] : this.diagnosticar(proyecto, ruta, antes);
|
|
147
|
+
proyecto.overlay.delete(ruta);
|
|
148
|
+
const yaEstaban = new Set(antesDiag.map((d) => d.mensaje));
|
|
149
|
+
return despuesDiag.filter((d) => !yaEstaban.has(d.mensaje));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** El aviso para el modelo, o `null` si no hay nada que decir. */
|
|
153
|
+
export function avisoDeTipos(ruta, errores) {
|
|
154
|
+
if (errores.length === 0)
|
|
155
|
+
return null;
|
|
156
|
+
const lineas = errores.slice(0, 3).map((e) => ` línea ${e.linea}: ${e.mensaje}`);
|
|
157
|
+
const resto = errores.length > 3 ? `\n …y ${errores.length - 3} más` : "";
|
|
158
|
+
return `⚠ Esta edición introduce ${errores.length === 1 ? "un error" : `${errores.length} errores`} de tipos en \`${ruta}\`:\n${lineas.join("\n")}${resto}`;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=tipos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../../src/core/edicion/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5B,+CAA+C;AAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,IAAI,CAAC;AAY3B,MAAM,OAAO,kBAAkB;IAC9B,6GAA6G;IAC5F,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;IAErE,6EAA2E;IAC3E,QAAQ,CAAC,IAAY,EAA6B;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,0BAA0B,CAAC;QAC1G,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,cAAc,CAAC;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAAA,CACzC;IAEO,YAAY,CAAC,IAAY,EAAsB;QACtD,OAAO,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAAA,CAC5E;IAEO,UAAU,CAAC,UAAkB,EAAmB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,MAAM,IAAI,GAA2B;YACpC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;YAC1C,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAAA,CAC7E;YACD,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC/B,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;YAC5C,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACzD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa;YACnC,eAAe,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe;YACvC,cAAc,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc;SACrC,CAAC;QACF,MAAM,QAAQ,GAAa;YAC1B,QAAQ,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,CAAC;YACrE,OAAO;YACP,SAAS;YACT,IAAI;SACJ,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IAAA,CAChB;IAED,kEAAiE;IACzD,YAAY,CAAC,QAAkB,EAAE,IAAY,EAAE,SAAiB,EAAkB;QACzF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,MAAgC,CAAC;QACrC,IAAI,CAAC;YACJ,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACR,0DAAwD;YACxD,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnG,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;QAAA,CACvG,CAAC,CAAC;IAAA,CACH;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,IAAY,EAAE,KAAoB,EAAE,OAAe,EAAkB;QACjF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC;QACX,CAAC;QACD,4EAAyE;QACzE,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjF,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAAA,CAC5D;CACD;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAuB,EAAiB;IAClF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAW,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAU,OAAO,CAAC,MAAM,GAAG,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,+BAA4B,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,kBAAkB,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;AAAA,CAC5J","sourcesContent":["/**\n * ¿La edición ha introducido un error de TIPOS?\n *\n * `parseo.ts` responde si el fichero sigue siendo sintácticamente válido, que\n * es el fallo más burdo. Este responde el siguiente: el fichero parsea, pero\n * llamas a la función con un argumento de más, o le pasas una cadena donde\n * esperaba un número. Hasta ahora eso solo salía al ejecutar `npm run check`,\n * que el modelo no lanza solo.\n *\n * oh-my-pi lo resuelve con un cliente LSP (9.920 líneas) que necesita un\n * servidor de lenguaje instalado. Aquí sale del compilador de TypeScript que ya\n * está en el proyecto, con un `LanguageService` que mantiene el programa vivo\n * entre ediciones. Medido sobre este repositorio (343 ficheros):\n *\n * primera comprobación 2.500 ms (una vez por proyecto, perezosa)\n * otro fichero 14 ms\n * tras cambiar el fichero 124-220 ms\n *\n * LA PRECONDICIÓN QUE LO HACE USABLE\n *\n * Solo se informa de lo que la edición ha INTRODUCIDO. Un repositorio a medio\n * refactorizar tiene cientos de errores de tipos, y volcárselos al modelo en\n * cada edición sería ruido puro: dejaría de leerlos el primer día y con ellos\n * el que sí importaba. Se comparan los diagnósticos de antes y los de después,\n * y solo viajan los nuevos.\n *\n * Y solo se paga cuando hace falta: si después de la edición no hay ningún\n * diagnóstico, no se calcula el \"antes\". La mayoría de ediciones son correctas,\n * así que el caso normal es una comprobación, no dos.\n */\n\nimport { dirname } from \"node:path\";\nimport ts from \"typescript\";\n\nexport interface ErrorDeTipos {\n\tlinea: number;\n\tmensaje: string;\n}\n\n/** Extensiones que tiene sentido comprobar. */\nconst COMPROBABLES = new Set([\".ts\", \".tsx\", \".mts\", \".cts\"]);\n\n/**\n * Tope de ficheros por proyecto.\n *\n * En un monorepo gigante la primera comprobación se va de las manos y el\n * usuario nota un parón que no ha pedido. Por encima del tope se calla y lo\n * dice — que es distinto de decir que está todo bien.\n */\nconst TOPE_FICHEROS = 5000;\n\ninterface Proyecto {\n\tservicio: ts.LanguageService;\n\t/** Contenido sobreescrito en memoria, por fichero. */\n\toverlay: Map<string, string>;\n\tversiones: Map<string, number>;\n\traiz: string;\n}\n\nexport type MotivoSinComprobar = \"extension-no-comprobable\" | \"sin-tsconfig\" | \"proyecto-demasiado-grande\";\n\nexport class ComprobadorDeTipos {\n\t/** Un servicio por `tsconfig`. Se reutiliza entre ediciones: es lo que hace que la segunda cueste 124 ms. */\n\tprivate readonly proyectos = new Map<string, Proyecto>();\n\tprivate readonly descartados = new Map<string, MotivoSinComprobar>();\n\n\t/** Por qué no se puede comprobar este fichero, o `null` si sí se puede. */\n\tporQueNo(ruta: string): MotivoSinComprobar | null {\n\t\tconst punto = ruta.lastIndexOf(\".\");\n\t\tif (punto === -1 || !COMPROBABLES.has(ruta.slice(punto).toLowerCase())) return \"extension-no-comprobable\";\n\t\tconst cfg = this.buscarConfig(ruta);\n\t\tif (!cfg) return \"sin-tsconfig\";\n\t\treturn this.descartados.get(cfg) ?? null;\n\t}\n\n\tprivate buscarConfig(ruta: string): string | undefined {\n\t\treturn ts.findConfigFile(dirname(ruta), ts.sys.fileExists, \"tsconfig.json\");\n\t}\n\n\tprivate proyectoDe(rutaConfig: string): Proyecto | null {\n\t\tconst existente = this.proyectos.get(rutaConfig);\n\t\tif (existente) return existente;\n\t\tif (this.descartados.has(rutaConfig)) return null;\n\n\t\tconst raiz = dirname(rutaConfig);\n\t\tconst cfg = ts.readConfigFile(rutaConfig, ts.sys.readFile);\n\t\tif (cfg.error) {\n\t\t\tthis.descartados.set(rutaConfig, \"sin-tsconfig\");\n\t\t\treturn null;\n\t\t}\n\t\tconst parsed = ts.parseJsonConfigFileContent(cfg.config, ts.sys, raiz);\n\t\tif (parsed.fileNames.length > TOPE_FICHEROS) {\n\t\t\tthis.descartados.set(rutaConfig, \"proyecto-demasiado-grande\");\n\t\t\treturn null;\n\t\t}\n\n\t\tconst overlay = new Map<string, string>();\n\t\tconst versiones = new Map<string, number>();\n\t\tconst host: ts.LanguageServiceHost = {\n\t\t\tgetScriptFileNames: () => parsed.fileNames,\n\t\t\tgetScriptVersion: (f) => String(versiones.get(f) ?? 0),\n\t\t\tgetScriptSnapshot: (f) => {\n\t\t\t\tconst texto = overlay.get(f) ?? ts.sys.readFile(f);\n\t\t\t\treturn texto === undefined ? undefined : ts.ScriptSnapshot.fromString(texto);\n\t\t\t},\n\t\t\tgetCurrentDirectory: () => raiz,\n\t\t\tgetCompilationSettings: () => parsed.options,\n\t\t\tgetDefaultLibFileName: (o) => ts.getDefaultLibFilePath(o),\n\t\t\tfileExists: (f) => overlay.has(f) || ts.sys.fileExists(f),\n\t\t\treadFile: (f) => overlay.get(f) ?? ts.sys.readFile(f),\n\t\t\treadDirectory: ts.sys.readDirectory,\n\t\t\tdirectoryExists: ts.sys.directoryExists,\n\t\t\tgetDirectories: ts.sys.getDirectories,\n\t\t};\n\t\tconst proyecto: Proyecto = {\n\t\t\tservicio: ts.createLanguageService(host, ts.createDocumentRegistry()),\n\t\t\toverlay,\n\t\t\tversiones,\n\t\t\traiz,\n\t\t};\n\t\tthis.proyectos.set(rutaConfig, proyecto);\n\t\treturn proyecto;\n\t}\n\n\t/** Diagnósticos de un contenido concreto, sin tocar el disco. */\n\tprivate diagnosticar(proyecto: Proyecto, ruta: string, contenido: string): ErrorDeTipos[] {\n\t\tproyecto.overlay.set(ruta, contenido);\n\t\tproyecto.versiones.set(ruta, (proyecto.versiones.get(ruta) ?? 0) + 1);\n\t\tlet brutos: readonly ts.Diagnostic[];\n\t\ttry {\n\t\t\tbrutos = proyecto.servicio.getSemanticDiagnostics(ruta);\n\t\t} catch {\n\t\t\t// Un fallo del servicio degrada la señal, no la sesión.\n\t\t\treturn [];\n\t\t}\n\t\tconst fuente = proyecto.servicio.getProgram()?.getSourceFile(ruta);\n\t\treturn brutos.map((d) => {\n\t\t\tconst pos = fuente && d.start !== undefined ? fuente.getLineAndCharacterOfPosition(d.start) : null;\n\t\t\treturn { linea: pos ? pos.line + 1 : 0, mensaje: ts.flattenDiagnosticMessageText(d.messageText, \" \") };\n\t\t});\n\t}\n\n\t/**\n\t * Los errores de tipos que esta edición ha INTRODUCIDO.\n\t *\n\t * Devuelve lista vacía cuando no hay ninguno nuevo, y también cuando no se\n\t * puede comprobar — para eso está `porQueNo()`, que quien llama debe mirar si\n\t * quiere distinguir «no hay errores» de «no lo he mirado». Son cosas muy\n\t * distintas y confundirlas es lo que convierte un aviso en una mentira.\n\t */\n\tintroducidos(ruta: string, antes: string | null, despues: string): ErrorDeTipos[] {\n\t\tif (this.porQueNo(ruta)) return [];\n\t\tconst cfg = this.buscarConfig(ruta);\n\t\tif (!cfg) return [];\n\t\tconst proyecto = this.proyectoDe(cfg);\n\t\tif (!proyecto) return [];\n\n\t\tconst despuesDiag = this.diagnosticar(proyecto, ruta, despues);\n\t\tif (despuesDiag.length === 0) {\n\t\t\tproyecto.overlay.delete(ruta);\n\t\t\treturn [];\n\t\t}\n\t\t// Solo aquí se paga la segunda comprobación: la mayoría de ediciones son\n\t\t// correctas y salen por el `return` de arriba con una sola.\n\t\tconst antesDiag = antes === null ? [] : this.diagnosticar(proyecto, ruta, antes);\n\t\tproyecto.overlay.delete(ruta);\n\n\t\tconst yaEstaban = new Set(antesDiag.map((d) => d.mensaje));\n\t\treturn despuesDiag.filter((d) => !yaEstaban.has(d.mensaje));\n\t}\n}\n\n/** El aviso para el modelo, o `null` si no hay nada que decir. */\nexport function avisoDeTipos(ruta: string, errores: ErrorDeTipos[]): string | null {\n\tif (errores.length === 0) return null;\n\tconst lineas = errores.slice(0, 3).map((e) => ` línea ${e.linea}: ${e.mensaje}`);\n\tconst resto = errores.length > 3 ? `\\n …y ${errores.length - 3} más` : \"\";\n\treturn `⚠ Esta edición introduce ${errores.length === 1 ? \"un error\" : `${errores.length} errores`} de tipos en \\`${ruta}\\`:\\n${lineas.join(\"\\n\")}${resto}`;\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Personalidad del Ada Intelligence Engine — bloque SIEMPRE presente en el
|
|
3
|
+
* system prompt de la sesión principal.
|
|
4
|
+
*
|
|
5
|
+
* El modelo NO depende de leer la skill (puede ignorar available_skills):
|
|
6
|
+
* este bloque le da el árbol de decisión, los procedimientos y los formatos
|
|
7
|
+
* de respuesta directamente, en cada turno. La skill completa queda como
|
|
8
|
+
* referencia opcional para detalles (budgets, builtins, etc.).
|
|
9
|
+
*/
|
|
10
|
+
/** Bloque compacto de personalidad del engine (~1.4K tokens). */
|
|
11
|
+
export declare function buildEnginePersonalityBlock(): string;
|
|
12
|
+
//# sourceMappingURL=engine-personality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-personality.d.ts","sourceRoot":"","sources":["../../src/core/engine-personality.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iEAAiE;AACjE,wBAAgB,2BAA2B,IAAI,MAAM,CAyCpD","sourcesContent":["/**\n * Personalidad del Ada Intelligence Engine — bloque SIEMPRE presente en el\n * system prompt de la sesión principal.\n *\n * El modelo NO depende de leer la skill (puede ignorar available_skills):\n * este bloque le da el árbol de decisión, los procedimientos y los formatos\n * de respuesta directamente, en cada turno. La skill completa queda como\n * referencia opcional para detalles (budgets, builtins, etc.).\n */\n\n/** Bloque compacto de personalidad del engine (~1.4K tokens). */\nexport function buildEnginePersonalityBlock(): string {\n\treturn [\n\t\t\"═══ Ada Intelligence Engine — PERSONALIDAD (obligatorio) ═══\",\n\t\t\"\",\n\t\t\"Eres Ada, con un motor de inteligencia autónoma integrado. DECIDE TÚ qué mecanismo usar para cada petición — NUNCA preguntes al usuario '¿goal, workflow o normal?'. Evalúa la petición y ejecuta:\",\n\t\t\"\",\n\t\t\"ÁRBOL DE DECISIÓN (elige la PRIMERA que aplique):\",\n\t\t\" 1. ¿Objetivo de largo plazo, iterativo, con criterios de éxito? (ej: 'construye una landing y verifica que funciona', 'arregla el login', 'mejora X hasta que Y pase') → usa la tool goal_new.\",\n\t\t\" 2. ¿Investigación / revisión de código / auditoría / análisis multi-ángulo? (ej: 'investiga Z con fuentes', 'revisa este código', 'audita el repo', 'compara A y B') → usa la tool workflow (deep_research, code_review, codebase_audit, multi_perspective, product_build).\",\n\t\t\" 3. ¿Tarea concreta de una pasada? (ej: 'crea un script', 'corrige este bug', 'explica X') → usa las tools normales, sin el engine.\",\n\t\t\" 4. ¿El usuario menciona explícitamente 'goal' o 'workflow'? → respeta su elección aunque la tarea parezca simple.\",\n\t\t\"\",\n\t\t\"CUANDO USES GOAL (objetivo de largo plazo):\",\n\t\t\" - Llama goal_new con: goal (verbatim), doneCriteria (2-5 criterios MEDIBLES — invéntalos si el usuario no los dio), verifyCommand (comando de verificación o '').\",\n\t\t\" - El goal nace en 'setup'. NO empieces a trabajar: responde EXACTAMENTE así:\",\n\t\t\" 🎯 Goal creado: <id>\",\n\t\t\" Criterios: <c1> · <c2>\",\n\t\t\" Apruebalo con: /goal approve <id> (o pulsa Approve en el panel Engine)\",\n\t\t\" - Tras aprobarse, el engine lanza un workflow dinámico por sub-tarea automáticamente (uno a la vez). Los pasos viven en esos workflows, NO en el goal. Tú trabajas cuando el engine te da el turno: escribe código, corre tests, edita archivos.\",\n\t\t\" - Cuando todas las sub-tareas estén done, el juez evalúa. Nunca declares completo sin evidencia (archivo:línea, URL o salida de comando).\",\n\t\t\"\",\n\t\t\"CUANDO USES WORKFLOW (investigación/revisión/auditoría):\",\n\t\t\" - Llama workflow con command:'run' y el nombre + args (question=, brief=, problem=, verifyCommand=, k=v custom).\",\n\t\t\" - La confirmación de coste es automática (fail-closed 15s). No la simules.\",\n\t\t\" - Responde EXACTAMENTE así:\",\n\t\t\" ⚡ Workflow lanzado: <name> (<runId>)\",\n\t\t\" Fases: <f1> → <f2>\",\n\t\t\" Sigue el progreso en el panel Engine o con /workflow status <runId>\",\n\t\t\"\",\n\t\t\"GRAFO DE TRABAJO: es AUTÓNOMO. Se registra solo cuando escribes archivos (ARTIFACT + implemented_by) y cuando un test pasa (verified_by). NO hagas nada manualmente para el grafo. Usa graph_add_nodes SOLO en auditorías para marcar QA_FINDING/RISK/DECISION.\",\n\t\t\"\",\n\t\t\"PROHIBIDO:\",\n\t\t\" ✗ Responder '¿goal o workflow?' — decide tú.\",\n\t\t\" ✗ Completar un goal sin evidencia citada.\",\n\t\t\" ✗ Lanzar un workflow sin confirmación de coste.\",\n\t\t\" ✗ Crear goals/workflows desde un subagente.\",\n\t\t\" ✗ Inventar fuentes en deep_research (cada claim ≥2 fuentes reales).\",\n\t\t\"\",\n\t\t\"La skill 'ada-engine' (available_skills) tiene el detalle completo (budgets, builtins, frenos) — léela si necesitas esos detalles. El comportamiento esencial está ARRIBA.\",\n\t\t\"═══ fin de personalidad del engine ═══\",\n\t].join(\"\\n\");\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Personalidad del Ada Intelligence Engine — bloque SIEMPRE presente en el
|
|
3
|
+
* system prompt de la sesión principal.
|
|
4
|
+
*
|
|
5
|
+
* El modelo NO depende de leer la skill (puede ignorar available_skills):
|
|
6
|
+
* este bloque le da el árbol de decisión, los procedimientos y los formatos
|
|
7
|
+
* de respuesta directamente, en cada turno. La skill completa queda como
|
|
8
|
+
* referencia opcional para detalles (budgets, builtins, etc.).
|
|
9
|
+
*/
|
|
10
|
+
/** Bloque compacto de personalidad del engine (~1.4K tokens). */
|
|
11
|
+
export function buildEnginePersonalityBlock() {
|
|
12
|
+
return [
|
|
13
|
+
"═══ Ada Intelligence Engine — PERSONALIDAD (obligatorio) ═══",
|
|
14
|
+
"",
|
|
15
|
+
"Eres Ada, con un motor de inteligencia autónoma integrado. DECIDE TÚ qué mecanismo usar para cada petición — NUNCA preguntes al usuario '¿goal, workflow o normal?'. Evalúa la petición y ejecuta:",
|
|
16
|
+
"",
|
|
17
|
+
"ÁRBOL DE DECISIÓN (elige la PRIMERA que aplique):",
|
|
18
|
+
" 1. ¿Objetivo de largo plazo, iterativo, con criterios de éxito? (ej: 'construye una landing y verifica que funciona', 'arregla el login', 'mejora X hasta que Y pase') → usa la tool goal_new.",
|
|
19
|
+
" 2. ¿Investigación / revisión de código / auditoría / análisis multi-ángulo? (ej: 'investiga Z con fuentes', 'revisa este código', 'audita el repo', 'compara A y B') → usa la tool workflow (deep_research, code_review, codebase_audit, multi_perspective, product_build).",
|
|
20
|
+
" 3. ¿Tarea concreta de una pasada? (ej: 'crea un script', 'corrige este bug', 'explica X') → usa las tools normales, sin el engine.",
|
|
21
|
+
" 4. ¿El usuario menciona explícitamente 'goal' o 'workflow'? → respeta su elección aunque la tarea parezca simple.",
|
|
22
|
+
"",
|
|
23
|
+
"CUANDO USES GOAL (objetivo de largo plazo):",
|
|
24
|
+
" - Llama goal_new con: goal (verbatim), doneCriteria (2-5 criterios MEDIBLES — invéntalos si el usuario no los dio), verifyCommand (comando de verificación o '').",
|
|
25
|
+
" - El goal nace en 'setup'. NO empieces a trabajar: responde EXACTAMENTE así:",
|
|
26
|
+
" 🎯 Goal creado: <id>",
|
|
27
|
+
" Criterios: <c1> · <c2>",
|
|
28
|
+
" Apruebalo con: /goal approve <id> (o pulsa Approve en el panel Engine)",
|
|
29
|
+
" - Tras aprobarse, el engine lanza un workflow dinámico por sub-tarea automáticamente (uno a la vez). Los pasos viven en esos workflows, NO en el goal. Tú trabajas cuando el engine te da el turno: escribe código, corre tests, edita archivos.",
|
|
30
|
+
" - Cuando todas las sub-tareas estén done, el juez evalúa. Nunca declares completo sin evidencia (archivo:línea, URL o salida de comando).",
|
|
31
|
+
"",
|
|
32
|
+
"CUANDO USES WORKFLOW (investigación/revisión/auditoría):",
|
|
33
|
+
" - Llama workflow con command:'run' y el nombre + args (question=, brief=, problem=, verifyCommand=, k=v custom).",
|
|
34
|
+
" - La confirmación de coste es automática (fail-closed 15s). No la simules.",
|
|
35
|
+
" - Responde EXACTAMENTE así:",
|
|
36
|
+
" ⚡ Workflow lanzado: <name> (<runId>)",
|
|
37
|
+
" Fases: <f1> → <f2>",
|
|
38
|
+
" Sigue el progreso en el panel Engine o con /workflow status <runId>",
|
|
39
|
+
"",
|
|
40
|
+
"GRAFO DE TRABAJO: es AUTÓNOMO. Se registra solo cuando escribes archivos (ARTIFACT + implemented_by) y cuando un test pasa (verified_by). NO hagas nada manualmente para el grafo. Usa graph_add_nodes SOLO en auditorías para marcar QA_FINDING/RISK/DECISION.",
|
|
41
|
+
"",
|
|
42
|
+
"PROHIBIDO:",
|
|
43
|
+
" ✗ Responder '¿goal o workflow?' — decide tú.",
|
|
44
|
+
" ✗ Completar un goal sin evidencia citada.",
|
|
45
|
+
" ✗ Lanzar un workflow sin confirmación de coste.",
|
|
46
|
+
" ✗ Crear goals/workflows desde un subagente.",
|
|
47
|
+
" ✗ Inventar fuentes en deep_research (cada claim ≥2 fuentes reales).",
|
|
48
|
+
"",
|
|
49
|
+
"La skill 'ada-engine' (available_skills) tiene el detalle completo (budgets, builtins, frenos) — léela si necesitas esos detalles. El comportamiento esencial está ARRIBA.",
|
|
50
|
+
"═══ fin de personalidad del engine ═══",
|
|
51
|
+
].join("\n");
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=engine-personality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-personality.js","sourceRoot":"","sources":["../../src/core/engine-personality.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iEAAiE;AACjE,MAAM,UAAU,2BAA2B,GAAW;IACrD,OAAO;QACN,4EAA8D;QAC9D,EAAE;QACF,6MAAoM;QACpM,EAAE;QACF,qDAAmD;QACnD,sMAAkM;QAClM,yRAA+Q;QAC/Q,yIAAsI;QACtI,0HAAqH;QACrH,EAAE;QACF,6CAA6C;QAC7C,yKAAqK;QACrK,iFAAgF;QAChF,8BAA2B;QAC3B,+BAA8B;QAC9B,+EAA+E;QAC/E,wPAAoP;QACpP,gJAA6I;QAC7I,EAAE;QACF,6DAA0D;QAC1D,oHAAoH;QACpH,gFAA8E;QAC9E,gCAA+B;QAC/B,8CAA4C;QAC5C,4BAA0B;QAC1B,2EAA2E;QAC3E,EAAE;QACF,mQAAiQ;QACjQ,EAAE;QACF,YAAY;QACZ,sDAAgD;QAChD,+CAA6C;QAC7C,sDAAmD;QACnD,iDAA+C;QAC/C,2EAAuE;QACvE,EAAE;QACF,gLAA4K;QAC5K,oDAAwC;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb","sourcesContent":["/**\n * Personalidad del Ada Intelligence Engine — bloque SIEMPRE presente en el\n * system prompt de la sesión principal.\n *\n * El modelo NO depende de leer la skill (puede ignorar available_skills):\n * este bloque le da el árbol de decisión, los procedimientos y los formatos\n * de respuesta directamente, en cada turno. La skill completa queda como\n * referencia opcional para detalles (budgets, builtins, etc.).\n */\n\n/** Bloque compacto de personalidad del engine (~1.4K tokens). */\nexport function buildEnginePersonalityBlock(): string {\n\treturn [\n\t\t\"═══ Ada Intelligence Engine — PERSONALIDAD (obligatorio) ═══\",\n\t\t\"\",\n\t\t\"Eres Ada, con un motor de inteligencia autónoma integrado. DECIDE TÚ qué mecanismo usar para cada petición — NUNCA preguntes al usuario '¿goal, workflow o normal?'. Evalúa la petición y ejecuta:\",\n\t\t\"\",\n\t\t\"ÁRBOL DE DECISIÓN (elige la PRIMERA que aplique):\",\n\t\t\" 1. ¿Objetivo de largo plazo, iterativo, con criterios de éxito? (ej: 'construye una landing y verifica que funciona', 'arregla el login', 'mejora X hasta que Y pase') → usa la tool goal_new.\",\n\t\t\" 2. ¿Investigación / revisión de código / auditoría / análisis multi-ángulo? (ej: 'investiga Z con fuentes', 'revisa este código', 'audita el repo', 'compara A y B') → usa la tool workflow (deep_research, code_review, codebase_audit, multi_perspective, product_build).\",\n\t\t\" 3. ¿Tarea concreta de una pasada? (ej: 'crea un script', 'corrige este bug', 'explica X') → usa las tools normales, sin el engine.\",\n\t\t\" 4. ¿El usuario menciona explícitamente 'goal' o 'workflow'? → respeta su elección aunque la tarea parezca simple.\",\n\t\t\"\",\n\t\t\"CUANDO USES GOAL (objetivo de largo plazo):\",\n\t\t\" - Llama goal_new con: goal (verbatim), doneCriteria (2-5 criterios MEDIBLES — invéntalos si el usuario no los dio), verifyCommand (comando de verificación o '').\",\n\t\t\" - El goal nace en 'setup'. NO empieces a trabajar: responde EXACTAMENTE así:\",\n\t\t\" 🎯 Goal creado: <id>\",\n\t\t\" Criterios: <c1> · <c2>\",\n\t\t\" Apruebalo con: /goal approve <id> (o pulsa Approve en el panel Engine)\",\n\t\t\" - Tras aprobarse, el engine lanza un workflow dinámico por sub-tarea automáticamente (uno a la vez). Los pasos viven en esos workflows, NO en el goal. Tú trabajas cuando el engine te da el turno: escribe código, corre tests, edita archivos.\",\n\t\t\" - Cuando todas las sub-tareas estén done, el juez evalúa. Nunca declares completo sin evidencia (archivo:línea, URL o salida de comando).\",\n\t\t\"\",\n\t\t\"CUANDO USES WORKFLOW (investigación/revisión/auditoría):\",\n\t\t\" - Llama workflow con command:'run' y el nombre + args (question=, brief=, problem=, verifyCommand=, k=v custom).\",\n\t\t\" - La confirmación de coste es automática (fail-closed 15s). No la simules.\",\n\t\t\" - Responde EXACTAMENTE así:\",\n\t\t\" ⚡ Workflow lanzado: <name> (<runId>)\",\n\t\t\" Fases: <f1> → <f2>\",\n\t\t\" Sigue el progreso en el panel Engine o con /workflow status <runId>\",\n\t\t\"\",\n\t\t\"GRAFO DE TRABAJO: es AUTÓNOMO. Se registra solo cuando escribes archivos (ARTIFACT + implemented_by) y cuando un test pasa (verified_by). NO hagas nada manualmente para el grafo. Usa graph_add_nodes SOLO en auditorías para marcar QA_FINDING/RISK/DECISION.\",\n\t\t\"\",\n\t\t\"PROHIBIDO:\",\n\t\t\" ✗ Responder '¿goal o workflow?' — decide tú.\",\n\t\t\" ✗ Completar un goal sin evidencia citada.\",\n\t\t\" ✗ Lanzar un workflow sin confirmación de coste.\",\n\t\t\" ✗ Crear goals/workflows desde un subagente.\",\n\t\t\" ✗ Inventar fuentes en deep_research (cada claim ≥2 fuentes reales).\",\n\t\t\"\",\n\t\t\"La skill 'ada-engine' (available_skills) tiene el detalle completo (budgets, builtins, frenos) — léela si necesitas esos detalles. El comportamiento esencial está ARRIBA.\",\n\t\t\"═══ fin de personalidad del engine ═══\",\n\t].join(\"\\n\");\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qué ha pasado de verdad cuando el proveedor devuelve un error.
|
|
3
|
+
*
|
|
4
|
+
* Hoy se le enseña al usuario el error crudo. Esto es literal, capturado
|
|
5
|
+
* ejecutando `ada-cli review` durante el desarrollo:
|
|
6
|
+
*
|
|
7
|
+
* El modelo no devolvió nada (error: 429: {"message":"Provider returned
|
|
8
|
+
* error","code":429,"metadata":{"raw":"stealth/ox-alpha is temporarily
|
|
9
|
+
* rate-limited upstream. Please retry shortly.","provider_name":"Stealth",
|
|
10
|
+
* "is_byok":false,"limit_source":"upstream_provider_shared_pool",
|
|
11
|
+
* "remedy_hint":"Retry shortly, add your own provider key (https://
|
|
12
|
+
* openrouter.ai/settings/integrations), or route to another provider…"}}).
|
|
13
|
+
*
|
|
14
|
+
* Dentro de ese volcado hay tres cosas útiles —es un límite de tasa, es
|
|
15
|
+
* temporal, y hay tres salidas— y el usuario tiene que extraerlas a mano de un
|
|
16
|
+
* JSON de 400 caracteres. Peor: la mayoría no lo lee, y un error que no se lee
|
|
17
|
+
* es un error que se interpreta como «esto no funciona».
|
|
18
|
+
*
|
|
19
|
+
* Este módulo lo convierte en:
|
|
20
|
+
*
|
|
21
|
+
* El proveedor está limitando la tasa (429). Es temporal.
|
|
22
|
+
* Reintenta en unos segundos, cambia de modelo con /model, o configura tu
|
|
23
|
+
* propia clave del proveedor.
|
|
24
|
+
*
|
|
25
|
+
* DOS DECISIONES QUE IMPORTAN
|
|
26
|
+
*
|
|
27
|
+
* - **`reintentable` es un dato, no una opinión.** Lo consume el código que
|
|
28
|
+
* decide si volver a intentarlo; mezclarlo con el texto obligaría a leer
|
|
29
|
+
* prosa para tomar una decisión de control.
|
|
30
|
+
* - **Lo desconocido se dice desconocido.** Una clasificación que inventa una
|
|
31
|
+
* categoría plausible para todo es peor que ninguna: manda al usuario a
|
|
32
|
+
* arreglar algo que no está roto. Cuando no se sabe, se devuelve el mensaje
|
|
33
|
+
* original y se dice que no se ha podido clasificar.
|
|
34
|
+
*/
|
|
35
|
+
export type ClaseDeError = "limite-de-tasa" | "sin-credencial" | "credencial-invalida" | "cuota-agotada" | "modelo-no-disponible" | "contexto-excedido" | "contenido-rechazado" | "red" | "servidor" | "cancelado" | "desconocida";
|
|
36
|
+
export interface ErrorClasificado {
|
|
37
|
+
clase: ClaseDeError;
|
|
38
|
+
/** ¿Tiene sentido volver a intentarlo tal cual? Dato de control, no prosa. */
|
|
39
|
+
reintentable: boolean;
|
|
40
|
+
/** Segundos que el proveedor pide esperar, cuando lo dice. */
|
|
41
|
+
esperarSegundos?: number;
|
|
42
|
+
/** Qué puede hacer el usuario, en una o dos líneas. */
|
|
43
|
+
queHacer: string;
|
|
44
|
+
/** El texto original, para quien necesite el detalle. */
|
|
45
|
+
original: string;
|
|
46
|
+
}
|
|
47
|
+
export declare function clasificarError(entrada: {
|
|
48
|
+
mensaje: string;
|
|
49
|
+
estado?: number;
|
|
50
|
+
}): ErrorClasificado;
|
|
51
|
+
/** El error, listo para enseñárselo a una persona. */
|
|
52
|
+
export declare function explicarError(e: ErrorClasificado): string;
|
|
53
|
+
//# sourceMappingURL=proveedor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proveedor.d.ts","sourceRoot":"","sources":["../../../src/core/errores/proveedor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,MAAM,YAAY,GACrB,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,GACrB,eAAe,GACf,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,KAAK,GACL,UAAU,GACV,WAAW,GACX,aAAa,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,+EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;CACjB;AAoJD,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CA2B/F;AAED,wDAAsD;AACtD,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAIzD","sourcesContent":["/**\n * Qué ha pasado de verdad cuando el proveedor devuelve un error.\n *\n * Hoy se le enseña al usuario el error crudo. Esto es literal, capturado\n * ejecutando `ada-cli review` durante el desarrollo:\n *\n * El modelo no devolvió nada (error: 429: {\"message\":\"Provider returned\n * error\",\"code\":429,\"metadata\":{\"raw\":\"stealth/ox-alpha is temporarily\n * rate-limited upstream. Please retry shortly.\",\"provider_name\":\"Stealth\",\n * \"is_byok\":false,\"limit_source\":\"upstream_provider_shared_pool\",\n * \"remedy_hint\":\"Retry shortly, add your own provider key (https://\n * openrouter.ai/settings/integrations), or route to another provider…\"}}).\n *\n * Dentro de ese volcado hay tres cosas útiles —es un límite de tasa, es\n * temporal, y hay tres salidas— y el usuario tiene que extraerlas a mano de un\n * JSON de 400 caracteres. Peor: la mayoría no lo lee, y un error que no se lee\n * es un error que se interpreta como «esto no funciona».\n *\n * Este módulo lo convierte en:\n *\n * El proveedor está limitando la tasa (429). Es temporal.\n * Reintenta en unos segundos, cambia de modelo con /model, o configura tu\n * propia clave del proveedor.\n *\n * DOS DECISIONES QUE IMPORTAN\n *\n * - **`reintentable` es un dato, no una opinión.** Lo consume el código que\n * decide si volver a intentarlo; mezclarlo con el texto obligaría a leer\n * prosa para tomar una decisión de control.\n * - **Lo desconocido se dice desconocido.** Una clasificación que inventa una\n * categoría plausible para todo es peor que ninguna: manda al usuario a\n * arreglar algo que no está roto. Cuando no se sabe, se devuelve el mensaje\n * original y se dice que no se ha podido clasificar.\n */\n\nexport type ClaseDeError =\n\t| \"limite-de-tasa\"\n\t| \"sin-credencial\"\n\t| \"credencial-invalida\"\n\t| \"cuota-agotada\"\n\t| \"modelo-no-disponible\"\n\t| \"contexto-excedido\"\n\t| \"contenido-rechazado\"\n\t| \"red\"\n\t| \"servidor\"\n\t| \"cancelado\"\n\t| \"desconocida\";\n\nexport interface ErrorClasificado {\n\tclase: ClaseDeError;\n\t/** ¿Tiene sentido volver a intentarlo tal cual? Dato de control, no prosa. */\n\treintentable: boolean;\n\t/** Segundos que el proveedor pide esperar, cuando lo dice. */\n\tesperarSegundos?: number;\n\t/** Qué puede hacer el usuario, en una o dos líneas. */\n\tqueHacer: string;\n\t/** El texto original, para quien necesite el detalle. */\n\toriginal: string;\n}\n\n/** Lo que el proveedor sugiere, cuando viene en el cuerpo. */\nfunction pistaDelProveedor(texto: string): string | null {\n\tconst m = texto.match(/\"remedy_hint\"\\s*:\\s*\"([^\"]{1,300})\"/);\n\treturn m ? m[1] : null;\n}\n\n/** `retry-after` en segundos, venga en cabecera o en el cuerpo. */\nfunction segundosDeEspera(texto: string): number | undefined {\n\tconst m = texto.match(/retry[-_\\s]?after[\"'\\s:]*(\\d{1,5})/i);\n\tif (m) return Number(m[1]);\n\tconst ms = texto.match(/\"retryAfterMs\"\\s*:\\s*(\\d{1,8})/);\n\treturn ms ? Math.ceil(Number(ms[1]) / 1000) : undefined;\n}\n\ninterface Regla {\n\tclase: ClaseDeError;\n\treintentable: boolean;\n\t/** Se prueba contra el texto completo (mensaje + cuerpo). */\n\tcoincide: (texto: string, estado?: number) => boolean;\n\tqueHacer: string;\n}\n\n/**\n * El orden importa: lo más específico primero.\n *\n * «Cuota agotada» y «límite de tasa» llegan los dos como 429 y se arreglan de\n * formas opuestas —uno esperando, el otro cambiando de plan o de cuenta—, así\n * que confundirlos manda al usuario a esperar indefinidamente algo que no va a\n * pasar.\n */\nconst REGLAS: Regla[] = [\n\t{\n\t\tclase: \"cancelado\",\n\t\treintentable: false,\n\t\tcoincide: (t) => /\\b(aborted|abortError|operation was aborted|cancell?ed)\\b/i.test(t),\n\t\tqueHacer: \"La operación se canceló. Si no fuiste tú, revisa si algo agotó el tiempo de espera.\",\n\t},\n\t{\n\t\tclase: \"cuota-agotada\",\n\t\treintentable: false,\n\t\tcoincide: (t) =>\n\t\t\t/\\b(usage limit|quota exceeded|credit balance|insufficient_quota|billing|out of credits|plan limit)\\b/i.test(\n\t\t\t\tt,\n\t\t\t),\n\t\tqueHacer:\n\t\t\t\"Se ha agotado la cuota o el saldo de esta cuenta. Esperar no lo arregla: cambia de modelo con /model, usa otra credencial o amplía el plan.\",\n\t},\n\t{\n\t\tclase: \"limite-de-tasa\",\n\t\treintentable: true,\n\t\tcoincide: (t, estado) => estado === 429 || /\\brate[- ]?limit(?:ed|ing|s)?\\b|\\btoo many requests\\b/i.test(t),\n\t\tqueHacer:\n\t\t\t\"El proveedor está limitando la tasa. Es temporal: reintenta en unos segundos, cambia de modelo con /model o configura tu propia clave del proveedor.\",\n\t},\n\t{\n\t\tclase: \"contexto-excedido\",\n\t\treintentable: false,\n\t\tcoincide: (t) =>\n\t\t\t/\\b(context[_\\s]length|maximum context|too many tokens|prompt is too long|context_length_exceeded)\\b/i.test(t),\n\t\tqueHacer:\n\t\t\t\"La conversación no cabe en la ventana del modelo. Compacta con /compact, empieza una sesión nueva o usa un modelo con más contexto.\",\n\t},\n\t{\n\t\tclase: \"credencial-invalida\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) =>\n\t\t\t(estado === 401 || estado === 403) &&\n\t\t\t/\\b(invalid|expired|revoked|invalidated|incorrect api key|unauthorized)\\b/i.test(t),\n\t\tqueHacer: \"La credencial no vale o ha caducado. Vuelve a autenticarte con /login.\",\n\t},\n\t{\n\t\tclase: \"sin-credencial\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) => estado === 401 || /\\b(no api key|missing api key|not authenticated)\\b/i.test(t),\n\t\tqueHacer: \"No hay credencial para este proveedor. Configúrala con /login.\",\n\t},\n\t{\n\t\tclase: \"modelo-no-disponible\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) =>\n\t\t\t(estado === 404 && /model/i.test(t)) ||\n\t\t\t/\\b(model_not_found|does not exist or you do not have access)\\b/i.test(t),\n\t\tqueHacer: \"Ese modelo no existe o tu cuenta no tiene acceso. Elige otro con /model.\",\n\t},\n\t{\n\t\tclase: \"contenido-rechazado\",\n\t\treintentable: false,\n\t\tcoincide: (t) => /\\b(content[_\\s]filter|safety|blocked by|refused to respond|policy violation)\\b/i.test(t),\n\t\tqueHacer: \"El proveedor ha rechazado el contenido por su política. Reformula la petición.\",\n\t},\n\t{\n\t\tclase: \"red\",\n\t\treintentable: true,\n\t\t// `connection error` lo añadió `ada-cli commit`: con el proveedor apagado,\n\t\t// el SDK de OpenAI devuelve literalmente «Connection error.» y ni una de\n\t\t// las palabras de arriba. Salía como \"no se ha podido clasificar\", que es\n\t\t// honesto pero deja al usuario sin saber que basta con mirar la red.\n\t\t//\n\t\t// `terminated` es el hermano del anterior y aparece cuando el proveedor NO\n\t\t// estaba apagado sino que se murió a media respuesta: undici corta el\n\t\t// socket y el SDK devuelve `{stopReason:\"error\", errorMessage:\"terminated\"}`.\n\t\t// Capturado ejecutando `commit` contra un servidor que emite un trozo y\n\t\t// destruye la conexión.\n\t\tcoincide: (t) =>\n\t\t\t/\\b(ECONNREFUSED|ENOTFOUND|ETIMEDOUT|ECONNRESET|EAI_AGAIN|socket hang up|network error|connection error|fetch failed|terminated)\\b/i.test(\n\t\t\t\tt,\n\t\t\t),\n\t\tqueHacer: \"No se ha podido llegar al proveedor. Revisa la conexión o el proxy y reintenta.\",\n\t},\n\t{\n\t\tclase: \"servidor\",\n\t\treintentable: true,\n\t\tcoincide: (_t, estado) => estado !== undefined && estado >= 500 && estado < 600,\n\t\tqueHacer: \"El proveedor ha fallado por su lado. Suele arreglarse solo: reintenta en un momento.\",\n\t},\n];\n\n/** Saca el código HTTP del texto cuando no viene aparte. */\nfunction estadoDelTexto(texto: string): number | undefined {\n\t// También un código a pelo al principio (`429 Too Many Requests`), que es\n\t// como llega la mitad de los errores de proveedor. Exigir los dos puntos\n\t// dejaba sin clasificar justo el caso más común: lo cazó la prueba.\n\t//\n\t// Y el código ENTRE PARÉNTESIS, que es la otra mitad. `formatProviderError`\n\t// del SDK (packages/ai/src/utils/error-body.ts:128) arma el mensaje así:\n\t//\n\t// `${prefix} (${status}): ${body}` -> \"OpenAI API error (401): {…}\"\n\t// `${status}: ${body}` -> \"429: {…}\" (sin prefix)\n\t//\n\t// Solo la segunda forma casaba. La primera la usan `openai-responses` y\n\t// `azure-openai-responses`, o sea todo el que va por la Responses API de\n\t// OpenAI o por Azure. Medido ejecutando el clasificador sobre los formatos\n\t// reales del SDK: 4 de 6 salían \"desconocida\", entre ellos un 429 y un 401.\n\t// El 429 con el que se dio esto por bueno venía de openrouter, que va por\n\t// `openai-completions` y NO lleva prefijo — de ahí que pasara.\n\t//\n\t// Se exige el `):` pegado para no confundirlo con cualquier número de tres\n\t// cifras entre paréntesis que aparezca en el cuerpo del error.\n\tconst m =\n\t\ttexto.match(/\\b(?:status|code)[\"'\\s:]*(\\d{3})\\b/i) ??\n\t\ttexto.match(/\\((\\d{3})\\)\\s*:/) ??\n\t\ttexto.match(/^\\s*(\\d{3})\\b/);\n\tconst n = m ? Number(m[1]) : Number.NaN;\n\treturn n >= 100 && n < 600 ? n : undefined;\n}\n\nexport function clasificarError(entrada: { mensaje: string; estado?: number }): ErrorClasificado {\n\tconst texto = entrada.mensaje ?? \"\";\n\tconst estado = entrada.estado ?? estadoDelTexto(texto);\n\n\tfor (const regla of REGLAS) {\n\t\tif (!regla.coincide(texto, estado)) continue;\n\t\tconst pista = pistaDelProveedor(texto);\n\t\treturn {\n\t\t\tclase: regla.clase,\n\t\t\treintentable: regla.reintentable,\n\t\t\tesperarSegundos: segundosDeEspera(texto),\n\t\t\t// La pista del proveedor va DETRÁS de la nuestra, no en su lugar: la\n\t\t\t// nuestra está en el idioma del usuario y habla de nuestros comandos;\n\t\t\t// la suya conoce su infraestructura. Las dos suman.\n\t\t\tqueHacer: pista ? `${regla.queHacer}\\nEl proveedor añade: ${pista}` : regla.queHacer,\n\t\t\toriginal: texto,\n\t\t};\n\t}\n\n\t// Lo desconocido se dice desconocido. Inventar una categoría plausible manda\n\t// al usuario a arreglar algo que no está roto.\n\treturn {\n\t\tclase: \"desconocida\",\n\t\treintentable: false,\n\t\tqueHacer: \"No se ha podido clasificar este error. El mensaje original está debajo.\",\n\t\toriginal: texto,\n\t};\n}\n\n/** El error, listo para enseñárselo a una persona. */\nexport function explicarError(e: ErrorClasificado): string {\n\tconst espera = e.esperarSegundos ? ` Pide esperar ${e.esperarSegundos} s.` : \"\";\n\tif (e.clase === \"desconocida\") return `${e.queHacer}\\n${e.original}`;\n\treturn `${e.queHacer}${espera}`;\n}\n"]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qué ha pasado de verdad cuando el proveedor devuelve un error.
|
|
3
|
+
*
|
|
4
|
+
* Hoy se le enseña al usuario el error crudo. Esto es literal, capturado
|
|
5
|
+
* ejecutando `ada-cli review` durante el desarrollo:
|
|
6
|
+
*
|
|
7
|
+
* El modelo no devolvió nada (error: 429: {"message":"Provider returned
|
|
8
|
+
* error","code":429,"metadata":{"raw":"stealth/ox-alpha is temporarily
|
|
9
|
+
* rate-limited upstream. Please retry shortly.","provider_name":"Stealth",
|
|
10
|
+
* "is_byok":false,"limit_source":"upstream_provider_shared_pool",
|
|
11
|
+
* "remedy_hint":"Retry shortly, add your own provider key (https://
|
|
12
|
+
* openrouter.ai/settings/integrations), or route to another provider…"}}).
|
|
13
|
+
*
|
|
14
|
+
* Dentro de ese volcado hay tres cosas útiles —es un límite de tasa, es
|
|
15
|
+
* temporal, y hay tres salidas— y el usuario tiene que extraerlas a mano de un
|
|
16
|
+
* JSON de 400 caracteres. Peor: la mayoría no lo lee, y un error que no se lee
|
|
17
|
+
* es un error que se interpreta como «esto no funciona».
|
|
18
|
+
*
|
|
19
|
+
* Este módulo lo convierte en:
|
|
20
|
+
*
|
|
21
|
+
* El proveedor está limitando la tasa (429). Es temporal.
|
|
22
|
+
* Reintenta en unos segundos, cambia de modelo con /model, o configura tu
|
|
23
|
+
* propia clave del proveedor.
|
|
24
|
+
*
|
|
25
|
+
* DOS DECISIONES QUE IMPORTAN
|
|
26
|
+
*
|
|
27
|
+
* - **`reintentable` es un dato, no una opinión.** Lo consume el código que
|
|
28
|
+
* decide si volver a intentarlo; mezclarlo con el texto obligaría a leer
|
|
29
|
+
* prosa para tomar una decisión de control.
|
|
30
|
+
* - **Lo desconocido se dice desconocido.** Una clasificación que inventa una
|
|
31
|
+
* categoría plausible para todo es peor que ninguna: manda al usuario a
|
|
32
|
+
* arreglar algo que no está roto. Cuando no se sabe, se devuelve el mensaje
|
|
33
|
+
* original y se dice que no se ha podido clasificar.
|
|
34
|
+
*/
|
|
35
|
+
/** Lo que el proveedor sugiere, cuando viene en el cuerpo. */
|
|
36
|
+
function pistaDelProveedor(texto) {
|
|
37
|
+
const m = texto.match(/"remedy_hint"\s*:\s*"([^"]{1,300})"/);
|
|
38
|
+
return m ? m[1] : null;
|
|
39
|
+
}
|
|
40
|
+
/** `retry-after` en segundos, venga en cabecera o en el cuerpo. */
|
|
41
|
+
function segundosDeEspera(texto) {
|
|
42
|
+
const m = texto.match(/retry[-_\s]?after["'\s:]*(\d{1,5})/i);
|
|
43
|
+
if (m)
|
|
44
|
+
return Number(m[1]);
|
|
45
|
+
const ms = texto.match(/"retryAfterMs"\s*:\s*(\d{1,8})/);
|
|
46
|
+
return ms ? Math.ceil(Number(ms[1]) / 1000) : undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* El orden importa: lo más específico primero.
|
|
50
|
+
*
|
|
51
|
+
* «Cuota agotada» y «límite de tasa» llegan los dos como 429 y se arreglan de
|
|
52
|
+
* formas opuestas —uno esperando, el otro cambiando de plan o de cuenta—, así
|
|
53
|
+
* que confundirlos manda al usuario a esperar indefinidamente algo que no va a
|
|
54
|
+
* pasar.
|
|
55
|
+
*/
|
|
56
|
+
const REGLAS = [
|
|
57
|
+
{
|
|
58
|
+
clase: "cancelado",
|
|
59
|
+
reintentable: false,
|
|
60
|
+
coincide: (t) => /\b(aborted|abortError|operation was aborted|cancell?ed)\b/i.test(t),
|
|
61
|
+
queHacer: "La operación se canceló. Si no fuiste tú, revisa si algo agotó el tiempo de espera.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
clase: "cuota-agotada",
|
|
65
|
+
reintentable: false,
|
|
66
|
+
coincide: (t) => /\b(usage limit|quota exceeded|credit balance|insufficient_quota|billing|out of credits|plan limit)\b/i.test(t),
|
|
67
|
+
queHacer: "Se ha agotado la cuota o el saldo de esta cuenta. Esperar no lo arregla: cambia de modelo con /model, usa otra credencial o amplía el plan.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
clase: "limite-de-tasa",
|
|
71
|
+
reintentable: true,
|
|
72
|
+
coincide: (t, estado) => estado === 429 || /\brate[- ]?limit(?:ed|ing|s)?\b|\btoo many requests\b/i.test(t),
|
|
73
|
+
queHacer: "El proveedor está limitando la tasa. Es temporal: reintenta en unos segundos, cambia de modelo con /model o configura tu propia clave del proveedor.",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
clase: "contexto-excedido",
|
|
77
|
+
reintentable: false,
|
|
78
|
+
coincide: (t) => /\b(context[_\s]length|maximum context|too many tokens|prompt is too long|context_length_exceeded)\b/i.test(t),
|
|
79
|
+
queHacer: "La conversación no cabe en la ventana del modelo. Compacta con /compact, empieza una sesión nueva o usa un modelo con más contexto.",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
clase: "credencial-invalida",
|
|
83
|
+
reintentable: false,
|
|
84
|
+
coincide: (t, estado) => (estado === 401 || estado === 403) &&
|
|
85
|
+
/\b(invalid|expired|revoked|invalidated|incorrect api key|unauthorized)\b/i.test(t),
|
|
86
|
+
queHacer: "La credencial no vale o ha caducado. Vuelve a autenticarte con /login.",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
clase: "sin-credencial",
|
|
90
|
+
reintentable: false,
|
|
91
|
+
coincide: (t, estado) => estado === 401 || /\b(no api key|missing api key|not authenticated)\b/i.test(t),
|
|
92
|
+
queHacer: "No hay credencial para este proveedor. Configúrala con /login.",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
clase: "modelo-no-disponible",
|
|
96
|
+
reintentable: false,
|
|
97
|
+
coincide: (t, estado) => (estado === 404 && /model/i.test(t)) ||
|
|
98
|
+
/\b(model_not_found|does not exist or you do not have access)\b/i.test(t),
|
|
99
|
+
queHacer: "Ese modelo no existe o tu cuenta no tiene acceso. Elige otro con /model.",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
clase: "contenido-rechazado",
|
|
103
|
+
reintentable: false,
|
|
104
|
+
coincide: (t) => /\b(content[_\s]filter|safety|blocked by|refused to respond|policy violation)\b/i.test(t),
|
|
105
|
+
queHacer: "El proveedor ha rechazado el contenido por su política. Reformula la petición.",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
clase: "red",
|
|
109
|
+
reintentable: true,
|
|
110
|
+
// `connection error` lo añadió `ada-cli commit`: con el proveedor apagado,
|
|
111
|
+
// el SDK de OpenAI devuelve literalmente «Connection error.» y ni una de
|
|
112
|
+
// las palabras de arriba. Salía como "no se ha podido clasificar", que es
|
|
113
|
+
// honesto pero deja al usuario sin saber que basta con mirar la red.
|
|
114
|
+
//
|
|
115
|
+
// `terminated` es el hermano del anterior y aparece cuando el proveedor NO
|
|
116
|
+
// estaba apagado sino que se murió a media respuesta: undici corta el
|
|
117
|
+
// socket y el SDK devuelve `{stopReason:"error", errorMessage:"terminated"}`.
|
|
118
|
+
// Capturado ejecutando `commit` contra un servidor que emite un trozo y
|
|
119
|
+
// destruye la conexión.
|
|
120
|
+
coincide: (t) => /\b(ECONNREFUSED|ENOTFOUND|ETIMEDOUT|ECONNRESET|EAI_AGAIN|socket hang up|network error|connection error|fetch failed|terminated)\b/i.test(t),
|
|
121
|
+
queHacer: "No se ha podido llegar al proveedor. Revisa la conexión o el proxy y reintenta.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
clase: "servidor",
|
|
125
|
+
reintentable: true,
|
|
126
|
+
coincide: (_t, estado) => estado !== undefined && estado >= 500 && estado < 600,
|
|
127
|
+
queHacer: "El proveedor ha fallado por su lado. Suele arreglarse solo: reintenta en un momento.",
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
/** Saca el código HTTP del texto cuando no viene aparte. */
|
|
131
|
+
function estadoDelTexto(texto) {
|
|
132
|
+
// También un código a pelo al principio (`429 Too Many Requests`), que es
|
|
133
|
+
// como llega la mitad de los errores de proveedor. Exigir los dos puntos
|
|
134
|
+
// dejaba sin clasificar justo el caso más común: lo cazó la prueba.
|
|
135
|
+
//
|
|
136
|
+
// Y el código ENTRE PARÉNTESIS, que es la otra mitad. `formatProviderError`
|
|
137
|
+
// del SDK (packages/ai/src/utils/error-body.ts:128) arma el mensaje así:
|
|
138
|
+
//
|
|
139
|
+
// `${prefix} (${status}): ${body}` -> "OpenAI API error (401): {…}"
|
|
140
|
+
// `${status}: ${body}` -> "429: {…}" (sin prefix)
|
|
141
|
+
//
|
|
142
|
+
// Solo la segunda forma casaba. La primera la usan `openai-responses` y
|
|
143
|
+
// `azure-openai-responses`, o sea todo el que va por la Responses API de
|
|
144
|
+
// OpenAI o por Azure. Medido ejecutando el clasificador sobre los formatos
|
|
145
|
+
// reales del SDK: 4 de 6 salían "desconocida", entre ellos un 429 y un 401.
|
|
146
|
+
// El 429 con el que se dio esto por bueno venía de openrouter, que va por
|
|
147
|
+
// `openai-completions` y NO lleva prefijo — de ahí que pasara.
|
|
148
|
+
//
|
|
149
|
+
// Se exige el `):` pegado para no confundirlo con cualquier número de tres
|
|
150
|
+
// cifras entre paréntesis que aparezca en el cuerpo del error.
|
|
151
|
+
const m = texto.match(/\b(?:status|code)["'\s:]*(\d{3})\b/i) ??
|
|
152
|
+
texto.match(/\((\d{3})\)\s*:/) ??
|
|
153
|
+
texto.match(/^\s*(\d{3})\b/);
|
|
154
|
+
const n = m ? Number(m[1]) : Number.NaN;
|
|
155
|
+
return n >= 100 && n < 600 ? n : undefined;
|
|
156
|
+
}
|
|
157
|
+
export function clasificarError(entrada) {
|
|
158
|
+
const texto = entrada.mensaje ?? "";
|
|
159
|
+
const estado = entrada.estado ?? estadoDelTexto(texto);
|
|
160
|
+
for (const regla of REGLAS) {
|
|
161
|
+
if (!regla.coincide(texto, estado))
|
|
162
|
+
continue;
|
|
163
|
+
const pista = pistaDelProveedor(texto);
|
|
164
|
+
return {
|
|
165
|
+
clase: regla.clase,
|
|
166
|
+
reintentable: regla.reintentable,
|
|
167
|
+
esperarSegundos: segundosDeEspera(texto),
|
|
168
|
+
// La pista del proveedor va DETRÁS de la nuestra, no en su lugar: la
|
|
169
|
+
// nuestra está en el idioma del usuario y habla de nuestros comandos;
|
|
170
|
+
// la suya conoce su infraestructura. Las dos suman.
|
|
171
|
+
queHacer: pista ? `${regla.queHacer}\nEl proveedor añade: ${pista}` : regla.queHacer,
|
|
172
|
+
original: texto,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// Lo desconocido se dice desconocido. Inventar una categoría plausible manda
|
|
176
|
+
// al usuario a arreglar algo que no está roto.
|
|
177
|
+
return {
|
|
178
|
+
clase: "desconocida",
|
|
179
|
+
reintentable: false,
|
|
180
|
+
queHacer: "No se ha podido clasificar este error. El mensaje original está debajo.",
|
|
181
|
+
original: texto,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/** El error, listo para enseñárselo a una persona. */
|
|
185
|
+
export function explicarError(e) {
|
|
186
|
+
const espera = e.esperarSegundos ? ` Pide esperar ${e.esperarSegundos} s.` : "";
|
|
187
|
+
if (e.clase === "desconocida")
|
|
188
|
+
return `${e.queHacer}\n${e.original}`;
|
|
189
|
+
return `${e.queHacer}${espera}`;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=proveedor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proveedor.js","sourceRoot":"","sources":["../../../src/core/errores/proveedor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Qué ha pasado de verdad cuando el proveedor devuelve un error.\n *\n * Hoy se le enseña al usuario el error crudo. Esto es literal, capturado\n * ejecutando `ada-cli review` durante el desarrollo:\n *\n * El modelo no devolvió nada (error: 429: {\"message\":\"Provider returned\n * error\",\"code\":429,\"metadata\":{\"raw\":\"stealth/ox-alpha is temporarily\n * rate-limited upstream. Please retry shortly.\",\"provider_name\":\"Stealth\",\n * \"is_byok\":false,\"limit_source\":\"upstream_provider_shared_pool\",\n * \"remedy_hint\":\"Retry shortly, add your own provider key (https://\n * openrouter.ai/settings/integrations), or route to another provider…\"}}).\n *\n * Dentro de ese volcado hay tres cosas útiles —es un límite de tasa, es\n * temporal, y hay tres salidas— y el usuario tiene que extraerlas a mano de un\n * JSON de 400 caracteres. Peor: la mayoría no lo lee, y un error que no se lee\n * es un error que se interpreta como «esto no funciona».\n *\n * Este módulo lo convierte en:\n *\n * El proveedor está limitando la tasa (429). Es temporal.\n * Reintenta en unos segundos, cambia de modelo con /model, o configura tu\n * propia clave del proveedor.\n *\n * DOS DECISIONES QUE IMPORTAN\n *\n * - **`reintentable` es un dato, no una opinión.** Lo consume el código que\n * decide si volver a intentarlo; mezclarlo con el texto obligaría a leer\n * prosa para tomar una decisión de control.\n * - **Lo desconocido se dice desconocido.** Una clasificación que inventa una\n * categoría plausible para todo es peor que ninguna: manda al usuario a\n * arreglar algo que no está roto. Cuando no se sabe, se devuelve el mensaje\n * original y se dice que no se ha podido clasificar.\n */\n\nexport type ClaseDeError =\n\t| \"limite-de-tasa\"\n\t| \"sin-credencial\"\n\t| \"credencial-invalida\"\n\t| \"cuota-agotada\"\n\t| \"modelo-no-disponible\"\n\t| \"contexto-excedido\"\n\t| \"contenido-rechazado\"\n\t| \"red\"\n\t| \"servidor\"\n\t| \"cancelado\"\n\t| \"desconocida\";\n\nexport interface ErrorClasificado {\n\tclase: ClaseDeError;\n\t/** ¿Tiene sentido volver a intentarlo tal cual? Dato de control, no prosa. */\n\treintentable: boolean;\n\t/** Segundos que el proveedor pide esperar, cuando lo dice. */\n\tesperarSegundos?: number;\n\t/** Qué puede hacer el usuario, en una o dos líneas. */\n\tqueHacer: string;\n\t/** El texto original, para quien necesite el detalle. */\n\toriginal: string;\n}\n\n/** Lo que el proveedor sugiere, cuando viene en el cuerpo. */\nfunction pistaDelProveedor(texto: string): string | null {\n\tconst m = texto.match(/\"remedy_hint\"\\s*:\\s*\"([^\"]{1,300})\"/);\n\treturn m ? m[1] : null;\n}\n\n/** `retry-after` en segundos, venga en cabecera o en el cuerpo. */\nfunction segundosDeEspera(texto: string): number | undefined {\n\tconst m = texto.match(/retry[-_\\s]?after[\"'\\s:]*(\\d{1,5})/i);\n\tif (m) return Number(m[1]);\n\tconst ms = texto.match(/\"retryAfterMs\"\\s*:\\s*(\\d{1,8})/);\n\treturn ms ? Math.ceil(Number(ms[1]) / 1000) : undefined;\n}\n\ninterface Regla {\n\tclase: ClaseDeError;\n\treintentable: boolean;\n\t/** Se prueba contra el texto completo (mensaje + cuerpo). */\n\tcoincide: (texto: string, estado?: number) => boolean;\n\tqueHacer: string;\n}\n\n/**\n * El orden importa: lo más específico primero.\n *\n * «Cuota agotada» y «límite de tasa» llegan los dos como 429 y se arreglan de\n * formas opuestas —uno esperando, el otro cambiando de plan o de cuenta—, así\n * que confundirlos manda al usuario a esperar indefinidamente algo que no va a\n * pasar.\n */\nconst REGLAS: Regla[] = [\n\t{\n\t\tclase: \"cancelado\",\n\t\treintentable: false,\n\t\tcoincide: (t) => /\\b(aborted|abortError|operation was aborted|cancell?ed)\\b/i.test(t),\n\t\tqueHacer: \"La operación se canceló. Si no fuiste tú, revisa si algo agotó el tiempo de espera.\",\n\t},\n\t{\n\t\tclase: \"cuota-agotada\",\n\t\treintentable: false,\n\t\tcoincide: (t) =>\n\t\t\t/\\b(usage limit|quota exceeded|credit balance|insufficient_quota|billing|out of credits|plan limit)\\b/i.test(\n\t\t\t\tt,\n\t\t\t),\n\t\tqueHacer:\n\t\t\t\"Se ha agotado la cuota o el saldo de esta cuenta. Esperar no lo arregla: cambia de modelo con /model, usa otra credencial o amplía el plan.\",\n\t},\n\t{\n\t\tclase: \"limite-de-tasa\",\n\t\treintentable: true,\n\t\tcoincide: (t, estado) => estado === 429 || /\\brate[- ]?limit(?:ed|ing|s)?\\b|\\btoo many requests\\b/i.test(t),\n\t\tqueHacer:\n\t\t\t\"El proveedor está limitando la tasa. Es temporal: reintenta en unos segundos, cambia de modelo con /model o configura tu propia clave del proveedor.\",\n\t},\n\t{\n\t\tclase: \"contexto-excedido\",\n\t\treintentable: false,\n\t\tcoincide: (t) =>\n\t\t\t/\\b(context[_\\s]length|maximum context|too many tokens|prompt is too long|context_length_exceeded)\\b/i.test(t),\n\t\tqueHacer:\n\t\t\t\"La conversación no cabe en la ventana del modelo. Compacta con /compact, empieza una sesión nueva o usa un modelo con más contexto.\",\n\t},\n\t{\n\t\tclase: \"credencial-invalida\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) =>\n\t\t\t(estado === 401 || estado === 403) &&\n\t\t\t/\\b(invalid|expired|revoked|invalidated|incorrect api key|unauthorized)\\b/i.test(t),\n\t\tqueHacer: \"La credencial no vale o ha caducado. Vuelve a autenticarte con /login.\",\n\t},\n\t{\n\t\tclase: \"sin-credencial\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) => estado === 401 || /\\b(no api key|missing api key|not authenticated)\\b/i.test(t),\n\t\tqueHacer: \"No hay credencial para este proveedor. Configúrala con /login.\",\n\t},\n\t{\n\t\tclase: \"modelo-no-disponible\",\n\t\treintentable: false,\n\t\tcoincide: (t, estado) =>\n\t\t\t(estado === 404 && /model/i.test(t)) ||\n\t\t\t/\\b(model_not_found|does not exist or you do not have access)\\b/i.test(t),\n\t\tqueHacer: \"Ese modelo no existe o tu cuenta no tiene acceso. Elige otro con /model.\",\n\t},\n\t{\n\t\tclase: \"contenido-rechazado\",\n\t\treintentable: false,\n\t\tcoincide: (t) => /\\b(content[_\\s]filter|safety|blocked by|refused to respond|policy violation)\\b/i.test(t),\n\t\tqueHacer: \"El proveedor ha rechazado el contenido por su política. Reformula la petición.\",\n\t},\n\t{\n\t\tclase: \"red\",\n\t\treintentable: true,\n\t\t// `connection error` lo añadió `ada-cli commit`: con el proveedor apagado,\n\t\t// el SDK de OpenAI devuelve literalmente «Connection error.» y ni una de\n\t\t// las palabras de arriba. Salía como \"no se ha podido clasificar\", que es\n\t\t// honesto pero deja al usuario sin saber que basta con mirar la red.\n\t\t//\n\t\t// `terminated` es el hermano del anterior y aparece cuando el proveedor NO\n\t\t// estaba apagado sino que se murió a media respuesta: undici corta el\n\t\t// socket y el SDK devuelve `{stopReason:\"error\", errorMessage:\"terminated\"}`.\n\t\t// Capturado ejecutando `commit` contra un servidor que emite un trozo y\n\t\t// destruye la conexión.\n\t\tcoincide: (t) =>\n\t\t\t/\\b(ECONNREFUSED|ENOTFOUND|ETIMEDOUT|ECONNRESET|EAI_AGAIN|socket hang up|network error|connection error|fetch failed|terminated)\\b/i.test(\n\t\t\t\tt,\n\t\t\t),\n\t\tqueHacer: \"No se ha podido llegar al proveedor. Revisa la conexión o el proxy y reintenta.\",\n\t},\n\t{\n\t\tclase: \"servidor\",\n\t\treintentable: true,\n\t\tcoincide: (_t, estado) => estado !== undefined && estado >= 500 && estado < 600,\n\t\tqueHacer: \"El proveedor ha fallado por su lado. Suele arreglarse solo: reintenta en un momento.\",\n\t},\n];\n\n/** Saca el código HTTP del texto cuando no viene aparte. */\nfunction estadoDelTexto(texto: string): number | undefined {\n\t// También un código a pelo al principio (`429 Too Many Requests`), que es\n\t// como llega la mitad de los errores de proveedor. Exigir los dos puntos\n\t// dejaba sin clasificar justo el caso más común: lo cazó la prueba.\n\t//\n\t// Y el código ENTRE PARÉNTESIS, que es la otra mitad. `formatProviderError`\n\t// del SDK (packages/ai/src/utils/error-body.ts:128) arma el mensaje así:\n\t//\n\t// `${prefix} (${status}): ${body}` -> \"OpenAI API error (401): {…}\"\n\t// `${status}: ${body}` -> \"429: {…}\" (sin prefix)\n\t//\n\t// Solo la segunda forma casaba. La primera la usan `openai-responses` y\n\t// `azure-openai-responses`, o sea todo el que va por la Responses API de\n\t// OpenAI o por Azure. Medido ejecutando el clasificador sobre los formatos\n\t// reales del SDK: 4 de 6 salían \"desconocida\", entre ellos un 429 y un 401.\n\t// El 429 con el que se dio esto por bueno venía de openrouter, que va por\n\t// `openai-completions` y NO lleva prefijo — de ahí que pasara.\n\t//\n\t// Se exige el `):` pegado para no confundirlo con cualquier número de tres\n\t// cifras entre paréntesis que aparezca en el cuerpo del error.\n\tconst m =\n\t\ttexto.match(/\\b(?:status|code)[\"'\\s:]*(\\d{3})\\b/i) ??\n\t\ttexto.match(/\\((\\d{3})\\)\\s*:/) ??\n\t\ttexto.match(/^\\s*(\\d{3})\\b/);\n\tconst n = m ? Number(m[1]) : Number.NaN;\n\treturn n >= 100 && n < 600 ? n : undefined;\n}\n\nexport function clasificarError(entrada: { mensaje: string; estado?: number }): ErrorClasificado {\n\tconst texto = entrada.mensaje ?? \"\";\n\tconst estado = entrada.estado ?? estadoDelTexto(texto);\n\n\tfor (const regla of REGLAS) {\n\t\tif (!regla.coincide(texto, estado)) continue;\n\t\tconst pista = pistaDelProveedor(texto);\n\t\treturn {\n\t\t\tclase: regla.clase,\n\t\t\treintentable: regla.reintentable,\n\t\t\tesperarSegundos: segundosDeEspera(texto),\n\t\t\t// La pista del proveedor va DETRÁS de la nuestra, no en su lugar: la\n\t\t\t// nuestra está en el idioma del usuario y habla de nuestros comandos;\n\t\t\t// la suya conoce su infraestructura. Las dos suman.\n\t\t\tqueHacer: pista ? `${regla.queHacer}\\nEl proveedor añade: ${pista}` : regla.queHacer,\n\t\t\toriginal: texto,\n\t\t};\n\t}\n\n\t// Lo desconocido se dice desconocido. Inventar una categoría plausible manda\n\t// al usuario a arreglar algo que no está roto.\n\treturn {\n\t\tclase: \"desconocida\",\n\t\treintentable: false,\n\t\tqueHacer: \"No se ha podido clasificar este error. El mensaje original está debajo.\",\n\t\toriginal: texto,\n\t};\n}\n\n/** El error, listo para enseñárselo a una persona. */\nexport function explicarError(e: ErrorClasificado): string {\n\tconst espera = e.esperarSegundos ? ` Pide esperar ${e.esperarSegundos} s.` : \"\";\n\tif (e.clase === \"desconocida\") return `${e.queHacer}\\n${e.original}`;\n\treturn `${e.queHacer}${espera}`;\n}\n"]}
|