theus-cli-darwin-x64 0.2.84
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/LICENSE +42 -0
- package/README.md +295 -0
- package/RELEASE.json +18 -0
- package/assets/brand-official/v1.0/logo/theus-lockup-negative-official.png +0 -0
- package/assets/brand-official/v1.0/logo/theus-lockup-primary-dark-official.png +0 -0
- package/assets/fonts/satoshi/satoshi-300.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-400.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-500.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-700.woff2 +0 -0
- package/assets/fonts/satoshi/satoshi-900.woff2 +0 -0
- package/assets/windows-store/Square150x150Logo.png +0 -0
- package/assets/windows-store/Square44x44Logo.png +0 -0
- package/assets/windows-store/StoreLogo.png +0 -0
- package/assets/windows-store/theus-store-icon-master.png +0 -0
- package/bin/theus +0 -0
- package/package.json +18 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +6 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +72 -0
- package/vendor/theus-arsenal/.mailmap +2 -0
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +25 -0
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +20 -0
- package/vendor/theus-arsenal/AUTHORS.md +8 -0
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +11 -0
- package/vendor/theus-arsenal/LICENSE +26 -0
- package/vendor/theus-arsenal/PROVENANCE.md +9 -0
- package/vendor/theus-arsenal/README.md +41 -0
- package/vendor/theus-arsenal/THIRD_PARTY.md +80 -0
- package/vendor/theus-arsenal/agents/actualizador-docs.md +123 -0
- package/vendor/theus-arsenal/agents/analista-comentarios.md +53 -0
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +60 -0
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +53 -0
- package/vendor/theus-arsenal/agents/analista-tipos.md +49 -0
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +148 -0
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +79 -0
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +90 -0
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +116 -0
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +219 -0
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +206 -0
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +58 -0
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +76 -0
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +135 -0
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +96 -0
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +257 -0
- package/vendor/theus-arsenal/agents/escaner-secretos.md +196 -0
- package/vendor/theus-arsenal/agents/especialista-seo.md +70 -0
- package/vendor/theus-arsenal/agents/estratega-marketing.md +158 -0
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +214 -0
- package/vendor/theus-arsenal/agents/evaluador-harness.md +217 -0
- package/vendor/theus-arsenal/agents/explorador-codigo.md +79 -0
- package/vendor/theus-arsenal/agents/extractor-specs.md +214 -0
- package/vendor/theus-arsenal/agents/generador-harness.md +139 -0
- package/vendor/theus-arsenal/agents/guia-tdd.md +99 -0
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +162 -0
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +93 -0
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +454 -0
- package/vendor/theus-arsenal/agents/planificador-harness.md +107 -0
- package/vendor/theus-arsenal/agents/planificador.md +221 -0
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +181 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +98 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +209 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +253 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +102 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +274 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +128 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +128 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +214 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +156 -0
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +169 -0
- package/vendor/theus-arsenal/agents/resolutor-builds.md +122 -0
- package/vendor/theus-arsenal/agents/revisor-bd.md +97 -0
- package/vendor/theus-arsenal/agents/revisor-codigo.md +291 -0
- package/vendor/theus-arsenal/agents/revisor-config-red.md +116 -0
- package/vendor/theus-arsenal/agents/revisor-cpp.md +80 -0
- package/vendor/theus-arsenal/agents/revisor-csharp.md +109 -0
- package/vendor/theus-arsenal/agents/revisor-django.md +168 -0
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +82 -0
- package/vendor/theus-arsenal/agents/revisor-flutter.md +251 -0
- package/vendor/theus-arsenal/agents/revisor-go.md +84 -0
- package/vendor/theus-arsenal/agents/revisor-java.md +192 -0
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +171 -0
- package/vendor/theus-arsenal/agents/revisor-ml.md +159 -0
- package/vendor/theus-arsenal/agents/revisor-php.md +108 -0
- package/vendor/theus-arsenal/agents/revisor-python.md +106 -0
- package/vendor/theus-arsenal/agents/revisor-react.md +166 -0
- package/vendor/theus-arsenal/agents/revisor-rust.md +102 -0
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +116 -0
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +95 -0
- package/vendor/theus-arsenal/agents/revisor-swift.md +115 -0
- package/vendor/theus-arsenal/agents/revisor-typescript.md +123 -0
- package/vendor/theus-arsenal/agents/revisor-vue.md +205 -0
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +55 -0
- package/vendor/theus-arsenal/commands/actualizar-docs.md +88 -0
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +78 -0
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +109 -0
- package/vendor/theus-arsenal/commands/aprender.md +74 -0
- package/vendor/theus-arsenal/commands/arreglar-build.md +66 -0
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +153 -0
- package/vendor/theus-arsenal/commands/build-cpp.md +173 -0
- package/vendor/theus-arsenal/commands/build-flutter.md +164 -0
- package/vendor/theus-arsenal/commands/build-go.md +183 -0
- package/vendor/theus-arsenal/commands/build-gradle.md +75 -0
- package/vendor/theus-arsenal/commands/build-kotlin.md +176 -0
- package/vendor/theus-arsenal/commands/build-react.md +187 -0
- package/vendor/theus-arsenal/commands/build-rust.md +187 -0
- package/vendor/theus-arsenal/commands/campana-marketing.md +125 -0
- package/vendor/theus-arsenal/commands/checkpoint.md +78 -0
- package/vendor/theus-arsenal/commands/cobertura-tests.md +73 -0
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +86 -0
- package/vendor/theus-arsenal/commands/consulta.md +164 -0
- package/vendor/theus-arsenal/commands/control-calidad.md +50 -0
- package/vendor/theus-arsenal/commands/crear-skill.md +77 -0
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +30 -0
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +17 -0
- package/vendor/theus-arsenal/commands/epica-descomponer.md +22 -0
- package/vendor/theus-arsenal/commands/epica-publicar.md +21 -0
- package/vendor/theus-arsenal/commands/epica-reclamar.md +25 -0
- package/vendor/theus-arsenal/commands/epica-revisar.md +22 -0
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +21 -0
- package/vendor/theus-arsenal/commands/epica-validar.md +21 -0
- package/vendor/theus-arsenal/commands/evolucionar.md +176 -0
- package/vendor/theus-arsenal/commands/funcionalidad.md +49 -0
- package/vendor/theus-arsenal/commands/guardar-sesion.md +278 -0
- package/vendor/theus-arsenal/commands/harness-build.md +111 -0
- package/vendor/theus-arsenal/commands/harness-diseno.md +46 -0
- package/vendor/theus-arsenal/commands/informe-costos.md +90 -0
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +36 -0
- package/vendor/theus-arsenal/commands/instintos-estado.md +53 -0
- package/vendor/theus-arsenal/commands/instintos-exportar.md +69 -0
- package/vendor/theus-arsenal/commands/instintos-importar.md +120 -0
- package/vendor/theus-arsenal/commands/lienzo-planes.md +48 -0
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +84 -0
- package/vendor/theus-arsenal/commands/modo-seguro.md +96 -0
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +36 -0
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +38 -0
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +36 -0
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +40 -0
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +44 -0
- package/vendor/theus-arsenal/commands/orq-revisar.md +135 -0
- package/vendor/theus-arsenal/commands/plan-prd.md +160 -0
- package/vendor/theus-arsenal/commands/plan.md +198 -0
- package/vendor/theus-arsenal/commands/podar.md +31 -0
- package/vendor/theus-arsenal/commands/pr.md +181 -0
- package/vendor/theus-arsenal/commands/promover.md +41 -0
- package/vendor/theus-arsenal/commands/proyectos.md +33 -0
- package/vendor/theus-arsenal/commands/prp-commit.md +112 -0
- package/vendor/theus-arsenal/commands/prp-implementar.md +385 -0
- package/vendor/theus-arsenal/commands/prp-planificar.md +501 -0
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +160 -0
- package/vendor/theus-arsenal/commands/revisar-codigo.md +289 -0
- package/vendor/theus-arsenal/commands/revisar-cpp.md +132 -0
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +39 -0
- package/vendor/theus-arsenal/commands/revisar-flutter.md +115 -0
- package/vendor/theus-arsenal/commands/revisar-go.md +148 -0
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +140 -0
- package/vendor/theus-arsenal/commands/revisar-pr.md +37 -0
- package/vendor/theus-arsenal/commands/revisar-python.md +297 -0
- package/vendor/theus-arsenal/commands/revisar-react.md +170 -0
- package/vendor/theus-arsenal/commands/revisar-rust.md +142 -0
- package/vendor/theus-arsenal/commands/revisar-vue.md +174 -0
- package/vendor/theus-arsenal/commands/salud-skills.md +52 -0
- package/vendor/theus-arsenal/commands/sesiones.md +345 -0
- package/vendor/theus-arsenal/commands/test-cpp.md +252 -0
- package/vendor/theus-arsenal/commands/test-flutter.md +143 -0
- package/vendor/theus-arsenal/commands/test-go.md +268 -0
- package/vendor/theus-arsenal/commands/test-kotlin.md +312 -0
- package/vendor/theus-arsenal/commands/test-react.md +265 -0
- package/vendor/theus-arsenal/commands/test-rust.md +309 -0
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +43 -0
- package/vendor/theus-arsenal/hooks/hooks.json +274 -0
- package/vendor/theus-arsenal/package.json +6 -0
- package/vendor/theus-arsenal/rules/angular/coding-style.md +182 -0
- package/vendor/theus-arsenal/rules/angular/hooks.md +25 -0
- package/vendor/theus-arsenal/rules/angular/patterns.md +249 -0
- package/vendor/theus-arsenal/rules/angular/security.md +87 -0
- package/vendor/theus-arsenal/rules/angular/testing.md +164 -0
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +153 -0
- package/vendor/theus-arsenal/rules/arkts/hooks.md +80 -0
- package/vendor/theus-arsenal/rules/arkts/patterns.md +236 -0
- package/vendor/theus-arsenal/rules/arkts/security.md +141 -0
- package/vendor/theus-arsenal/rules/arkts/testing.md +126 -0
- package/vendor/theus-arsenal/rules/common/agents.md +49 -0
- package/vendor/theus-arsenal/rules/common/code-review.md +123 -0
- package/vendor/theus-arsenal/rules/common/coding-style.md +90 -0
- package/vendor/theus-arsenal/rules/common/development-workflow.md +44 -0
- package/vendor/theus-arsenal/rules/common/git-workflow.md +24 -0
- package/vendor/theus-arsenal/rules/common/hooks.md +32 -0
- package/vendor/theus-arsenal/rules/common/patterns.md +31 -0
- package/vendor/theus-arsenal/rules/common/performance.md +53 -0
- package/vendor/theus-arsenal/rules/common/security.md +29 -0
- package/vendor/theus-arsenal/rules/common/testing.md +57 -0
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +44 -0
- package/vendor/theus-arsenal/rules/cpp/hooks.md +39 -0
- package/vendor/theus-arsenal/rules/cpp/patterns.md +51 -0
- package/vendor/theus-arsenal/rules/cpp/security.md +51 -0
- package/vendor/theus-arsenal/rules/cpp/testing.md +44 -0
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +72 -0
- package/vendor/theus-arsenal/rules/csharp/hooks.md +25 -0
- package/vendor/theus-arsenal/rules/csharp/patterns.md +50 -0
- package/vendor/theus-arsenal/rules/csharp/security.md +58 -0
- package/vendor/theus-arsenal/rules/csharp/testing.md +50 -0
- package/vendor/theus-arsenal/rules/dart/coding-style.md +159 -0
- package/vendor/theus-arsenal/rules/dart/hooks.md +68 -0
- package/vendor/theus-arsenal/rules/dart/patterns.md +261 -0
- package/vendor/theus-arsenal/rules/dart/security.md +135 -0
- package/vendor/theus-arsenal/rules/dart/testing.md +215 -0
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +112 -0
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +26 -0
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +111 -0
- package/vendor/theus-arsenal/rules/fsharp/security.md +76 -0
- package/vendor/theus-arsenal/rules/fsharp/testing.md +62 -0
- package/vendor/theus-arsenal/rules/golang/coding-style.md +32 -0
- package/vendor/theus-arsenal/rules/golang/hooks.md +17 -0
- package/vendor/theus-arsenal/rules/golang/patterns.md +45 -0
- package/vendor/theus-arsenal/rules/golang/security.md +34 -0
- package/vendor/theus-arsenal/rules/golang/testing.md +31 -0
- package/vendor/theus-arsenal/rules/java/coding-style.md +114 -0
- package/vendor/theus-arsenal/rules/java/hooks.md +18 -0
- package/vendor/theus-arsenal/rules/java/patterns.md +147 -0
- package/vendor/theus-arsenal/rules/java/security.md +101 -0
- package/vendor/theus-arsenal/rules/java/testing.md +133 -0
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +86 -0
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +17 -0
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +146 -0
- package/vendor/theus-arsenal/rules/kotlin/security.md +82 -0
- package/vendor/theus-arsenal/rules/kotlin/testing.md +128 -0
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +47 -0
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +39 -0
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +54 -0
- package/vendor/theus-arsenal/rules/nuxt/security.md +48 -0
- package/vendor/theus-arsenal/rules/nuxt/testing.md +49 -0
- package/vendor/theus-arsenal/rules/php/coding-style.md +40 -0
- package/vendor/theus-arsenal/rules/php/hooks.md +24 -0
- package/vendor/theus-arsenal/rules/php/patterns.md +33 -0
- package/vendor/theus-arsenal/rules/php/security.md +37 -0
- package/vendor/theus-arsenal/rules/php/testing.md +38 -0
- package/vendor/theus-arsenal/rules/python/coding-style.md +42 -0
- package/vendor/theus-arsenal/rules/python/fastapi.md +58 -0
- package/vendor/theus-arsenal/rules/python/hooks.md +19 -0
- package/vendor/theus-arsenal/rules/python/patterns.md +39 -0
- package/vendor/theus-arsenal/rules/python/security.md +30 -0
- package/vendor/theus-arsenal/rules/python/testing.md +38 -0
- package/vendor/theus-arsenal/rules/react/coding-style.md +109 -0
- package/vendor/theus-arsenal/rules/react/hooks.md +187 -0
- package/vendor/theus-arsenal/rules/react/patterns.md +194 -0
- package/vendor/theus-arsenal/rules/react/security.md +180 -0
- package/vendor/theus-arsenal/rules/react/testing.md +208 -0
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +55 -0
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +71 -0
- package/vendor/theus-arsenal/rules/react-native/hooks.md +28 -0
- package/vendor/theus-arsenal/rules/react-native/patterns.md +88 -0
- package/vendor/theus-arsenal/rules/react-native/performance.md +45 -0
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +51 -0
- package/vendor/theus-arsenal/rules/react-native/security.md +43 -0
- package/vendor/theus-arsenal/rules/react-native/testing.md +52 -0
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +46 -0
- package/vendor/theus-arsenal/rules/ruby/hooks.md +37 -0
- package/vendor/theus-arsenal/rules/ruby/patterns.md +44 -0
- package/vendor/theus-arsenal/rules/ruby/security.md +51 -0
- package/vendor/theus-arsenal/rules/ruby/testing.md +51 -0
- package/vendor/theus-arsenal/rules/rust/coding-style.md +151 -0
- package/vendor/theus-arsenal/rules/rust/hooks.md +16 -0
- package/vendor/theus-arsenal/rules/rust/patterns.md +168 -0
- package/vendor/theus-arsenal/rules/rust/security.md +141 -0
- package/vendor/theus-arsenal/rules/rust/testing.md +154 -0
- package/vendor/theus-arsenal/rules/swift/coding-style.md +47 -0
- package/vendor/theus-arsenal/rules/swift/hooks.md +20 -0
- package/vendor/theus-arsenal/rules/swift/patterns.md +66 -0
- package/vendor/theus-arsenal/rules/swift/security.md +33 -0
- package/vendor/theus-arsenal/rules/swift/testing.md +45 -0
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +199 -0
- package/vendor/theus-arsenal/rules/typescript/hooks.md +22 -0
- package/vendor/theus-arsenal/rules/typescript/patterns.md +52 -0
- package/vendor/theus-arsenal/rules/typescript/security.md +28 -0
- package/vendor/theus-arsenal/rules/typescript/testing.md +18 -0
- package/vendor/theus-arsenal/rules/vue/coding-style.md +54 -0
- package/vendor/theus-arsenal/rules/vue/hooks.md +45 -0
- package/vendor/theus-arsenal/rules/vue/patterns.md +56 -0
- package/vendor/theus-arsenal/rules/vue/security.md +46 -0
- package/vendor/theus-arsenal/rules/vue/testing.md +53 -0
- package/vendor/theus-arsenal/rules/web/coding-style.md +108 -0
- package/vendor/theus-arsenal/rules/web/design-quality.md +75 -0
- package/vendor/theus-arsenal/rules/web/hooks.md +141 -0
- package/vendor/theus-arsenal/rules/web/patterns.md +91 -0
- package/vendor/theus-arsenal/rules/web/performance.md +76 -0
- package/vendor/theus-arsenal/rules/web/security.md +69 -0
- package/vendor/theus-arsenal/rules/web/testing.md +67 -0
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +192 -0
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +556 -0
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +92 -0
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +16 -0
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +171 -0
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +132 -0
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +110 -0
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +158 -0
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +208 -0
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +280 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +87 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +24 -0
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +60 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +94 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +54 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +110 -0
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +98 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +447 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +232 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +27 -0
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +101 -0
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +49 -0
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +168 -0
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +271 -0
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +749 -0
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +161 -0
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +340 -0
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +906 -0
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +263 -0
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +286 -0
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +289 -0
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +1278 -0
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +96 -0
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +66 -0
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +79 -0
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +185 -0
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +54 -0
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +237 -0
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +120 -0
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +434 -0
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +86 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +285 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +238 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +534 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +274 -0
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +546 -0
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +451 -0
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +193 -0
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +101 -0
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +138 -0
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +483 -0
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +155 -0
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +137 -0
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +555 -0
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +86 -0
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +501 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +414 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +285 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +22 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +200 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +157 -0
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +246 -0
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +232 -0
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +205 -0
- package/vendor/theus-arsenal/scripts/lib/utils.js +658 -0
- package/vendor/theus-arsenal/scripts/plan-canvas.js +341 -0
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +46 -0
- package/vendor/theus-arsenal/scripts/skills-health.js +143 -0
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +444 -0
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +144 -0
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +72 -0
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +771 -0
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +137 -0
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +233 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +335 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +374 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +188 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +153 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +253 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +8 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +594 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +325 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +1918 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +23 -0
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +1420 -0
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +275 -0
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +340 -0
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +112 -0
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +53 -0
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +257 -0
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +180 -0
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +243 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +180 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +89 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +87 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +71 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +90 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +409 -0
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +86 -0
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +176 -0
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +174 -0
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +173 -0
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +92 -0
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +120 -0
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +125 -0
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +184 -0
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +111 -0
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +160 -0
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +118 -0
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +138 -0
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +104 -0
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +115 -0
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +69 -0
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +206 -0
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +224 -0
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +201 -0
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +78 -0
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +119 -0
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +169 -0
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +92 -0
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +95 -0
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +284 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +46 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +86 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +29 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +173 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +100 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +78 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +172 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +104 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +75 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +146 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +126 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +229 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +152 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +68 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +58 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +138 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +130 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +67 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +67 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +34 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +143 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +106 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +11 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +20 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +179 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +19 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +122 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +52 -0
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +171 -0
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +270 -0
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +78 -0
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +128 -0
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +206 -0
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +469 -0
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +369 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +42 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +47 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +53 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +61 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +62 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +54 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +50 -0
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +133 -0
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +230 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +263 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +58 -0
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +129 -0
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +220 -0
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +89 -0
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +522 -0
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +282 -0
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +879 -0
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +289 -0
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +91 -0
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +493 -0
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +548 -0
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +727 -0
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +389 -0
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +149 -0
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +95 -0
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +165 -0
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +129 -0
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +714 -0
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +343 -0
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +584 -0
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +298 -0
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +224 -0
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +5 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +123 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +53 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +53 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +48 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +39 -0
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +166 -0
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +296 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +156 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +258 -0
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +235 -0
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +208 -0
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +204 -0
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +64 -0
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +252 -0
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +212 -0
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +296 -0
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +254 -0
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +120 -0
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +264 -0
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +144 -0
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +307 -0
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +299 -0
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +96 -0
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +164 -0
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +820 -0
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +307 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +312 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +87 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +76 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +60 -0
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +102 -0
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +53 -0
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +150 -0
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +194 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +87 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +57 -0
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +170 -0
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +87 -0
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +59 -0
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +161 -0
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +100 -0
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +82 -0
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +111 -0
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +116 -0
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +241 -0
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +375 -0
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +101 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +170 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +44 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +24 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +152 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +40 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +214 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +36 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +210 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +402 -0
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +238 -0
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +131 -0
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +430 -0
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +244 -0
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +86 -0
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +592 -0
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +136 -0
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +249 -0
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +244 -0
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +51 -0
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +159 -0
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +123 -0
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +142 -0
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +110 -0
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +143 -0
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +100 -0
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +124 -0
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +103 -0
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +110 -0
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +70 -0
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +182 -0
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +191 -0
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +75 -0
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +374 -0
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +37 -0
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +36 -0
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +38 -0
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +36 -0
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +134 -0
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +49 -0
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +117 -0
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +237 -0
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +153 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +160 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +410 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +86 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +59 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +91 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +117 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +97 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +67 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +72 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +120 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +83 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +43 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +80 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +63 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +101 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +59 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +61 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +67 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +86 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +122 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +44 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +77 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +52 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +45 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +87 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +68 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +795 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +94 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +69 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +114 -0
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +65 -0
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +432 -0
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +560 -0
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +249 -0
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +148 -0
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +443 -0
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +298 -0
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +566 -0
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +426 -0
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +739 -0
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +456 -0
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +363 -0
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +321 -0
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +168 -0
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +513 -0
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +655 -0
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +674 -0
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +156 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +717 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +724 -0
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +694 -0
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +754 -0
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +414 -0
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +66 -0
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +420 -0
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +229 -0
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +56 -0
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +99 -0
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +508 -0
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +141 -0
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +399 -0
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +750 -0
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +400 -0
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +729 -0
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +339 -0
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +325 -0
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +401 -0
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +504 -0
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +314 -0
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +261 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +281 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +90 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +60 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +99 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +64 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +97 -0
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +72 -0
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +449 -0
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +469 -0
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +148 -0
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +254 -0
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +236 -0
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +60 -0
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +102 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +189 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +330 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +122 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +419 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +418 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +96 -0
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +153 -0
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +263 -0
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +168 -0
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +220 -0
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +117 -0
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +121 -0
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +164 -0
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +242 -0
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +126 -0
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +103 -0
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +153 -0
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +236 -0
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +81 -0
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +221 -0
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +388 -0
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +567 -0
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +442 -0
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +191 -0
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +302 -0
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +56 -0
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +505 -0
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +361 -0
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +83 -0
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +163 -0
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +143 -0
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +122 -0
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +145 -0
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +166 -0
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +648 -0
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +945 -0
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +507 -0
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +474 -0
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +279 -0
- package/vendor/theus-arsenal/skills/seo/SKILL.md +166 -0
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +81 -0
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +375 -0
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +65 -0
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +735 -0
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +673 -0
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +817 -0
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +165 -0
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +328 -0
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +321 -0
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +325 -0
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +719 -0
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +829 -0
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +479 -0
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +196 -0
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +815 -0
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +421 -0
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +506 -0
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +252 -0
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +121 -0
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +141 -0
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +211 -0
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +470 -0
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +142 -0
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +184 -0
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +485 -0
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +237 -0
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +374 -0
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +550 -0
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +407 -0
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +101 -0
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +443 -0
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +331 -0
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +564 -0
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +65 -0
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +230 -0
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +406 -0
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +118 -0
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +279 -0
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +91 -0
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +52 -0
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +108 -0
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +106 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: patrones-tinystruct
|
|
3
|
+
description: Guía experta para desarrollar con el framework Java tinystruct. Úsala al trabajar
|
|
4
|
+
en el código de tinystruct o en cualquier proyecto construido sobre él — creación de clases
|
|
5
|
+
Application, rutas mapeadas con @Action, tests unitarios, ActionRegistry, manejo dual
|
|
6
|
+
HTTP/CLI, el servidor HTTP integrado, el sistema de eventos, JSON con Builder/Builders,
|
|
7
|
+
persistencia en base de datos con AbstractData, generación de POJOs, Server-Sent Events
|
|
8
|
+
(SSE), subida de archivos y peticiones HTTP salientes.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Patrones de desarrollo con tinystruct
|
|
12
|
+
|
|
13
|
+
Patrones de arquitectura e implementación para construir módulos con el framework Java **tinystruct**: un framework ligero y de alto rendimiento que trata la CLI y HTTP como ciudadanos de primera clase, sin requerir método `main()` y con configuración mínima.
|
|
14
|
+
|
|
15
|
+
## Principio central
|
|
16
|
+
|
|
17
|
+
**CLI y HTTP son ciudadanos iguales.** Todo método anotado con `@Action` debería, idealmente, poder ejecutarse tanto desde una terminal como desde un navegador web sin modificaciones. Esta capacidad de "modo dual" es la filosofía de diseño central de tinystruct.
|
|
18
|
+
|
|
19
|
+
## Cuándo activarla
|
|
20
|
+
|
|
21
|
+
### Cuándo usarla
|
|
22
|
+
|
|
23
|
+
- Al crear nuevos módulos `Application` extendiendo `AbstractApplication`.
|
|
24
|
+
- Al definir rutas y acciones de línea de comandos con `@Action`.
|
|
25
|
+
- Al manejar estado por petición mediante `Context`.
|
|
26
|
+
- Al serializar JSON con los componentes nativos `Builder` y `Builders`.
|
|
27
|
+
- Al trabajar con persistencia en base de datos mediante POJOs `AbstractData`.
|
|
28
|
+
- Al generar POJOs desde tablas de base de datos con el comando `generate`.
|
|
29
|
+
- Al implementar Server-Sent Events (SSE) para push en tiempo real.
|
|
30
|
+
- Al manejar subidas de archivos mediante datos multipart.
|
|
31
|
+
- Al hacer peticiones HTTP salientes con `URLRequest` y `HTTPHandler`.
|
|
32
|
+
- Al configurar conexiones de base de datos o ajustes del sistema en `application.properties`.
|
|
33
|
+
- Al depurar conflictos de enrutamiento (Actions) o el parseo de argumentos de la CLI.
|
|
34
|
+
|
|
35
|
+
## Cómo funciona
|
|
36
|
+
|
|
37
|
+
El framework tinystruct trata cualquier método anotado con `@Action` como un endpoint enrutable tanto para entornos de terminal como web. Las aplicaciones se crean extendiendo `AbstractApplication`, que proporciona los hooks de ciclo de vida principales como `init()` y acceso al `Context` de la petición.
|
|
38
|
+
|
|
39
|
+
El enrutamiento lo gestiona el `ActionRegistry`, que mapea automáticamente los segmentos de ruta a los argumentos del método e inyecta dependencias. Para servicios que solo devuelven datos, deben usarse los componentes nativos `Builder` y `Builders` para la serialización JSON, manteniendo así una huella de cero dependencias. La capa de base de datos usa POJOs `AbstractData` emparejados con archivos XML de mapeo para operaciones CRUD sin librerías ORM externas.
|
|
40
|
+
|
|
41
|
+
## Ejemplos
|
|
42
|
+
|
|
43
|
+
### Aplicación básica (MyService)
|
|
44
|
+
```java
|
|
45
|
+
public class MyService extends AbstractApplication {
|
|
46
|
+
@Override
|
|
47
|
+
public void init() {
|
|
48
|
+
this.setTemplateRequired(false); // Desactiva la búsqueda de .view en apps de datos/API
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Override public String version() { return "1.0.0"; }
|
|
52
|
+
|
|
53
|
+
@Action("greet")
|
|
54
|
+
public String greet() {
|
|
55
|
+
return "¡Hola desde tinystruct!";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Parámetro de ruta: GET /?q=greet/James O bin/dispatcher greet/James
|
|
59
|
+
@Action("greet")
|
|
60
|
+
public String greet(String name) {
|
|
61
|
+
return "Hola, " + name + "!";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Desambiguación por modo HTTP (login)
|
|
67
|
+
```java
|
|
68
|
+
@Action(value = "login", mode = Mode.HTTP_POST)
|
|
69
|
+
public String doLogin(Request<?, ?> request) throws ApplicationException {
|
|
70
|
+
request.getSession().setAttribute("userId", "42");
|
|
71
|
+
return "Sesión iniciada";
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Manejo nativo de datos JSON (Builder + Builders)
|
|
76
|
+
```java
|
|
77
|
+
import org.tinystruct.data.component.Builder;
|
|
78
|
+
import org.tinystruct.data.component.Builders;
|
|
79
|
+
|
|
80
|
+
@Action("api/data")
|
|
81
|
+
public String getData() throws ApplicationException {
|
|
82
|
+
Builders dataList = new Builders();
|
|
83
|
+
Builder item = new Builder();
|
|
84
|
+
item.put("id", 1);
|
|
85
|
+
item.put("name", "James");
|
|
86
|
+
dataList.add(item);
|
|
87
|
+
|
|
88
|
+
Builder response = new Builder();
|
|
89
|
+
response.put("status", "success");
|
|
90
|
+
response.put("data", dataList);
|
|
91
|
+
return response.toString(); // {"status":"success","data":[{"id":1,"name":"James"}]}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### SSE (Server-Sent Events)
|
|
96
|
+
```java
|
|
97
|
+
import org.tinystruct.http.SSEPushManager;
|
|
98
|
+
|
|
99
|
+
@Action("sse/connect")
|
|
100
|
+
public String connect() {
|
|
101
|
+
return "{\"type\":\"connect\",\"message\":\"Conectado a SSE\"}";
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Enviar push a un cliente específico
|
|
105
|
+
String sessionId = getContext().getId();
|
|
106
|
+
Builder msg = new Builder();
|
|
107
|
+
msg.put("text", "¡Hola, usuario!");
|
|
108
|
+
SSEPushManager.getInstance().push(sessionId, msg);
|
|
109
|
+
|
|
110
|
+
// Difundir a todos
|
|
111
|
+
SSEPushManager.getInstance().broadcast(msg);
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Subida de archivos
|
|
115
|
+
```java
|
|
116
|
+
import org.tinystruct.data.FileEntity;
|
|
117
|
+
|
|
118
|
+
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
119
|
+
public String upload(Request<?, ?> request) throws ApplicationException {
|
|
120
|
+
List<FileEntity> files = request.getAttachments();
|
|
121
|
+
if (files != null) {
|
|
122
|
+
for (FileEntity file : files) {
|
|
123
|
+
System.out.println("Subido: " + file.getFilename());
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return "Subida OK";
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Integración de servidor MCP y herramientas
|
|
131
|
+
|
|
132
|
+
tinystruct incorpora soporte nativo para el Model Context Protocol (MCP) a partir de la versión **`1.7.26`** del SDK.
|
|
133
|
+
Las APIs de MCP (p. ej., `org.tinystruct.mcp.MCPTool`, `org.tinystruct.mcp.MCPServer`, `org.tinystruct.mcp.MCPException`) están incluidas directamente en la dependencia principal:
|
|
134
|
+
```xml
|
|
135
|
+
<dependency>
|
|
136
|
+
<groupId>org.tinystruct</groupId>
|
|
137
|
+
<artifactId>tinystruct</artifactId>
|
|
138
|
+
<version>1.7.26</version>
|
|
139
|
+
</dependency>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> **ADVERTENCIA DE SEGURIDAD (inyección de prompts):**
|
|
143
|
+
> Los valores devueltos por las herramientas se inyectan directamente en la ventana de contexto del modelo. **DEBES** validar y sanear todos los argumentos suministrados por el invocador antes de incluirlos en la cadena de retorno de la herramienta. No sanear las entradas puede permitir que un atacante inyecte instrucciones adversarias (inyección de prompts) que alteren el comportamiento del modelo. Valida siempre longitud, conjuntos de caracteres y nulidad.
|
|
144
|
+
|
|
145
|
+
**Para crear una herramienta MCP:**
|
|
146
|
+
1. Extiende `org.tinystruct.mcp.MCPTool`.
|
|
147
|
+
2. Anota las operaciones con `@Action` y declara los parámetros con `@Argument` dentro del array `arguments`.
|
|
148
|
+
3. Acepta los parámetros como argumentos explícitos del método que coincidan con las claves de `@Argument`. (**No** uses `getContext().getAttribute(...)` para los argumentos de herramientas).
|
|
149
|
+
|
|
150
|
+
```java
|
|
151
|
+
import org.tinystruct.mcp.MCPTool;
|
|
152
|
+
import org.tinystruct.mcp.MCPException;
|
|
153
|
+
import org.tinystruct.system.annotation.Action;
|
|
154
|
+
import org.tinystruct.system.annotation.Argument;
|
|
155
|
+
|
|
156
|
+
public class MyCustomTool extends MCPTool {
|
|
157
|
+
public MyCustomTool() {
|
|
158
|
+
super("custom", "Una herramienta personalizada de demostración de MCP");
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@Action(
|
|
162
|
+
value = "custom/hello",
|
|
163
|
+
description = "Saluda a alguien",
|
|
164
|
+
arguments = {
|
|
165
|
+
@Argument(key = "name", description = "El nombre a saludar", type = "string", optional = false)
|
|
166
|
+
}
|
|
167
|
+
)
|
|
168
|
+
public String hello(String name) throws MCPException {
|
|
169
|
+
// SEGURIDAD: valida/sanea las entradas antes de devolverlas al modelo
|
|
170
|
+
// para prevenir vulnerabilidades de inyección de prompts.
|
|
171
|
+
if (name == null || name.length() > 50 || !name.matches("^[a-zA-Z0-9 ]+$")) {
|
|
172
|
+
throw new MCPException("Nombre proporcionado no válido");
|
|
173
|
+
}
|
|
174
|
+
return "Hola, " + name + "!";
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Para desplegar un servidor MCP:**
|
|
180
|
+
1. Extiende `org.tinystruct.mcp.MCPServer`.
|
|
181
|
+
2. Sobrescribe `init()` y registra tus herramientas con `this.registerTool()`. El framework escanea y mapea automáticamente los métodos `@Action`.
|
|
182
|
+
|
|
183
|
+
```java
|
|
184
|
+
import org.tinystruct.mcp.MCPServer;
|
|
185
|
+
|
|
186
|
+
public class MyMCPServer extends MCPServer {
|
|
187
|
+
@Override
|
|
188
|
+
public void init() {
|
|
189
|
+
super.init();
|
|
190
|
+
this.registerTool(new MyCustomTool());
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@Override
|
|
194
|
+
public String version() {
|
|
195
|
+
return "1.0.0";
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Ejecuta el servidor mediante el dispatcher:
|
|
201
|
+
```bash
|
|
202
|
+
bin/dispatcher start --import org.tinystruct.system.HttpServer --import com.example.MyMCPServer
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Configuración
|
|
206
|
+
|
|
207
|
+
Los ajustes se gestionan en `src/main/resources/application.properties`.
|
|
208
|
+
|
|
209
|
+
```properties
|
|
210
|
+
# Base de datos
|
|
211
|
+
driver=org.h2.Driver
|
|
212
|
+
database.url=jdbc:h2:~/mydb
|
|
213
|
+
database.user=sa
|
|
214
|
+
database.password=
|
|
215
|
+
|
|
216
|
+
# Servidor
|
|
217
|
+
default.home.page=hello
|
|
218
|
+
server.port=8080
|
|
219
|
+
|
|
220
|
+
# Idioma
|
|
221
|
+
default.language=es_PE
|
|
222
|
+
|
|
223
|
+
# Sesión (Redis para entornos en clúster)
|
|
224
|
+
# default.session.repository=org.tinystruct.http.RedisSessionRepository
|
|
225
|
+
# redis.host=127.0.0.1
|
|
226
|
+
# redis.port=6379
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Acceso a valores de configuración desde la aplicación:
|
|
230
|
+
```java
|
|
231
|
+
String port = this.getConfiguration("server.port");
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Señales de alerta y antipatrones
|
|
235
|
+
|
|
236
|
+
| Síntoma | Patrón correcto |
|
|
237
|
+
|---|---|
|
|
238
|
+
| Importar `com.google.gson` o `com.fasterxml.jackson` | Usa `org.tinystruct.data.component.Builder` / `Builders`. |
|
|
239
|
+
| Usar `List<Builder>` para arrays JSON | Usa `Builders` para evitar problemas de type erasure de genéricos. |
|
|
240
|
+
| `ApplicationRuntimeException: template not found` | Llama a `setTemplateRequired(false)` en `init()` para apps solo-API. |
|
|
241
|
+
| Anotar métodos `private` con `@Action` | Las acciones deben ser `public` para que el framework las registre. |
|
|
242
|
+
| Escribir `main(String[] args)` en las apps | Usa `bin/dispatcher` como punto de entrada de todos los módulos. |
|
|
243
|
+
| Registro manual en `ActionRegistry` | Prefiere la anotación `@Action` para el descubrimiento automático. |
|
|
244
|
+
| Acción no encontrada en tiempo de ejecución | Asegura que la clase se importa vía `--import` o está listada en `application.properties`. |
|
|
245
|
+
| Argumento de CLI no visible | Pásalo con `--clave valor`; accede con `getContext().getAttribute("--clave")`. |
|
|
246
|
+
| Dos métodos con la misma ruta, se dispara el equivocado | Define `mode` explícito (p. ej., `HTTP_GET` vs `HTTP_POST`) para desambiguar. |
|
|
247
|
+
|
|
248
|
+
## Buenas prácticas
|
|
249
|
+
|
|
250
|
+
1. **Aplicaciones granulares**: divide la lógica en aplicaciones pequeñas y enfocadas en lugar de una sola clase monolítica.
|
|
251
|
+
2. **Configuración en `init()`**: usa `init()` para la puesta a punto (config, BD) en lugar del constructor. NO llames a `setAction()` — usa la anotación `@Action`.
|
|
252
|
+
3. **Conciencia de modo**: usa el parámetro `Mode` en `@Action` para restringir operaciones sensibles a `CLI` o a métodos HTTP concretos.
|
|
253
|
+
4. **Context antes que parámetros**: para flags opcionales de la CLI, usa `getContext().getAttribute("--flag")` en lugar de añadir parámetros a la firma del método.
|
|
254
|
+
5. **Eventos asíncronos**: para tareas pesadas disparadas por eventos, usa `CompletableFuture.runAsync()` dentro del manejador del evento.
|
|
255
|
+
|
|
256
|
+
## Referencia técnica
|
|
257
|
+
|
|
258
|
+
Las guías detalladas están disponibles en el directorio `references/`:
|
|
259
|
+
|
|
260
|
+
- [Arquitectura y configuración](references/architecture.md) — abstracciones, mapa de paquetes, properties
|
|
261
|
+
- [Enrutamiento y @Action](references/routing.md) — detalles de la anotación, modos, parámetros
|
|
262
|
+
- [Manejo de datos](references/data-handling.md) — Builder, Builders, serialización y parseo de JSON
|
|
263
|
+
- [Persistencia en base de datos](references/database.md) — POJOs AbstractData, CRUD, XML de mapeo, generación de POJOs
|
|
264
|
+
- [Sistema y uso](references/system-usage.md) — Context, sesiones, SSE, subida de archivos, eventos, redes
|
|
265
|
+
- [Patrones de testing](references/testing.md) — tests unitarios y de integración HTTP con JUnit 5
|
|
266
|
+
|
|
267
|
+
## Archivos fuente de referencia (internos)
|
|
268
|
+
|
|
269
|
+
- `src/main/java/org/tinystruct/AbstractApplication.java` — clase base con hooks de ciclo de vida
|
|
270
|
+
- `src/main/java/org/tinystruct/system/annotation/Action.java` — anotación y modos
|
|
271
|
+
- `src/main/java/org/tinystruct/application/ActionRegistry.java` — motor de enrutamiento
|
|
272
|
+
- `src/main/java/org/tinystruct/data/component/Builder.java` — serializador de objetos JSON
|
|
273
|
+
- `src/main/java/org/tinystruct/data/component/Builders.java` — serializador de arrays JSON
|
|
274
|
+
- `src/main/java/org/tinystruct/data/component/AbstractData.java` — clase base de POJOs con CRUD
|
|
275
|
+
- `src/main/java/org/tinystruct/data/Mapping.java` — parser del XML de mapeo
|
|
276
|
+
- `src/main/java/org/tinystruct/data/tools/MySQLGenerator.java` — referencia del generador de POJOs
|
|
277
|
+
- `src/main/java/org/tinystruct/data/component/FieldType.java` — mapeos de tipos SQL a Java
|
|
278
|
+
- `src/main/java/org/tinystruct/data/component/Condition.java` — constructor fluido de consultas SQL
|
|
279
|
+
- `src/main/java/org/tinystruct/http/SSEPushManager.java` — gestión de conexiones SSE
|
|
280
|
+
- `src/test/java/org/tinystruct/application/ActionRegistryTest.java` — ejemplos de tests del registro
|
|
281
|
+
- `src/test/java/org/tinystruct/system/HttpServerHttpModeTest.java` — patrones de test de integración HTTP
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Arquitectura y configuración de tinystruct
|
|
2
|
+
|
|
3
|
+
## Cuándo usarla
|
|
4
|
+
|
|
5
|
+
Elige **tinystruct** cuando necesites un framework Java ligero y de alto rendimiento que trate la CLI y HTTP como ciudadanos iguales. Ideal para microservicios, utilidades de línea de comandos y aplicaciones orientadas a datos con huella pequeña y manejo de JSON sin dependencias.
|
|
6
|
+
|
|
7
|
+
## Cómo funciona
|
|
8
|
+
|
|
9
|
+
### Arquitectura central
|
|
10
|
+
|
|
11
|
+
El framework opera sobre un `ActionRegistry` singleton que mapea patrones de URL (o cadenas de comando) a objetos `Action`. Cuando llega una petición, el sistema resuelve la ruta e invoca el method handle correspondiente.
|
|
12
|
+
|
|
13
|
+
#### Abstracciones clave
|
|
14
|
+
|
|
15
|
+
| Clase/Interfaz | Rol |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `AbstractApplication` | Clase base de todas las aplicaciones tinystruct. Extiéndela. |
|
|
18
|
+
| Anotación `@Action` | Mapea un método a una ruta URI (web) o a un nombre de comando (CLI). Es la única primitiva de enrutamiento. |
|
|
19
|
+
| `ActionRegistry` | Singleton que mapea patrones de URL a objetos `Action` vía regex. Nunca lo instancies directamente. |
|
|
20
|
+
| `Action` | Envuelve un `MethodHandle` + patrón regex + prioridad + `Mode` para el despacho. |
|
|
21
|
+
| `Context` | Almacén de estado por petición. Accede con `getContext()`. Contiene los argumentos de la CLI y el request/response HTTP. |
|
|
22
|
+
| `Dispatcher` | Punto de entrada de la CLI (`bin/dispatcher`). Lee `--import` para cargar aplicaciones. |
|
|
23
|
+
| `HttpServer` | Servidor HTTP integrado. Arranca con `bin/dispatcher start --import org.tinystruct.system.HttpServer`. |
|
|
24
|
+
|
|
25
|
+
### Mapa de paquetes
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
org.tinystruct/
|
|
29
|
+
├── AbstractApplication.java ← extiende esta clase
|
|
30
|
+
├── Application.java ← interfaz
|
|
31
|
+
├── ApplicationException.java ← excepción comprobada (checked)
|
|
32
|
+
├── ApplicationRuntimeException.java ← excepción no comprobada (unchecked)
|
|
33
|
+
├── application/
|
|
34
|
+
│ ├── Action.java ← envoltorio de acción en tiempo de ejecución
|
|
35
|
+
│ ├── ActionRegistry.java ← registro de rutas singleton
|
|
36
|
+
│ └── Context.java ← contexto de la petición
|
|
37
|
+
├── system/
|
|
38
|
+
│ ├── annotation/Action.java ← anotación @Action + enum Mode
|
|
39
|
+
│ ├── Dispatcher.java ← dispatcher de la CLI
|
|
40
|
+
│ ├── HttpServer.java ← servidor HTTP integrado
|
|
41
|
+
│ ├── EventDispatcher.java ← bus de eventos
|
|
42
|
+
│ └── Settings.java ← lee application.properties
|
|
43
|
+
├── data/
|
|
44
|
+
│ ├── component/Builder.java ← objeto JSON (úsalo en lugar de Gson/Jackson)
|
|
45
|
+
│ ├── component/Builders.java ← array JSON
|
|
46
|
+
│ ├── component/AbstractData.java ← POJO base para persistencia en BD
|
|
47
|
+
│ ├── component/Condition.java ← constructor fluido de consultas SQL
|
|
48
|
+
│ ├── component/FieldType.java ← mapeos de tipos SQL a Java
|
|
49
|
+
│ ├── Mapping.java ← lee los metadatos .map.xml
|
|
50
|
+
│ ├── DatabaseOperator.java ← envoltorio JDBC de bajo nivel
|
|
51
|
+
│ └── FileEntity.java ← representación de archivo subido
|
|
52
|
+
├── http/ ← Request, Response, Constants
|
|
53
|
+
│ └── SSEPushManager.java ← gestión de Server-Sent Events
|
|
54
|
+
└── net/ ← URLRequest, HTTPHandler (HTTP saliente)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Comportamiento de plantillas y flujo de despacho
|
|
58
|
+
|
|
59
|
+
Por defecto, el framework asume que se requiere una plantilla de vista. Si `templateRequired` es `true`, `toString()` busca un archivo `.view` en `src/main/resources/themes/<NombreDeClase>.view`. Usa `setVariable("nombre", valor)` para pasar datos a las plantillas, que usan `{%nombre%}` para la interpolación.
|
|
60
|
+
|
|
61
|
+
## Ejemplos
|
|
62
|
+
|
|
63
|
+
### Inicialización mínima de una aplicación
|
|
64
|
+
```java
|
|
65
|
+
@Override
|
|
66
|
+
public void init() {
|
|
67
|
+
this.setTemplateRequired(false); // Omite la búsqueda de plantilla .view en apps solo de datos
|
|
68
|
+
// NO llames a setAction() aquí — usa la anotación @Action en su lugar
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Definición de acción e invocación por CLI
|
|
73
|
+
```java
|
|
74
|
+
@Action("hello")
|
|
75
|
+
public String hello() {
|
|
76
|
+
return "¡Hola, tinystruct!";
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
**Ejecución mediante el Dispatcher:**
|
|
80
|
+
```bash
|
|
81
|
+
bin/dispatcher hello
|
|
82
|
+
bin/dispatcher greet/James
|
|
83
|
+
bin/dispatcher echo --words "Hola" --import com.example.HelloApp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Acceso a la configuración
|
|
87
|
+
Ubicada en `src/main/resources/application.properties`:
|
|
88
|
+
```java
|
|
89
|
+
String port = this.getConfiguration("server.port");
|
|
90
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Manejo de datos en tinystruct (JSON)
|
|
2
|
+
|
|
3
|
+
## Cuándo usarla
|
|
4
|
+
|
|
5
|
+
Prefiere `org.tinystruct.data.component.Builder` y `Builders` para JSON ligero y sin dependencias. Usa `Builder` para objetos JSON (`{}`) y `Builders` para arrays JSON (`[]`). **Usa siempre `Builders` en lugar de `List<Builder>`** para evitar problemas de type erasure de genéricos.
|
|
6
|
+
|
|
7
|
+
## Cómo funciona
|
|
8
|
+
|
|
9
|
+
`Builder` proporciona una interfaz clave-valor para crear y leer objetos JSON. `Builders` proporciona una lista indexada para arrays JSON. Ambos se integran directamente con el manejo de resultados de `AbstractApplication`.
|
|
10
|
+
|
|
11
|
+
### ¿Por qué Builder/Builders?
|
|
12
|
+
- **Cero dependencias externas** — ligero y rápido
|
|
13
|
+
- **Integración nativa** — funciona con el manejo de resultados del framework
|
|
14
|
+
- **Seguridad de tipos** — `Builders` serializa correctamente a `[]`; `List<Builder>` puede causar problemas de casting
|
|
15
|
+
|
|
16
|
+
## Ejemplos
|
|
17
|
+
|
|
18
|
+
### Serializar un objeto único
|
|
19
|
+
```java
|
|
20
|
+
import org.tinystruct.data.component.Builder;
|
|
21
|
+
|
|
22
|
+
Builder response = new Builder();
|
|
23
|
+
response.put("status", "success");
|
|
24
|
+
response.put("count", 42);
|
|
25
|
+
return response.toString(); // {"status":"success","count":42}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Serializar una lista con Builders
|
|
29
|
+
```java
|
|
30
|
+
import org.tinystruct.data.component.Builder;
|
|
31
|
+
import org.tinystruct.data.component.Builders;
|
|
32
|
+
|
|
33
|
+
Builders dataList = new Builders();
|
|
34
|
+
for (MyModel item : myCollection) {
|
|
35
|
+
Builder b = new Builder();
|
|
36
|
+
b.put("id", item.getId());
|
|
37
|
+
b.put("name", item.getName());
|
|
38
|
+
dataList.add(b);
|
|
39
|
+
}
|
|
40
|
+
Builder response = new Builder();
|
|
41
|
+
response.put("data", dataList);
|
|
42
|
+
return response.toString(); // {"data":[{"id":1,"name":"X"}]}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Parsear un objeto JSON
|
|
46
|
+
```java
|
|
47
|
+
Builder parsed = new Builder();
|
|
48
|
+
parsed.parse(jsonString);
|
|
49
|
+
String status = parsed.get("status").toString();
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Parsear un array JSON
|
|
53
|
+
```java
|
|
54
|
+
Builders parsedArray = new Builders();
|
|
55
|
+
parsedArray.parse(jsonArrayString);
|
|
56
|
+
for (int i = 0; i < parsedArray.size(); i++) {
|
|
57
|
+
Builder item = parsedArray.get(i);
|
|
58
|
+
System.out.println(item.get("name"));
|
|
59
|
+
}
|
|
60
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Persistencia en base de datos con tinystruct
|
|
2
|
+
|
|
3
|
+
## Cuándo usarla
|
|
4
|
+
|
|
5
|
+
Usa la capa de datos integrada (estilo ORM) para las operaciones de base de datos. Ofrece una alternativa ligera a JPA/Hibernate mediante POJOs que extienden `AbstractData` y archivos XML de mapeo.
|
|
6
|
+
|
|
7
|
+
## Cómo funciona
|
|
8
|
+
|
|
9
|
+
### Arquitectura
|
|
10
|
+
|
|
11
|
+
Cada tabla se representa mediante:
|
|
12
|
+
1. **POJO Java**: extiende `AbstractData`, aporta getters/setters y `setData(Row)`.
|
|
13
|
+
2. **XML de mapeo**: `NombreDeClase.map.xml` en resources, que vincula campos Java con columnas de la BD.
|
|
14
|
+
|
|
15
|
+
#### Clase base clave: `AbstractData`
|
|
16
|
+
Proporciona los métodos CRUD:
|
|
17
|
+
- `append()` / `appendAndGetId()`
|
|
18
|
+
- `update()`
|
|
19
|
+
- `delete()`
|
|
20
|
+
- `findAll()` / `findOneById()` / `findOneByKey(key, value)`
|
|
21
|
+
- `findWith(where, params)`
|
|
22
|
+
- `find(SQL, params)`
|
|
23
|
+
|
|
24
|
+
### Generación de POJOs (CLI)
|
|
25
|
+
|
|
26
|
+
Introspecciona una tabla de una base de datos viva para producir el POJO y el archivo de mapeo.
|
|
27
|
+
|
|
28
|
+
#### Configuración
|
|
29
|
+
`application.properties`:
|
|
30
|
+
```properties
|
|
31
|
+
driver=com.mysql.cj.jdbc.Driver
|
|
32
|
+
database.url=jdbc:mysql://localhost:3306/mydb
|
|
33
|
+
database.user=root
|
|
34
|
+
database.password=secret
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### Comando
|
|
38
|
+
```bash
|
|
39
|
+
# Modo interactivo
|
|
40
|
+
bin/dispatcher generate
|
|
41
|
+
|
|
42
|
+
# Especificar tabla
|
|
43
|
+
bin/dispatcher generate --tables users
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Ejemplos
|
|
47
|
+
|
|
48
|
+
### Operaciones CRUD
|
|
49
|
+
```java
|
|
50
|
+
// CREAR
|
|
51
|
+
User user = new User();
|
|
52
|
+
user.setUsername("james");
|
|
53
|
+
user.append();
|
|
54
|
+
|
|
55
|
+
// LEER
|
|
56
|
+
User user = new User();
|
|
57
|
+
user.setId(42);
|
|
58
|
+
user.findOneById();
|
|
59
|
+
|
|
60
|
+
// ACTUALIZAR
|
|
61
|
+
user.setEmail("nuevo@example.com");
|
|
62
|
+
user.update();
|
|
63
|
+
|
|
64
|
+
// ELIMINAR
|
|
65
|
+
user.delete();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Consultas con condiciones
|
|
69
|
+
```java
|
|
70
|
+
User user = new User();
|
|
71
|
+
Table results = user.findWith("username LIKE ?", new Object[]{"%jam%"});
|
|
72
|
+
|
|
73
|
+
// Constructor fluido de condiciones
|
|
74
|
+
Condition condition = new Condition();
|
|
75
|
+
condition.setRequestFields("id,username");
|
|
76
|
+
Table filtered = user.find(
|
|
77
|
+
condition.select("`users`").and("email LIKE ?").orderBy("id DESC"),
|
|
78
|
+
new Object[]{"%@example.com"}
|
|
79
|
+
);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Estructura del XML de mapeo
|
|
83
|
+
`User.map.xml`:
|
|
84
|
+
```xml
|
|
85
|
+
<mapping>
|
|
86
|
+
<class name="User" table="users">
|
|
87
|
+
<id name="Id" column="id" increment="true" generate="false" length="11" type="int"/>
|
|
88
|
+
<property name="username" column="username" length="50" type="varchar"/>
|
|
89
|
+
<property name="email" column="email" length="100" type="varchar"/>
|
|
90
|
+
</class>
|
|
91
|
+
</mapping>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Reglas importantes
|
|
95
|
+
|
|
96
|
+
1. **Ubicación del archivo**: el XML de mapeo **debe** reflejar la ruta de paquete del POJO bajo `src/main/resources/`.
|
|
97
|
+
2. **Nomenclatura**: los nombres de tabla se singularizan para las clases (`users` → `User`). Las columnas con guiones bajos se convierten en campos camelCase (`created_at` → `createdAt`).
|
|
98
|
+
3. **Setters**: usa los métodos `setFieldAsXxx` (p. ej., `setFieldAsString`) en los setters para sincronizar el estado con el mapa interno de campos.
|
|
99
|
+
4. **Campo Id**: el campo de clave primaria en Java se llama siempre `Id` (heredado de `AbstractData`).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Referencia de enrutamiento con @Action en tinystruct
|
|
2
|
+
|
|
3
|
+
## Cuándo usarla
|
|
4
|
+
|
|
5
|
+
Usa la anotación `@Action` en tus aplicaciones para definir rutas tanto para comandos de CLI como para endpoints HTTP. Es apropiada siempre que necesites mapear lógica a una ruta concreta, manejar peticiones parametrizadas o restringir la ejecución a métodos HTTP específicos manteniendo una estructura de comandos consistente entre entornos.
|
|
6
|
+
|
|
7
|
+
## Cómo funciona
|
|
8
|
+
|
|
9
|
+
El `ActionRegistry` analiza las anotaciones `@Action` para construir la tabla de enrutamiento. Para métodos parametrizados, el framework mapea automáticamente los tipos de parámetro de Java a los segmentos regex correspondientes.
|
|
10
|
+
|
|
11
|
+
### Reglas de generación de regex
|
|
12
|
+
- `getUser(int id)` → patrón: `^/?user/(-?\d+)$`
|
|
13
|
+
- `search(String query)` → patrón: `^/?search/([^/]+)$`
|
|
14
|
+
|
|
15
|
+
Tipos de parámetro soportados: `String`, `int/Integer`, `long/Long`, `float/Float`, `double/Double`, `boolean/Boolean`, `char/Character`, `short/Short`, `byte/Byte`, `Date` (parseado como `yyyy-MM-dd HH:mm:ss`).
|
|
16
|
+
|
|
17
|
+
### Valores de Mode
|
|
18
|
+
|
|
19
|
+
| Mode | Cuándo se dispara |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `DEFAULT` | Tanto CLI como HTTP (GET, POST, etc.) |
|
|
22
|
+
| `CLI` | Solo el dispatcher de la CLI |
|
|
23
|
+
| `HTTP_GET` | Solo HTTP GET |
|
|
24
|
+
| `HTTP_POST` | Solo HTTP POST |
|
|
25
|
+
| `HTTP_PUT` | Solo HTTP PUT |
|
|
26
|
+
| `HTTP_DELETE` | Solo HTTP DELETE |
|
|
27
|
+
| `HTTP_PATCH` | Solo HTTP PATCH |
|
|
28
|
+
|
|
29
|
+
> **Nota:** puedes mapear nombres de métodos HTTP a `Mode` usando `Action.Mode.fromName(String methodName)`. Los valores desconocidos o nulos devuelven `Mode.DEFAULT`.
|
|
30
|
+
|
|
31
|
+
## Ejemplos
|
|
32
|
+
|
|
33
|
+
### Declaración básica de una acción
|
|
34
|
+
```java
|
|
35
|
+
@Action(
|
|
36
|
+
value = "path/subpath", // obligatorio: segmento URI o comando de CLI
|
|
37
|
+
description = "Qué hace", // se muestra en la salida de --help
|
|
38
|
+
mode = Mode.DEFAULT, // por defecto: Mode.DEFAULT
|
|
39
|
+
example = "bin/dispatcher path/subpath/42"
|
|
40
|
+
)
|
|
41
|
+
public String myAction(int id) { ... }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Rutas parametrizadas
|
|
45
|
+
```java
|
|
46
|
+
@Action("user/{id}")
|
|
47
|
+
public String getUser(int id) { ... }
|
|
48
|
+
// → CLI: bin/dispatcher user/42
|
|
49
|
+
// → HTTP: /?q=user/42
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Inyección de dependencias
|
|
53
|
+
`ActionRegistry` inyecta automáticamente `Request` y/o `Response` desde el `Context` si son parámetros:
|
|
54
|
+
|
|
55
|
+
```java
|
|
56
|
+
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
57
|
+
public String upload(Request<?, ?> req, Response<?, ?> res) throws ApplicationException {
|
|
58
|
+
// Accede al request/response crudos si lo necesitas
|
|
59
|
+
return "ok";
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Prioridad de coincidencia de rutas
|
|
64
|
+
Si dos métodos comparten la misma ruta, el framework usa la primera coincidencia en el `ActionRegistry`. Usa valores de `Mode` explícitos para desambiguar (p. ej., separar un GET para un formulario y un POST para su envío).
|