theus-cli-linux-x64 1.2.1 → 1.3.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/README.md +15 -0
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/chrome-extension/README.md +142 -0
- package/vendor/chrome-extension/background.js +540 -0
- package/vendor/chrome-extension/cdp-core.js +400 -0
- package/vendor/chrome-extension/cdp-core.test.ts +321 -0
- package/vendor/chrome-extension/cdp.js +672 -0
- package/vendor/chrome-extension/icons/icon128.png +0 -0
- package/vendor/chrome-extension/icons/icon16.png +0 -0
- package/vendor/chrome-extension/icons/icon32.png +0 -0
- package/vendor/chrome-extension/icons/icon48.png +0 -0
- package/vendor/chrome-extension/manifest.json +36 -0
- package/vendor/chrome-extension/popup.html +78 -0
- package/vendor/chrome-extension/popup.js +47 -0
- package/vendor/chrome-extension/recorder.js +316 -0
- package/vendor/higiene-motor/PARCHES.md +244 -0
- package/vendor/higiene-motor/audit_dir.py +166 -0
- package/vendor/higiene-motor/audit_lib.py +333 -0
- package/vendor/higiene-motor/audit_website.py +635 -0
- package/vendor/higiene-motor/av_meta.py +498 -0
- package/vendor/higiene-motor/check_staged.py +71 -0
- package/vendor/higiene-motor/clean_ctrlregen.py +212 -0
- package/vendor/higiene-motor/clean_file.py +237 -0
- package/vendor/higiene-motor/clean_image.py +218 -0
- package/vendor/higiene-motor/clean_staged.py +143 -0
- package/vendor/higiene-motor/clean_text.py +108 -0
- package/vendor/higiene-motor/common.py +486 -0
- package/vendor/higiene-motor/container_meta.py +2522 -0
- package/vendor/higiene-motor/detect_gumbel.py +308 -0
- package/vendor/higiene-motor/detect_text_watermark.py +613 -0
- package/vendor/higiene-motor/format_dispatch.py +157 -0
- package/vendor/higiene-motor/hook_written_file.py +253 -0
- package/vendor/higiene-motor/image_meta.py +2171 -0
- package/vendor/higiene-motor/inspect_file.py +138 -0
- package/vendor/higiene-motor/inspect_image.py +72 -0
- package/vendor/higiene-motor/inspect_text.py +86 -0
- package/vendor/higiene-motor/markdiffusion_harness.py +533 -0
- package/vendor/higiene-motor/rewrite_text.py +737 -0
- package/vendor/higiene-motor/score_stylometry.py +460 -0
- package/vendor/higiene-motor/score_synthid.py +165 -0
- package/vendor/higiene-motor/server.py +1059 -0
- package/vendor/higiene-motor/synthid_score_server.py +176 -0
- package/vendor/higiene-motor/text_detectors.py +433 -0
- package/vendor/higiene-motor/text_unicode.py +730 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +0 -6
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +0 -72
- package/vendor/theus-arsenal/.mailmap +0 -2
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +0 -25
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +0 -20
- package/vendor/theus-arsenal/AUTHORS.md +0 -8
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +0 -11
- package/vendor/theus-arsenal/LICENSE +0 -26
- package/vendor/theus-arsenal/PROVENANCE.md +0 -9
- package/vendor/theus-arsenal/README.md +0 -41
- package/vendor/theus-arsenal/THIRD_PARTY.md +0 -80
- package/vendor/theus-arsenal/agents/actualizador-docs.md +0 -123
- package/vendor/theus-arsenal/agents/analista-comentarios.md +0 -53
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +0 -60
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +0 -53
- package/vendor/theus-arsenal/agents/analista-tipos.md +0 -49
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +0 -148
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +0 -90
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +0 -116
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +0 -219
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +0 -206
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +0 -58
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +0 -76
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +0 -135
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +0 -96
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +0 -257
- package/vendor/theus-arsenal/agents/escaner-secretos.md +0 -196
- package/vendor/theus-arsenal/agents/especialista-seo.md +0 -70
- package/vendor/theus-arsenal/agents/estratega-marketing.md +0 -158
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +0 -214
- package/vendor/theus-arsenal/agents/evaluador-harness.md +0 -217
- package/vendor/theus-arsenal/agents/explorador-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/extractor-specs.md +0 -214
- package/vendor/theus-arsenal/agents/generador-harness.md +0 -139
- package/vendor/theus-arsenal/agents/guia-tdd.md +0 -99
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +0 -162
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +0 -93
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +0 -454
- package/vendor/theus-arsenal/agents/planificador-harness.md +0 -107
- package/vendor/theus-arsenal/agents/planificador.md +0 -221
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +0 -181
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +0 -98
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +0 -209
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +0 -253
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +0 -102
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +0 -274
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +0 -214
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +0 -156
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +0 -169
- package/vendor/theus-arsenal/agents/resolutor-builds.md +0 -122
- package/vendor/theus-arsenal/agents/revisor-bd.md +0 -97
- package/vendor/theus-arsenal/agents/revisor-codigo.md +0 -291
- package/vendor/theus-arsenal/agents/revisor-config-red.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-cpp.md +0 -80
- package/vendor/theus-arsenal/agents/revisor-csharp.md +0 -109
- package/vendor/theus-arsenal/agents/revisor-django.md +0 -168
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +0 -82
- package/vendor/theus-arsenal/agents/revisor-flutter.md +0 -251
- package/vendor/theus-arsenal/agents/revisor-go.md +0 -84
- package/vendor/theus-arsenal/agents/revisor-java.md +0 -192
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +0 -171
- package/vendor/theus-arsenal/agents/revisor-ml.md +0 -159
- package/vendor/theus-arsenal/agents/revisor-php.md +0 -108
- package/vendor/theus-arsenal/agents/revisor-python.md +0 -106
- package/vendor/theus-arsenal/agents/revisor-react.md +0 -166
- package/vendor/theus-arsenal/agents/revisor-rust.md +0 -102
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +0 -95
- package/vendor/theus-arsenal/agents/revisor-swift.md +0 -115
- package/vendor/theus-arsenal/agents/revisor-typescript.md +0 -123
- package/vendor/theus-arsenal/agents/revisor-vue.md +0 -205
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +0 -55
- package/vendor/theus-arsenal/commands/actualizar-docs.md +0 -88
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +0 -78
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +0 -109
- package/vendor/theus-arsenal/commands/aprender.md +0 -74
- package/vendor/theus-arsenal/commands/arreglar-build.md +0 -66
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +0 -153
- package/vendor/theus-arsenal/commands/build-cpp.md +0 -173
- package/vendor/theus-arsenal/commands/build-flutter.md +0 -164
- package/vendor/theus-arsenal/commands/build-go.md +0 -183
- package/vendor/theus-arsenal/commands/build-gradle.md +0 -75
- package/vendor/theus-arsenal/commands/build-kotlin.md +0 -176
- package/vendor/theus-arsenal/commands/build-react.md +0 -187
- package/vendor/theus-arsenal/commands/build-rust.md +0 -187
- package/vendor/theus-arsenal/commands/campana-marketing.md +0 -125
- package/vendor/theus-arsenal/commands/checkpoint.md +0 -78
- package/vendor/theus-arsenal/commands/cobertura-tests.md +0 -73
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +0 -86
- package/vendor/theus-arsenal/commands/consulta.md +0 -164
- package/vendor/theus-arsenal/commands/control-calidad.md +0 -50
- package/vendor/theus-arsenal/commands/crear-skill.md +0 -77
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +0 -30
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +0 -17
- package/vendor/theus-arsenal/commands/epica-descomponer.md +0 -22
- package/vendor/theus-arsenal/commands/epica-publicar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-reclamar.md +0 -25
- package/vendor/theus-arsenal/commands/epica-revisar.md +0 -22
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-validar.md +0 -21
- package/vendor/theus-arsenal/commands/evolucionar.md +0 -176
- package/vendor/theus-arsenal/commands/funcionalidad.md +0 -49
- package/vendor/theus-arsenal/commands/guardar-sesion.md +0 -278
- package/vendor/theus-arsenal/commands/harness-build.md +0 -111
- package/vendor/theus-arsenal/commands/harness-diseno.md +0 -46
- package/vendor/theus-arsenal/commands/informe-costos.md +0 -90
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +0 -36
- package/vendor/theus-arsenal/commands/instintos-estado.md +0 -53
- package/vendor/theus-arsenal/commands/instintos-exportar.md +0 -69
- package/vendor/theus-arsenal/commands/instintos-importar.md +0 -120
- package/vendor/theus-arsenal/commands/lienzo-planes.md +0 -48
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +0 -84
- package/vendor/theus-arsenal/commands/modo-seguro.md +0 -96
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +0 -36
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +0 -38
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +0 -36
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +0 -40
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +0 -44
- package/vendor/theus-arsenal/commands/orq-revisar.md +0 -135
- package/vendor/theus-arsenal/commands/plan-prd.md +0 -160
- package/vendor/theus-arsenal/commands/plan.md +0 -198
- package/vendor/theus-arsenal/commands/podar.md +0 -31
- package/vendor/theus-arsenal/commands/pr.md +0 -181
- package/vendor/theus-arsenal/commands/promover.md +0 -41
- package/vendor/theus-arsenal/commands/proyectos.md +0 -33
- package/vendor/theus-arsenal/commands/prp-commit.md +0 -112
- package/vendor/theus-arsenal/commands/prp-implementar.md +0 -385
- package/vendor/theus-arsenal/commands/prp-planificar.md +0 -501
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +0 -160
- package/vendor/theus-arsenal/commands/revisar-codigo.md +0 -289
- package/vendor/theus-arsenal/commands/revisar-cpp.md +0 -132
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +0 -39
- package/vendor/theus-arsenal/commands/revisar-flutter.md +0 -115
- package/vendor/theus-arsenal/commands/revisar-go.md +0 -148
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +0 -140
- package/vendor/theus-arsenal/commands/revisar-pr.md +0 -37
- package/vendor/theus-arsenal/commands/revisar-python.md +0 -297
- package/vendor/theus-arsenal/commands/revisar-react.md +0 -170
- package/vendor/theus-arsenal/commands/revisar-rust.md +0 -142
- package/vendor/theus-arsenal/commands/revisar-vue.md +0 -174
- package/vendor/theus-arsenal/commands/salud-skills.md +0 -52
- package/vendor/theus-arsenal/commands/sesiones.md +0 -345
- package/vendor/theus-arsenal/commands/test-cpp.md +0 -252
- package/vendor/theus-arsenal/commands/test-flutter.md +0 -143
- package/vendor/theus-arsenal/commands/test-go.md +0 -268
- package/vendor/theus-arsenal/commands/test-kotlin.md +0 -312
- package/vendor/theus-arsenal/commands/test-react.md +0 -265
- package/vendor/theus-arsenal/commands/test-rust.md +0 -309
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +0 -43
- package/vendor/theus-arsenal/hooks/hooks.json +0 -274
- package/vendor/theus-arsenal/package.json +0 -6
- package/vendor/theus-arsenal/rules/angular/coding-style.md +0 -182
- package/vendor/theus-arsenal/rules/angular/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/angular/patterns.md +0 -249
- package/vendor/theus-arsenal/rules/angular/security.md +0 -87
- package/vendor/theus-arsenal/rules/angular/testing.md +0 -164
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +0 -153
- package/vendor/theus-arsenal/rules/arkts/hooks.md +0 -80
- package/vendor/theus-arsenal/rules/arkts/patterns.md +0 -236
- package/vendor/theus-arsenal/rules/arkts/security.md +0 -141
- package/vendor/theus-arsenal/rules/arkts/testing.md +0 -126
- package/vendor/theus-arsenal/rules/common/agents.md +0 -49
- package/vendor/theus-arsenal/rules/common/code-review.md +0 -123
- package/vendor/theus-arsenal/rules/common/coding-style.md +0 -90
- package/vendor/theus-arsenal/rules/common/development-workflow.md +0 -44
- package/vendor/theus-arsenal/rules/common/git-workflow.md +0 -24
- package/vendor/theus-arsenal/rules/common/hooks.md +0 -32
- package/vendor/theus-arsenal/rules/common/patterns.md +0 -31
- package/vendor/theus-arsenal/rules/common/performance.md +0 -53
- package/vendor/theus-arsenal/rules/common/security.md +0 -29
- package/vendor/theus-arsenal/rules/common/testing.md +0 -57
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +0 -44
- package/vendor/theus-arsenal/rules/cpp/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/cpp/patterns.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/security.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/testing.md +0 -44
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +0 -72
- package/vendor/theus-arsenal/rules/csharp/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/csharp/patterns.md +0 -50
- package/vendor/theus-arsenal/rules/csharp/security.md +0 -58
- package/vendor/theus-arsenal/rules/csharp/testing.md +0 -50
- package/vendor/theus-arsenal/rules/dart/coding-style.md +0 -159
- package/vendor/theus-arsenal/rules/dart/hooks.md +0 -68
- package/vendor/theus-arsenal/rules/dart/patterns.md +0 -261
- package/vendor/theus-arsenal/rules/dart/security.md +0 -135
- package/vendor/theus-arsenal/rules/dart/testing.md +0 -215
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +0 -112
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +0 -26
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +0 -111
- package/vendor/theus-arsenal/rules/fsharp/security.md +0 -76
- package/vendor/theus-arsenal/rules/fsharp/testing.md +0 -62
- package/vendor/theus-arsenal/rules/golang/coding-style.md +0 -32
- package/vendor/theus-arsenal/rules/golang/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/golang/patterns.md +0 -45
- package/vendor/theus-arsenal/rules/golang/security.md +0 -34
- package/vendor/theus-arsenal/rules/golang/testing.md +0 -31
- package/vendor/theus-arsenal/rules/java/coding-style.md +0 -114
- package/vendor/theus-arsenal/rules/java/hooks.md +0 -18
- package/vendor/theus-arsenal/rules/java/patterns.md +0 -147
- package/vendor/theus-arsenal/rules/java/security.md +0 -101
- package/vendor/theus-arsenal/rules/java/testing.md +0 -133
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +0 -86
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +0 -146
- package/vendor/theus-arsenal/rules/kotlin/security.md +0 -82
- package/vendor/theus-arsenal/rules/kotlin/testing.md +0 -128
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +0 -54
- package/vendor/theus-arsenal/rules/nuxt/security.md +0 -48
- package/vendor/theus-arsenal/rules/nuxt/testing.md +0 -49
- package/vendor/theus-arsenal/rules/php/coding-style.md +0 -40
- package/vendor/theus-arsenal/rules/php/hooks.md +0 -24
- package/vendor/theus-arsenal/rules/php/patterns.md +0 -33
- package/vendor/theus-arsenal/rules/php/security.md +0 -37
- package/vendor/theus-arsenal/rules/php/testing.md +0 -38
- package/vendor/theus-arsenal/rules/python/coding-style.md +0 -42
- package/vendor/theus-arsenal/rules/python/fastapi.md +0 -58
- package/vendor/theus-arsenal/rules/python/hooks.md +0 -19
- package/vendor/theus-arsenal/rules/python/patterns.md +0 -39
- package/vendor/theus-arsenal/rules/python/security.md +0 -30
- package/vendor/theus-arsenal/rules/python/testing.md +0 -38
- package/vendor/theus-arsenal/rules/react/coding-style.md +0 -109
- package/vendor/theus-arsenal/rules/react/hooks.md +0 -187
- package/vendor/theus-arsenal/rules/react/patterns.md +0 -194
- package/vendor/theus-arsenal/rules/react/security.md +0 -180
- package/vendor/theus-arsenal/rules/react/testing.md +0 -208
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +0 -55
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +0 -71
- package/vendor/theus-arsenal/rules/react-native/hooks.md +0 -28
- package/vendor/theus-arsenal/rules/react-native/patterns.md +0 -88
- package/vendor/theus-arsenal/rules/react-native/performance.md +0 -45
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +0 -51
- package/vendor/theus-arsenal/rules/react-native/security.md +0 -43
- package/vendor/theus-arsenal/rules/react-native/testing.md +0 -52
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +0 -46
- package/vendor/theus-arsenal/rules/ruby/hooks.md +0 -37
- package/vendor/theus-arsenal/rules/ruby/patterns.md +0 -44
- package/vendor/theus-arsenal/rules/ruby/security.md +0 -51
- package/vendor/theus-arsenal/rules/ruby/testing.md +0 -51
- package/vendor/theus-arsenal/rules/rust/coding-style.md +0 -151
- package/vendor/theus-arsenal/rules/rust/hooks.md +0 -16
- package/vendor/theus-arsenal/rules/rust/patterns.md +0 -168
- package/vendor/theus-arsenal/rules/rust/security.md +0 -141
- package/vendor/theus-arsenal/rules/rust/testing.md +0 -154
- package/vendor/theus-arsenal/rules/swift/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/swift/hooks.md +0 -20
- package/vendor/theus-arsenal/rules/swift/patterns.md +0 -66
- package/vendor/theus-arsenal/rules/swift/security.md +0 -33
- package/vendor/theus-arsenal/rules/swift/testing.md +0 -45
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +0 -199
- package/vendor/theus-arsenal/rules/typescript/hooks.md +0 -22
- package/vendor/theus-arsenal/rules/typescript/patterns.md +0 -52
- package/vendor/theus-arsenal/rules/typescript/security.md +0 -28
- package/vendor/theus-arsenal/rules/typescript/testing.md +0 -18
- package/vendor/theus-arsenal/rules/vue/coding-style.md +0 -54
- package/vendor/theus-arsenal/rules/vue/hooks.md +0 -45
- package/vendor/theus-arsenal/rules/vue/patterns.md +0 -56
- package/vendor/theus-arsenal/rules/vue/security.md +0 -46
- package/vendor/theus-arsenal/rules/vue/testing.md +0 -53
- package/vendor/theus-arsenal/rules/web/coding-style.md +0 -108
- package/vendor/theus-arsenal/rules/web/design-quality.md +0 -75
- package/vendor/theus-arsenal/rules/web/hooks.md +0 -141
- package/vendor/theus-arsenal/rules/web/patterns.md +0 -91
- package/vendor/theus-arsenal/rules/web/performance.md +0 -76
- package/vendor/theus-arsenal/rules/web/security.md +0 -69
- package/vendor/theus-arsenal/rules/web/testing.md +0 -67
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +0 -192
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +0 -556
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +0 -92
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +0 -16
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +0 -171
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +0 -132
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +0 -158
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +0 -208
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +0 -280
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +0 -87
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +0 -24
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +0 -60
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +0 -94
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +0 -54
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +0 -98
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +0 -447
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +0 -232
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +0 -27
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +0 -101
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +0 -49
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +0 -168
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +0 -271
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +0 -749
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +0 -161
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +0 -340
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +0 -906
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +0 -263
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +0 -286
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +0 -289
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +0 -1278
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +0 -96
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +0 -66
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +0 -79
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +0 -185
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +0 -54
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +0 -237
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +0 -120
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +0 -434
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +0 -238
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +0 -534
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +0 -274
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +0 -546
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +0 -451
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +0 -193
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +0 -101
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +0 -138
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +0 -483
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +0 -155
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +0 -137
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +0 -555
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +0 -501
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +0 -414
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +0 -22
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +0 -200
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +0 -157
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +0 -246
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +0 -232
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +0 -205
- package/vendor/theus-arsenal/scripts/lib/utils.js +0 -658
- package/vendor/theus-arsenal/scripts/plan-canvas.js +0 -341
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +0 -46
- package/vendor/theus-arsenal/scripts/skills-health.js +0 -143
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +0 -444
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +0 -72
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +0 -771
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +0 -137
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +0 -233
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +0 -335
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +0 -374
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +0 -188
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +0 -153
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +0 -253
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +0 -8
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +0 -594
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +0 -325
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +0 -1918
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +0 -23
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +0 -1420
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +0 -275
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +0 -340
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +0 -112
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +0 -257
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +0 -243
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +0 -89
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +0 -87
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +0 -71
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +0 -90
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +0 -409
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +0 -86
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +0 -176
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +0 -174
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +0 -173
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +0 -125
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +0 -160
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +0 -118
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +0 -138
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +0 -104
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +0 -115
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +0 -69
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +0 -224
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +0 -201
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +0 -119
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +0 -169
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +0 -284
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +0 -46
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +0 -86
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +0 -29
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +0 -173
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +0 -100
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +0 -78
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +0 -172
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +0 -104
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +0 -75
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +0 -146
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +0 -126
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +0 -229
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +0 -152
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +0 -68
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +0 -138
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +0 -130
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +0 -34
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +0 -143
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +0 -106
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +0 -11
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +0 -20
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +0 -179
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +0 -19
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +0 -122
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +0 -52
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +0 -171
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +0 -270
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +0 -128
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +0 -369
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +0 -42
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +0 -47
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +0 -53
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +0 -61
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +0 -62
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +0 -54
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +0 -50
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +0 -133
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +0 -230
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +0 -58
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +0 -129
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +0 -89
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +0 -522
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +0 -282
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +0 -879
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +0 -289
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +0 -493
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +0 -548
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +0 -727
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +0 -389
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +0 -129
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +0 -714
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +0 -343
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +0 -584
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +0 -224
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +0 -5
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +0 -123
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +0 -48
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +0 -39
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +0 -166
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +0 -258
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +0 -235
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +0 -208
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +0 -204
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +0 -64
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +0 -212
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +0 -264
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +0 -299
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +0 -96
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +0 -820
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +0 -312
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +0 -87
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +0 -76
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +0 -60
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +0 -102
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +0 -150
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +0 -194
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +0 -87
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +0 -57
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +0 -170
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +0 -87
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +0 -59
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +0 -161
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +0 -82
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +0 -116
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +0 -241
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +0 -101
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +0 -44
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +0 -24
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +0 -152
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +0 -40
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +0 -214
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +0 -36
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +0 -210
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +0 -402
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +0 -238
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +0 -131
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +0 -430
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +0 -86
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +0 -592
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +0 -136
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +0 -51
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +0 -159
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +0 -123
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +0 -124
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +0 -70
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +0 -182
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +0 -75
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +0 -37
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +0 -38
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +0 -134
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +0 -49
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +0 -160
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +0 -410
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +0 -91
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +0 -117
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +0 -120
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +0 -83
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +0 -43
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +0 -80
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +0 -63
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +0 -101
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +0 -61
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +0 -122
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +0 -44
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +0 -77
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +0 -52
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +0 -45
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +0 -87
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +0 -68
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +0 -795
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +0 -94
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +0 -114
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +0 -65
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +0 -432
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +0 -560
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +0 -443
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +0 -566
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +0 -426
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +0 -739
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +0 -456
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +0 -363
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +0 -513
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +0 -655
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +0 -674
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +0 -717
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +0 -724
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +0 -694
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +0 -754
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +0 -414
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +0 -66
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +0 -420
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +0 -229
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +0 -508
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +0 -399
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +0 -750
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +0 -400
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +0 -729
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +0 -339
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +0 -401
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +0 -504
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +0 -314
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +0 -261
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +0 -281
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +0 -90
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +0 -60
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +0 -64
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +0 -449
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +0 -60
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +0 -102
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +0 -189
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +0 -330
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +0 -122
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +0 -419
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +0 -418
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +0 -96
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +0 -153
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +0 -242
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +0 -126
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +0 -221
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +0 -388
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +0 -567
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +0 -442
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +0 -302
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +0 -505
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +0 -361
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +0 -83
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +0 -163
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +0 -122
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +0 -145
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +0 -648
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +0 -945
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +0 -507
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +0 -474
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +0 -279
- package/vendor/theus-arsenal/skills/seo/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +0 -65
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +0 -735
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +0 -673
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +0 -817
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +0 -328
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +0 -719
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +0 -829
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +0 -479
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +0 -196
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +0 -815
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +0 -421
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +0 -506
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +0 -211
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +0 -470
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +0 -485
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +0 -550
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +0 -407
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +0 -101
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +0 -443
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +0 -331
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +0 -564
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +0 -65
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +0 -230
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +0 -406
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +0 -118
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +0 -279
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +0 -52
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +0 -108
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +0 -106
|
@@ -1,729 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: patrones-quarkus
|
|
3
|
-
description: Patrones de arquitectura para Quarkus 3.x LTS con Camel para mensajería, diseño de APIs REST, servicios CDI, acceso a datos con Panache y procesamiento asíncrono. Úsala para backends Java con Quarkus y arquitecturas orientadas a eventos.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Patrones de desarrollo con Quarkus
|
|
7
|
-
|
|
8
|
-
Patrones de arquitectura y APIs para servicios cloud-native y orientados a eventos con Quarkus 3.x y Apache Camel.
|
|
9
|
-
|
|
10
|
-
## Cuándo usarla
|
|
11
|
-
|
|
12
|
-
- Al construir APIs REST con JAX-RS o RESTEasy Reactive
|
|
13
|
-
- Al estructurar capas resource → service → repository
|
|
14
|
-
- Al implementar patrones orientados a eventos con Apache Camel y RabbitMQ
|
|
15
|
-
- Al configurar Hibernate Panache, caché o streams reactivos
|
|
16
|
-
- Al añadir validación, mapeo de excepciones o paginación
|
|
17
|
-
- Al configurar perfiles para entornos dev/staging/producción (configuración YAML)
|
|
18
|
-
- Al implementar logging personalizado con LogContext y Logback/encoder de Logstash
|
|
19
|
-
- Al trabajar con CompletableFuture para operaciones asíncronas
|
|
20
|
-
- Al implementar procesamiento con flujos condicionales
|
|
21
|
-
- Al trabajar con compilación nativa GraalVM
|
|
22
|
-
|
|
23
|
-
## Capa de servicio con múltiples dependencias
|
|
24
|
-
|
|
25
|
-
```java
|
|
26
|
-
@Slf4j
|
|
27
|
-
@ApplicationScoped
|
|
28
|
-
@RequiredArgsConstructor
|
|
29
|
-
public class OrderProcessingService {
|
|
30
|
-
|
|
31
|
-
private final OrderValidator orderValidator;
|
|
32
|
-
private final EventService eventService;
|
|
33
|
-
private final OrderRepository orderRepository;
|
|
34
|
-
private final FulfillmentPublisher fulfillmentPublisher;
|
|
35
|
-
private final AuditPublisher auditPublisher;
|
|
36
|
-
|
|
37
|
-
@Transactional
|
|
38
|
-
public OrderReceipt process(CreateOrderCommand command) {
|
|
39
|
-
ValidationResult validation = orderValidator.validate(command);
|
|
40
|
-
if (!validation.valid()) {
|
|
41
|
-
eventService.createErrorEvent(command, "ORDER_REJECTED", validation.message());
|
|
42
|
-
throw new WebApplicationException(validation.message(), Response.Status.BAD_REQUEST);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
Order order = Order.from(command);
|
|
46
|
-
orderRepository.persist(order);
|
|
47
|
-
|
|
48
|
-
OrderReceipt receipt = OrderReceipt.from(order);
|
|
49
|
-
fulfillmentPublisher.publishAsync(receipt);
|
|
50
|
-
auditPublisher.publish("ORDER_ACCEPTED", receipt);
|
|
51
|
-
eventService.createSuccessEvent(receipt, "ORDER_ACCEPTED");
|
|
52
|
-
|
|
53
|
-
log.info("Orden procesada {}", order.id);
|
|
54
|
-
return receipt;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**Patrones clave:**
|
|
60
|
-
- `@RequiredArgsConstructor` para inyección por constructor vía Lombok
|
|
61
|
-
- `@Slf4j` para logging con Logback
|
|
62
|
-
- `@Transactional` en métodos de servicio que escriben mediante Panache o repositorios
|
|
63
|
-
- Validar la entrada antes de persistir o publicar mensajes
|
|
64
|
-
- Registro de eventos para escenarios de éxito/error
|
|
65
|
-
- Publicación asíncrona de mensajes con Camel
|
|
66
|
-
|
|
67
|
-
## Patrón de contexto de logging personalizado (Logback)
|
|
68
|
-
|
|
69
|
-
```java
|
|
70
|
-
@ApplicationScoped
|
|
71
|
-
public class ProcessingService {
|
|
72
|
-
|
|
73
|
-
public void processDocument(Document doc) {
|
|
74
|
-
LogContext logContext = CustomLog.getCurrentContext();
|
|
75
|
-
try (SafeAutoCloseable ignored = CustomLog.startScope(logContext)) {
|
|
76
|
-
// Añade contexto a todas las sentencias de log
|
|
77
|
-
logContext.put("documentId", doc.getId().toString());
|
|
78
|
-
logContext.put("documentType", doc.getType());
|
|
79
|
-
logContext.put("userId", SecurityContext.getUserId());
|
|
80
|
-
|
|
81
|
-
log.info("Iniciando procesamiento del documento");
|
|
82
|
-
|
|
83
|
-
// Todos los logs dentro de este scope heredan el contexto
|
|
84
|
-
processInternal(doc);
|
|
85
|
-
|
|
86
|
-
log.info("Procesamiento del documento completado");
|
|
87
|
-
} catch (Exception e) {
|
|
88
|
-
log.error("Falló el procesamiento del documento", e);
|
|
89
|
-
throw e;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**Configuración de Logback (logback.xml):**
|
|
96
|
-
|
|
97
|
-
```xml
|
|
98
|
-
<configuration>
|
|
99
|
-
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
|
100
|
-
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
|
|
101
|
-
<includeContext>true</includeContext>
|
|
102
|
-
<includeMdc>true</includeMdc>
|
|
103
|
-
</encoder>
|
|
104
|
-
</appender>
|
|
105
|
-
|
|
106
|
-
<logger name="com.example" level="INFO"/>
|
|
107
|
-
<root level="WARN">
|
|
108
|
-
<appender-ref ref="CONSOLE"/>
|
|
109
|
-
</root>
|
|
110
|
-
</configuration>
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Patrón de servicio de eventos
|
|
114
|
-
|
|
115
|
-
```java
|
|
116
|
-
@Slf4j
|
|
117
|
-
@ApplicationScoped
|
|
118
|
-
@RequiredArgsConstructor
|
|
119
|
-
public class EventService {
|
|
120
|
-
private final EventRepository eventRepository;
|
|
121
|
-
private final ObjectMapper objectMapper;
|
|
122
|
-
|
|
123
|
-
public void createSuccessEvent(Object payload, String eventType) {
|
|
124
|
-
Objects.requireNonNull(payload, "El payload no puede ser nulo");
|
|
125
|
-
Event event = new Event();
|
|
126
|
-
event.setType(eventType);
|
|
127
|
-
event.setStatus(EventStatus.SUCCESS);
|
|
128
|
-
event.setPayload(serializePayload(payload));
|
|
129
|
-
event.setTimestamp(Instant.now());
|
|
130
|
-
|
|
131
|
-
eventRepository.persist(event);
|
|
132
|
-
log.info("Evento de éxito creado: {}", eventType);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
public void createErrorEvent(Object payload, String eventType, String errorMessage) {
|
|
136
|
-
Objects.requireNonNull(payload, "El payload no puede ser nulo");
|
|
137
|
-
if (errorMessage == null || errorMessage.isBlank()) {
|
|
138
|
-
throw new IllegalArgumentException("El mensaje de error no puede estar en blanco");
|
|
139
|
-
}
|
|
140
|
-
Event event = new Event();
|
|
141
|
-
event.setType(eventType);
|
|
142
|
-
event.setStatus(EventStatus.ERROR);
|
|
143
|
-
event.setErrorMessage(errorMessage);
|
|
144
|
-
event.setPayload(serializePayload(payload));
|
|
145
|
-
event.setTimestamp(Instant.now());
|
|
146
|
-
|
|
147
|
-
eventRepository.persist(event);
|
|
148
|
-
log.error("Evento de error creado: {} - {}", eventType, errorMessage);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
private String serializePayload(Object payload) {
|
|
152
|
-
try {
|
|
153
|
-
return objectMapper.writeValueAsString(payload);
|
|
154
|
-
} catch (JsonProcessingException e) {
|
|
155
|
-
throw new IllegalStateException("No se pudo serializar el payload del evento", e);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Publicación de mensajes con Camel (RabbitMQ)
|
|
162
|
-
|
|
163
|
-
```java
|
|
164
|
-
@Slf4j
|
|
165
|
-
@ApplicationScoped
|
|
166
|
-
@RequiredArgsConstructor
|
|
167
|
-
public class BusinessRulesPublisher {
|
|
168
|
-
private final ProducerTemplate producerTemplate;
|
|
169
|
-
|
|
170
|
-
public void publishSync(BusinessRulesPayload payload) {
|
|
171
|
-
producerTemplate.sendBody(
|
|
172
|
-
"direct:business-rules-publisher",
|
|
173
|
-
payload
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**Configuración de la ruta Camel:**
|
|
180
|
-
|
|
181
|
-
```java
|
|
182
|
-
@ApplicationScoped
|
|
183
|
-
public class BusinessRulesRoute extends RouteBuilder {
|
|
184
|
-
|
|
185
|
-
@ConfigProperty(name = "camel.rabbitmq.queue.business-rules")
|
|
186
|
-
String businessRulesQueue;
|
|
187
|
-
|
|
188
|
-
@ConfigProperty(name = "rabbitmq.host")
|
|
189
|
-
String rabbitHost;
|
|
190
|
-
|
|
191
|
-
@ConfigProperty(name = "rabbitmq.port")
|
|
192
|
-
Integer rabbitPort;
|
|
193
|
-
|
|
194
|
-
@Override
|
|
195
|
-
public void configure() {
|
|
196
|
-
from("direct:business-rules-publisher")
|
|
197
|
-
.routeId("business-rules-publisher")
|
|
198
|
-
.log("Publicando mensaje en RabbitMQ: ${body}")
|
|
199
|
-
.marshal().json(JsonLibrary.Jackson)
|
|
200
|
-
.toF("spring-rabbitmq:%s?hostname=%s&portNumber=%d",
|
|
201
|
-
businessRulesQueue, rabbitHost, rabbitPort);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
## Rutas directas de Camel (en memoria)
|
|
207
|
-
|
|
208
|
-
```java
|
|
209
|
-
@ApplicationScoped
|
|
210
|
-
public class DocumentProcessingRoute extends RouteBuilder {
|
|
211
|
-
|
|
212
|
-
@Override
|
|
213
|
-
public void configure() {
|
|
214
|
-
// Manejo de errores
|
|
215
|
-
onException(ValidationException.class)
|
|
216
|
-
.handled(true)
|
|
217
|
-
.to("direct:validation-error-handler")
|
|
218
|
-
.log("Error de validación: ${exception.message}");
|
|
219
|
-
|
|
220
|
-
// Ruta principal de procesamiento
|
|
221
|
-
from("direct:process-document")
|
|
222
|
-
.routeId("document-processing")
|
|
223
|
-
.log("Procesando documento: ${header.documentId}")
|
|
224
|
-
.bean(DocumentValidator.class, "validate")
|
|
225
|
-
.bean(DocumentTransformer.class, "transform")
|
|
226
|
-
.choice()
|
|
227
|
-
.when(header("documentType").isEqualTo("INVOICE"))
|
|
228
|
-
.to("direct:process-invoice")
|
|
229
|
-
.when(header("documentType").isEqualTo("CREDIT_NOTE"))
|
|
230
|
-
.to("direct:process-credit-note")
|
|
231
|
-
.otherwise()
|
|
232
|
-
.to("direct:process-generic")
|
|
233
|
-
.end();
|
|
234
|
-
|
|
235
|
-
from("direct:validation-error-handler")
|
|
236
|
-
.bean(EventService.class, "createErrorEvent")
|
|
237
|
-
.log("Error de validación gestionado");
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
## Procesamiento de archivos con Camel
|
|
243
|
-
|
|
244
|
-
```java
|
|
245
|
-
@ApplicationScoped
|
|
246
|
-
public class FileMonitoringRoute extends RouteBuilder {
|
|
247
|
-
|
|
248
|
-
@ConfigProperty(name = "file.input.directory")
|
|
249
|
-
String inputDirectory;
|
|
250
|
-
|
|
251
|
-
@ConfigProperty(name = "file.processed.directory")
|
|
252
|
-
String processedDirectory;
|
|
253
|
-
|
|
254
|
-
@ConfigProperty(name = "file.error.directory")
|
|
255
|
-
String errorDirectory;
|
|
256
|
-
|
|
257
|
-
@Override
|
|
258
|
-
public void configure() {
|
|
259
|
-
from("file:" + inputDirectory + "?move=" + processedDirectory +
|
|
260
|
-
"&moveFailed=" + errorDirectory + "&delay=5000")
|
|
261
|
-
.routeId("file-monitor")
|
|
262
|
-
.log("Procesando archivo: ${header.CamelFileName}")
|
|
263
|
-
.to("direct:process-file");
|
|
264
|
-
|
|
265
|
-
from("direct:process-file")
|
|
266
|
-
.bean(OrderProcessingService.class, "processFile")
|
|
267
|
-
.log("Procesamiento del archivo completado");
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
## Invocación de beans desde Camel
|
|
273
|
-
|
|
274
|
-
```java
|
|
275
|
-
@ApplicationScoped
|
|
276
|
-
public class InvoiceRoute extends RouteBuilder {
|
|
277
|
-
|
|
278
|
-
@Override
|
|
279
|
-
public void configure() {
|
|
280
|
-
from("direct:invoice-validation")
|
|
281
|
-
.bean(InvoiceFlowValidator.class, "validateFlowWithConfig")
|
|
282
|
-
.log("Resultado de validación: ${body}");
|
|
283
|
-
|
|
284
|
-
from("direct:persist-and-publish")
|
|
285
|
-
.bean(DocumentJobService.class, "createDocumentAndJobEntities")
|
|
286
|
-
.bean(BusinessRulesPublisher.class, "publishAsync")
|
|
287
|
-
.bean(EventService.class, "createSuccessEvent(${body}, 'PUBLISHED')");
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
## Estructura de la API REST
|
|
293
|
-
|
|
294
|
-
```java
|
|
295
|
-
@Path("/api/documents")
|
|
296
|
-
@Produces(MediaType.APPLICATION_JSON)
|
|
297
|
-
@Consumes(MediaType.APPLICATION_JSON)
|
|
298
|
-
@RequiredArgsConstructor
|
|
299
|
-
public class DocumentResource {
|
|
300
|
-
private final DocumentService documentService;
|
|
301
|
-
|
|
302
|
-
@GET
|
|
303
|
-
public Response list(
|
|
304
|
-
@QueryParam("page") @DefaultValue("0") int page,
|
|
305
|
-
@QueryParam("size") @DefaultValue("20") int size) {
|
|
306
|
-
List<Document> documents = documentService.list(page, size);
|
|
307
|
-
return Response.ok(documents).build();
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
@POST
|
|
311
|
-
public Response create(@Valid CreateDocumentRequest request, @Context UriInfo uriInfo) {
|
|
312
|
-
Document document = documentService.create(request);
|
|
313
|
-
URI location = uriInfo.getAbsolutePathBuilder()
|
|
314
|
-
.path(String.valueOf(document.id))
|
|
315
|
-
.build();
|
|
316
|
-
return Response.created(location).entity(DocumentResponse.from(document)).build();
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
@GET
|
|
320
|
-
@Path("/{id}")
|
|
321
|
-
public Response getById(@PathParam("id") Long id) {
|
|
322
|
-
return documentService.findById(id)
|
|
323
|
-
.map(DocumentResponse::from)
|
|
324
|
-
.map(Response::ok)
|
|
325
|
-
.orElse(Response.status(Response.Status.NOT_FOUND))
|
|
326
|
-
.build();
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
## Patrón de repositorio (Panache Repository)
|
|
332
|
-
|
|
333
|
-
```java
|
|
334
|
-
@ApplicationScoped
|
|
335
|
-
public class DocumentRepository implements PanacheRepository<Document> {
|
|
336
|
-
|
|
337
|
-
public List<Document> findByStatus(DocumentStatus status, int page, int size) {
|
|
338
|
-
return find("status = ?1 order by createdAt desc", status)
|
|
339
|
-
.page(page, size)
|
|
340
|
-
.list();
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
public Optional<Document> findByReferenceNumber(String referenceNumber) {
|
|
344
|
-
return find("referenceNumber", referenceNumber).firstResultOptional();
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
public long countByStatusAndDate(DocumentStatus status, LocalDate date) {
|
|
348
|
-
return count("status = ?1 and createdAt >= ?2", status, date.atStartOfDay());
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
## Capa de servicio con transacciones
|
|
354
|
-
|
|
355
|
-
```java
|
|
356
|
-
@ApplicationScoped
|
|
357
|
-
@RequiredArgsConstructor
|
|
358
|
-
public class DocumentService {
|
|
359
|
-
private final DocumentRepository repo;
|
|
360
|
-
private final EventService eventService;
|
|
361
|
-
|
|
362
|
-
@Transactional
|
|
363
|
-
public Document create(CreateDocumentRequest request) {
|
|
364
|
-
Document document = new Document();
|
|
365
|
-
document.setReferenceNumber(request.referenceNumber());
|
|
366
|
-
document.setDescription(request.description());
|
|
367
|
-
document.setStatus(DocumentStatus.PENDING);
|
|
368
|
-
document.setCreatedAt(Instant.now());
|
|
369
|
-
|
|
370
|
-
repo.persist(document);
|
|
371
|
-
|
|
372
|
-
eventService.createSuccessEvent(document, "DOCUMENT_CREATED");
|
|
373
|
-
|
|
374
|
-
return document;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
public Optional<Document> findById(Long id) {
|
|
378
|
-
return repo.findByIdOptional(id);
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
public List<Document> list(int page, int size) {
|
|
382
|
-
return repo.findAll()
|
|
383
|
-
.page(page, size)
|
|
384
|
-
.list();
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
## DTOs y validación
|
|
390
|
-
|
|
391
|
-
```java
|
|
392
|
-
public record CreateDocumentRequest(
|
|
393
|
-
@NotBlank @Size(max = 200) String referenceNumber,
|
|
394
|
-
@NotBlank @Size(max = 2000) String description,
|
|
395
|
-
@NotNull @FutureOrPresent Instant validUntil,
|
|
396
|
-
@NotEmpty List<@NotBlank String> categories) {}
|
|
397
|
-
|
|
398
|
-
public record DocumentResponse(Long id, String referenceNumber, DocumentStatus status) {
|
|
399
|
-
public static DocumentResponse from(Document document) {
|
|
400
|
-
return new DocumentResponse(document.getId(), document.getReferenceNumber(),
|
|
401
|
-
document.getStatus());
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
## Mapeo de excepciones
|
|
407
|
-
|
|
408
|
-
```java
|
|
409
|
-
@Provider
|
|
410
|
-
public class ValidationExceptionMapper implements ExceptionMapper<ConstraintViolationException> {
|
|
411
|
-
@Override
|
|
412
|
-
public Response toResponse(ConstraintViolationException exception) {
|
|
413
|
-
String message = exception.getConstraintViolations().stream()
|
|
414
|
-
.map(cv -> cv.getPropertyPath() + ": " + cv.getMessage())
|
|
415
|
-
.collect(Collectors.joining(", "));
|
|
416
|
-
|
|
417
|
-
return Response.status(Response.Status.BAD_REQUEST)
|
|
418
|
-
.entity(Map.of("error", "validation_error", "message", message))
|
|
419
|
-
.build();
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
@Provider
|
|
424
|
-
@Slf4j
|
|
425
|
-
public class GenericExceptionMapper implements ExceptionMapper<Exception> {
|
|
426
|
-
|
|
427
|
-
@Override
|
|
428
|
-
public Response toResponse(Exception exception) {
|
|
429
|
-
log.error("Excepción no gestionada", exception);
|
|
430
|
-
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
|
431
|
-
.entity(Map.of("error", "internal_error", "message", "Ocurrió un error inesperado"))
|
|
432
|
-
.build();
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
## Operaciones asíncronas con CompletableFuture
|
|
438
|
-
|
|
439
|
-
```java
|
|
440
|
-
@Slf4j
|
|
441
|
-
@ApplicationScoped
|
|
442
|
-
@RequiredArgsConstructor
|
|
443
|
-
public class FileStorageService {
|
|
444
|
-
private final S3Client s3Client;
|
|
445
|
-
private final ExecutorService executorService;
|
|
446
|
-
|
|
447
|
-
@ConfigProperty(name = "storage.bucket-name")
|
|
448
|
-
String bucketName;
|
|
449
|
-
|
|
450
|
-
public CompletableFuture<StoredDocumentInfo> uploadOriginalFile(
|
|
451
|
-
InputStream inputStream,
|
|
452
|
-
long size,
|
|
453
|
-
LogContext logContext,
|
|
454
|
-
InvoiceFormat format) {
|
|
455
|
-
|
|
456
|
-
return CompletableFuture.supplyAsync(() -> {
|
|
457
|
-
try (SafeAutoCloseable ignored = CustomLog.startScope(logContext)) {
|
|
458
|
-
String path = generateStoragePath(format);
|
|
459
|
-
|
|
460
|
-
PutObjectRequest request = PutObjectRequest.builder()
|
|
461
|
-
.bucket(bucketName)
|
|
462
|
-
.key(path)
|
|
463
|
-
.contentLength(size)
|
|
464
|
-
.build();
|
|
465
|
-
|
|
466
|
-
s3Client.putObject(request, RequestBody.fromInputStream(inputStream, size));
|
|
467
|
-
|
|
468
|
-
log.info("Archivo subido a S3: {}", path);
|
|
469
|
-
|
|
470
|
-
return new StoredDocumentInfo(path, size, Instant.now());
|
|
471
|
-
} catch (Exception e) {
|
|
472
|
-
log.error("No se pudo subir el archivo a S3", e);
|
|
473
|
-
throw new StorageException("Falló la subida", e);
|
|
474
|
-
}
|
|
475
|
-
}, executorService);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
## Caché
|
|
481
|
-
|
|
482
|
-
```java
|
|
483
|
-
@ApplicationScoped
|
|
484
|
-
@RequiredArgsConstructor
|
|
485
|
-
public class DocumentCacheService {
|
|
486
|
-
private final DocumentRepository repo;
|
|
487
|
-
|
|
488
|
-
@CacheResult(cacheName = "document-cache")
|
|
489
|
-
public Optional<Document> getById(@CacheKey Long id) {
|
|
490
|
-
return repo.findByIdOptional(id);
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
@CacheInvalidate(cacheName = "document-cache")
|
|
494
|
-
public void evict(@CacheKey Long id) {}
|
|
495
|
-
|
|
496
|
-
@CacheInvalidateAll(cacheName = "document-cache")
|
|
497
|
-
public void evictAll() {}
|
|
498
|
-
}
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
## Configuración en YAML
|
|
502
|
-
|
|
503
|
-
```yaml
|
|
504
|
-
# application.yml
|
|
505
|
-
"%dev":
|
|
506
|
-
quarkus:
|
|
507
|
-
datasource:
|
|
508
|
-
jdbc:
|
|
509
|
-
url: jdbc:postgresql://localhost:5432/dev_db
|
|
510
|
-
username: dev_user
|
|
511
|
-
password: ${DB_PASSWORD}
|
|
512
|
-
hibernate-orm:
|
|
513
|
-
database:
|
|
514
|
-
generation: drop-and-create
|
|
515
|
-
|
|
516
|
-
rabbitmq:
|
|
517
|
-
host: localhost
|
|
518
|
-
port: 5672
|
|
519
|
-
username: ${RABBITMQ_USER}
|
|
520
|
-
password: ${RABBITMQ_PASSWORD}
|
|
521
|
-
|
|
522
|
-
"%test":
|
|
523
|
-
quarkus:
|
|
524
|
-
datasource:
|
|
525
|
-
jdbc:
|
|
526
|
-
url: jdbc:h2:mem:test
|
|
527
|
-
hibernate-orm:
|
|
528
|
-
database:
|
|
529
|
-
generation: drop-and-create
|
|
530
|
-
|
|
531
|
-
"%prod":
|
|
532
|
-
quarkus:
|
|
533
|
-
datasource:
|
|
534
|
-
jdbc:
|
|
535
|
-
url: ${DATABASE_URL}
|
|
536
|
-
username: ${DB_USER}
|
|
537
|
-
password: ${DB_PASSWORD}
|
|
538
|
-
hibernate-orm:
|
|
539
|
-
database:
|
|
540
|
-
generation: validate
|
|
541
|
-
|
|
542
|
-
rabbitmq:
|
|
543
|
-
host: ${RABBITMQ_HOST}
|
|
544
|
-
port: ${RABBITMQ_PORT}
|
|
545
|
-
username: ${RABBITMQ_USER}
|
|
546
|
-
password: ${RABBITMQ_PASSWORD}
|
|
547
|
-
|
|
548
|
-
# Configuración de Camel
|
|
549
|
-
camel:
|
|
550
|
-
rabbitmq:
|
|
551
|
-
queue:
|
|
552
|
-
business-rules: business-rules-queue
|
|
553
|
-
invoice-processing: invoice-processing-queue
|
|
554
|
-
```
|
|
555
|
-
|
|
556
|
-
## Health checks
|
|
557
|
-
|
|
558
|
-
```java
|
|
559
|
-
@Readiness
|
|
560
|
-
@ApplicationScoped
|
|
561
|
-
@RequiredArgsConstructor
|
|
562
|
-
public class DatabaseHealthCheck implements HealthCheck {
|
|
563
|
-
private final AgroalDataSource dataSource;
|
|
564
|
-
|
|
565
|
-
@Override
|
|
566
|
-
public HealthCheckResponse call() {
|
|
567
|
-
try (Connection conn = dataSource.getConnection()) {
|
|
568
|
-
boolean valid = conn.isValid(2);
|
|
569
|
-
return HealthCheckResponse.named("Database connection")
|
|
570
|
-
.status(valid)
|
|
571
|
-
.build();
|
|
572
|
-
} catch (SQLException e) {
|
|
573
|
-
return HealthCheckResponse.down("Database connection");
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
@Liveness
|
|
579
|
-
@ApplicationScoped
|
|
580
|
-
public class CamelHealthCheck implements HealthCheck {
|
|
581
|
-
@Inject
|
|
582
|
-
CamelContext camelContext;
|
|
583
|
-
|
|
584
|
-
@Override
|
|
585
|
-
public HealthCheckResponse call() {
|
|
586
|
-
boolean isStarted = camelContext.getStatus().isStarted();
|
|
587
|
-
return HealthCheckResponse.named("Camel Context")
|
|
588
|
-
.status(isStarted)
|
|
589
|
-
.build();
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
```
|
|
593
|
-
|
|
594
|
-
## Dependencias (Maven)
|
|
595
|
-
|
|
596
|
-
```xml
|
|
597
|
-
<properties>
|
|
598
|
-
<quarkus.platform.version>3.27.0</quarkus.platform.version>
|
|
599
|
-
<lombok.version>1.18.42</lombok.version>
|
|
600
|
-
<assertj-core.version>3.24.2</assertj-core.version>
|
|
601
|
-
<jacoco-maven-plugin.version>0.8.13</jacoco-maven-plugin.version>
|
|
602
|
-
<maven.compiler.release>17</maven.compiler.release>
|
|
603
|
-
</properties>
|
|
604
|
-
|
|
605
|
-
<dependencyManagement>
|
|
606
|
-
<dependencies>
|
|
607
|
-
<dependency>
|
|
608
|
-
<groupId>io.quarkus.platform</groupId>
|
|
609
|
-
<artifactId>quarkus-bom</artifactId>
|
|
610
|
-
<version>${quarkus.platform.version}</version>
|
|
611
|
-
<type>pom</type>
|
|
612
|
-
<scope>import</scope>
|
|
613
|
-
</dependency>
|
|
614
|
-
<dependency>
|
|
615
|
-
<groupId>io.quarkus.platform</groupId>
|
|
616
|
-
<artifactId>quarkus-camel-bom</artifactId>
|
|
617
|
-
<version>${quarkus.platform.version}</version>
|
|
618
|
-
<type>pom</type>
|
|
619
|
-
<scope>import</scope>
|
|
620
|
-
</dependency>
|
|
621
|
-
</dependencies>
|
|
622
|
-
</dependencyManagement>
|
|
623
|
-
|
|
624
|
-
<dependencies>
|
|
625
|
-
<!-- Núcleo de Quarkus -->
|
|
626
|
-
<dependency>
|
|
627
|
-
<groupId>io.quarkus</groupId>
|
|
628
|
-
<artifactId>quarkus-arc</artifactId>
|
|
629
|
-
</dependency>
|
|
630
|
-
<dependency>
|
|
631
|
-
<groupId>io.quarkus</groupId>
|
|
632
|
-
<artifactId>quarkus-config-yaml</artifactId>
|
|
633
|
-
</dependency>
|
|
634
|
-
|
|
635
|
-
<!-- Extensiones de Camel -->
|
|
636
|
-
<dependency>
|
|
637
|
-
<groupId>org.apache.camel.quarkus</groupId>
|
|
638
|
-
<artifactId>camel-quarkus-spring-rabbitmq</artifactId>
|
|
639
|
-
</dependency>
|
|
640
|
-
<dependency>
|
|
641
|
-
<groupId>org.apache.camel.quarkus</groupId>
|
|
642
|
-
<artifactId>camel-quarkus-direct</artifactId>
|
|
643
|
-
</dependency>
|
|
644
|
-
<dependency>
|
|
645
|
-
<groupId>org.apache.camel.quarkus</groupId>
|
|
646
|
-
<artifactId>camel-quarkus-bean</artifactId>
|
|
647
|
-
</dependency>
|
|
648
|
-
|
|
649
|
-
<!-- Lombok -->
|
|
650
|
-
<dependency>
|
|
651
|
-
<groupId>org.projectlombok</groupId>
|
|
652
|
-
<artifactId>lombok</artifactId>
|
|
653
|
-
<version>${lombok.version}</version>
|
|
654
|
-
<scope>provided</scope>
|
|
655
|
-
</dependency>
|
|
656
|
-
|
|
657
|
-
<!-- Logging -->
|
|
658
|
-
<dependency>
|
|
659
|
-
<groupId>io.quarkiverse.logging.logback</groupId>
|
|
660
|
-
<artifactId>quarkus-logging-logback</artifactId>
|
|
661
|
-
</dependency>
|
|
662
|
-
<dependency>
|
|
663
|
-
<groupId>net.logstash.logback</groupId>
|
|
664
|
-
<artifactId>logstash-logback-encoder</artifactId>
|
|
665
|
-
</dependency>
|
|
666
|
-
</dependencies>
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
## Buenas prácticas
|
|
670
|
-
|
|
671
|
-
### Arquitectura
|
|
672
|
-
- Usa `@RequiredArgsConstructor` con Lombok para inyección por constructor
|
|
673
|
-
- Mantén la capa de servicio delgada; delega la lógica compleja a clases especializadas
|
|
674
|
-
- Usa rutas de Camel para enrutamiento de mensajes y patrones de integración
|
|
675
|
-
- Prefiere el patrón Panache Repository para el acceso a datos
|
|
676
|
-
|
|
677
|
-
### Orientado a eventos
|
|
678
|
-
- Registra siempre las operaciones con EventService (eventos de éxito/error)
|
|
679
|
-
- Usa endpoints `direct:` de Camel para enrutamiento en memoria
|
|
680
|
-
- Usa el componente `spring-rabbitmq` para la integración con RabbitMQ
|
|
681
|
-
- Implementa publicación asíncrona con `ProducerTemplate.asyncSendBody()`
|
|
682
|
-
|
|
683
|
-
### Logging
|
|
684
|
-
- Usa Logback con el encoder de Logstash para logging estructurado
|
|
685
|
-
- Propaga el LogContext a través de las llamadas de servicio con `SafeAutoCloseable`
|
|
686
|
-
- Añade información contextual al LogContext para el trazado de peticiones
|
|
687
|
-
- Usa `@Slf4j` en lugar de instanciar loggers manualmente
|
|
688
|
-
|
|
689
|
-
### Operaciones asíncronas
|
|
690
|
-
- Usa CompletableFuture para operaciones de E/S no bloqueantes
|
|
691
|
-
- Llama a `.join()` cuando necesites esperar la finalización
|
|
692
|
-
- Maneja correctamente las excepciones de CompletableFuture
|
|
693
|
-
- Pasa el LogContext a las operaciones asíncronas para el trazado
|
|
694
|
-
|
|
695
|
-
### Configuración
|
|
696
|
-
- Usa configuración YAML (`quarkus-config-yaml`)
|
|
697
|
-
- Configuración por perfiles para entornos dev/test/prod
|
|
698
|
-
- Externaliza la configuración sensible a variables de entorno
|
|
699
|
-
- Usa `@ConfigProperty` para inyección de configuración con tipos seguros
|
|
700
|
-
|
|
701
|
-
### Validación
|
|
702
|
-
- Valida en la capa resource con `@Valid`
|
|
703
|
-
- Usa anotaciones de Bean Validation en los DTOs
|
|
704
|
-
- Mapea excepciones a respuestas HTTP adecuadas con `@Provider`
|
|
705
|
-
|
|
706
|
-
### Transacciones
|
|
707
|
-
- Usa `@Transactional` en métodos de servicio que modifican datos
|
|
708
|
-
- Mantén las transacciones cortas y enfocadas
|
|
709
|
-
- Evita llamar a operaciones asíncronas dentro de transacciones
|
|
710
|
-
|
|
711
|
-
### Testing
|
|
712
|
-
- Usa `camel-quarkus-junit5` para probar rutas
|
|
713
|
-
- Usa AssertJ para las aserciones
|
|
714
|
-
- Mockea todas las dependencias externas
|
|
715
|
-
- Prueba a fondo la lógica de flujos condicionales
|
|
716
|
-
|
|
717
|
-
### Específico de Quarkus
|
|
718
|
-
- Mantente en la última versión LTS (3.x)
|
|
719
|
-
- Usa el modo dev de Quarkus para hot reload
|
|
720
|
-
- Añade health checks para preparación de producción
|
|
721
|
-
- Prueba periódicamente la compatibilidad con compilación nativa
|
|
722
|
-
|
|
723
|
-
## Skills relacionadas
|
|
724
|
-
|
|
725
|
-
- `seguridad-quarkus`
|
|
726
|
-
- `tdd-quarkus`
|
|
727
|
-
- `verificacion-quarkus`
|
|
728
|
-
- `estandares-java`
|
|
729
|
-
- `patrones-jpa`
|