warden-core 1.8.2__tar.gz
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.
- warden_core-1.8.2/.claude.json +9 -0
- warden_core-1.8.2/.cursorrules +19 -0
- warden_core-1.8.2/.dockerignore +28 -0
- warden_core-1.8.2/.env.example +55 -0
- warden_core-1.8.2/.github/workflows/ci.yml +87 -0
- warden_core-1.8.2/.github/workflows/release.yml +68 -0
- warden_core-1.8.2/.gitignore +79 -0
- warden_core-1.8.2/.warden/.gitignore +8 -0
- warden_core-1.8.2/.warden/AI_RULES.md +37 -0
- warden_core-1.8.2/.warden/ai_status.md +10 -0
- warden_core-1.8.2/.warden/config.yaml +126 -0
- warden_core-1.8.2/.warden/frames/README.md +208 -0
- warden_core-1.8.2/.warden/frames/architectural/__init__.py +7 -0
- warden_core-1.8.2/.warden/frames/architectural/frame.py +877 -0
- warden_core-1.8.2/.warden/frames/config/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/config/frame.py +190 -0
- warden_core-1.8.2/.warden/frames/demo-security/frame.py +168 -0
- warden_core-1.8.2/.warden/frames/demo-security/frame.yaml +51 -0
- warden_core-1.8.2/.warden/frames/env-security/README.md +201 -0
- warden_core-1.8.2/.warden/frames/env-security/frame.py +274 -0
- warden_core-1.8.2/.warden/frames/env-security/frame.yaml +83 -0
- warden_core-1.8.2/.warden/frames/fuzz/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/fuzz/frame.py +307 -0
- warden_core-1.8.2/.warden/frames/gitchanges/__init__.py +30 -0
- warden_core-1.8.2/.warden/frames/gitchanges/frame.py +390 -0
- warden_core-1.8.2/.warden/frames/gitchanges/git_diff_parser.py +294 -0
- warden_core-1.8.2/.warden/frames/orphan/__init__.py +45 -0
- warden_core-1.8.2/.warden/frames/orphan/frame.py +695 -0
- warden_core-1.8.2/.warden/frames/orphan/llm_orphan_filter.py +988 -0
- warden_core-1.8.2/.warden/frames/orphan/orphan_detector.py +597 -0
- warden_core-1.8.2/.warden/frames/project_architecture/__init__.py +7 -0
- warden_core-1.8.2/.warden/frames/project_architecture/frame.py +592 -0
- warden_core-1.8.2/.warden/frames/property/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/property/frame.py +414 -0
- warden_core-1.8.2/.warden/frames/resilience/__init__.py +15 -0
- warden_core-1.8.2/.warden/frames/resilience/_internal/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/resilience/_internal/circuit_breaker_check.py +108 -0
- warden_core-1.8.2/.warden/frames/resilience/_internal/error_handling_check.py +180 -0
- warden_core-1.8.2/.warden/frames/resilience/_internal/retry_check.py +146 -0
- warden_core-1.8.2/.warden/frames/resilience/_internal/timeout_check.py +142 -0
- warden_core-1.8.2/.warden/frames/resilience/frame.py +188 -0
- warden_core-1.8.2/.warden/frames/security/__init__.py +24 -0
- warden_core-1.8.2/.warden/frames/security/_internal/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/security/_internal/hardcoded_password_check.py +238 -0
- warden_core-1.8.2/.warden/frames/security/_internal/secrets_check.py +154 -0
- warden_core-1.8.2/.warden/frames/security/_internal/sql_injection_check.py +136 -0
- warden_core-1.8.2/.warden/frames/security/_internal/xss_check.py +88 -0
- warden_core-1.8.2/.warden/frames/security/frame.py +364 -0
- warden_core-1.8.2/.warden/frames/stress/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/stress/frame.py +305 -0
- warden_core-1.8.2/.warden/frames/universal/__init__.py +5 -0
- warden_core-1.8.2/.warden/frames/universal/secret_scanner.py +185 -0
- warden_core-1.8.2/.warden/ignore.yaml +108 -0
- warden_core-1.8.2/.warden/rules/consistency.yaml +167 -0
- warden_core-1.8.2/.warden/rules/conventions.yaml +45 -0
- warden_core-1.8.2/.warden/rules/my_custom_rules.yaml +12 -0
- warden_core-1.8.2/.warden/rules/performance.yaml +29 -0
- warden_core-1.8.2/.warden/rules/root.yaml +55 -0
- warden_core-1.8.2/.warden/rules/security.yaml +535 -0
- warden_core-1.8.2/.warden/rules.example.yaml +191 -0
- warden_core-1.8.2/.warden/scripts/README.md +97 -0
- warden_core-1.8.2/.warden/scripts/check_complexity.sh +27 -0
- warden_core-1.8.2/.warden/scripts/check_file_size.sh +27 -0
- warden_core-1.8.2/.warden/scripts/check_no_todos.sh +30 -0
- warden_core-1.8.2/.warden.example.yml +184 -0
- warden_core-1.8.2/.wardenignore +3 -0
- warden_core-1.8.2/CLAUDE.md +8 -0
- warden_core-1.8.2/Dockerfile +54 -0
- warden_core-1.8.2/Formula/warden.rb +32 -0
- warden_core-1.8.2/GEMINI.md +10 -0
- warden_core-1.8.2/LICENSE +13 -0
- warden_core-1.8.2/PKG-INFO +586 -0
- warden_core-1.8.2/README.md +526 -0
- warden_core-1.8.2/clients/csharp/README.md +169 -0
- warden_core-1.8.2/clients/csharp/Warden.Client.csproj +24 -0
- warden_core-1.8.2/clients/csharp/WardenClient.cs +259 -0
- warden_core-1.8.2/docs/COMMAND_SYSTEM.md +436 -0
- warden_core-1.8.2/docs/COMMAND_SYSTEM_QUICK_START.md +333 -0
- warden_core-1.8.2/docs/CUSTOM_FRAMES.md +1333 -0
- warden_core-1.8.2/docs/FRAME_INFRASTRUCTURE_UPDATE.md +569 -0
- warden_core-1.8.2/docs/USER_GUIDE_PRE_POST_RULES.md +1245 -0
- warden_core-1.8.2/docs/ci_cd_integration.md +113 -0
- warden_core-1.8.2/examples/.warden/reports/scan-20251223-221151.json +516 -0
- warden_core-1.8.2/examples/.warden/reports/scan-20251223-221151.md +51 -0
- warden_core-1.8.2/examples/custom-commands/README.md +154 -0
- warden_core-1.8.2/examples/custom-commands/code-review.toml +17 -0
- warden_core-1.8.2/examples/custom-commands/git/summary.toml +23 -0
- warden_core-1.8.2/examples/custom-commands/search/grep-code.toml +17 -0
- warden_core-1.8.2/examples/custom-frames/README.md +408 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/README.md +66 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/USAGE.md +460 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/checks/__init__.py +1 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/frame.py +375 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/frame.yaml +43 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/test_examples/insecure_redis.py +53 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/test_examples/secure_redis.py +59 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/test_manual.py +136 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/tests/__init__.py +1 -0
- warden_core-1.8.2/examples/custom-frames/redis-security/tests/test_frame.py +76 -0
- warden_core-1.8.2/examples/dogfooding/README.md +28 -0
- warden_core-1.8.2/examples/dogfooding/python/architectural_test.py +117 -0
- warden_core-1.8.2/examples/dogfooding/python/chaos_test.py +73 -0
- warden_core-1.8.2/examples/dogfooding/python/invalid_config.yaml +23 -0
- warden_core-1.8.2/examples/dogfooding/python/orphan_test.py +70 -0
- warden_core-1.8.2/examples/dogfooding/python/property_test.py +66 -0
- warden_core-1.8.2/examples/dogfooding/python/security_vulnerabilities.py +55 -0
- warden_core-1.8.2/examples/dogfooding/python/vulnerable_code.py +132 -0
- warden_core-1.8.2/extensions/warden-ast-java/.gitignore +64 -0
- warden_core-1.8.2/extensions/warden-ast-java/LICENSE +21 -0
- warden_core-1.8.2/extensions/warden-ast-java/MANIFEST.in +14 -0
- warden_core-1.8.2/extensions/warden-ast-java/README.md +256 -0
- warden_core-1.8.2/extensions/warden-ast-java/pyproject.toml +74 -0
- warden_core-1.8.2/extensions/warden-ast-java/src/warden_ast_java/__init__.py +10 -0
- warden_core-1.8.2/extensions/warden-ast-java/src/warden_ast_java/provider.py +320 -0
- warden_core-1.8.2/extensions/warden-ast-java/src/warden_ast_java/py.typed +2 -0
- warden_core-1.8.2/extensions/warden-ast-java/tests/__init__.py +1 -0
- warden_core-1.8.2/extensions/warden-ast-java/tests/test_java_provider.py +174 -0
- warden_core-1.8.2/extensions/warden-ast-java/verify.py +190 -0
- warden_core-1.8.2/poetry.lock +2029 -0
- warden_core-1.8.2/pyproject.toml +6 -0
- warden_core-1.8.2/scripts/generate_grpc.py +79 -0
- warden_core-1.8.2/scripts/scan_full_pipeline.py +383 -0
- warden_core-1.8.2/scripts/server_start.sh +66 -0
- warden_core-1.8.2/setup.cfg +4 -0
- warden_core-1.8.2/setup.py +80 -0
- warden_core-1.8.2/src/.warden/ai_status.md +10 -0
- warden_core-1.8.2/src/.warden/frames/orphan/__init__.py +45 -0
- warden_core-1.8.2/src/.warden/frames/orphan/frame.py +695 -0
- warden_core-1.8.2/src/.warden/frames/orphan/llm_orphan_filter.py +988 -0
- warden_core-1.8.2/src/.warden/frames/orphan/orphan_detector.py +597 -0
- warden_core-1.8.2/src/.warden/memory/knowledge_graph.json +20118 -0
- warden_core-1.8.2/src/warden/__init__.py +17 -0
- warden_core-1.8.2/src/warden/_version.py +34 -0
- warden_core-1.8.2/src/warden/analysis/__init__.py +24 -0
- warden_core-1.8.2/src/warden/analysis/application/__init__.py +0 -0
- warden_core-1.8.2/src/warden/analysis/application/analysis_phase.py +305 -0
- warden_core-1.8.2/src/warden/analysis/application/convention_detector.py +176 -0
- warden_core-1.8.2/src/warden/analysis/application/dependency_graph.py +121 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/__init__.py +45 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/classifier.py +141 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/discoverer.py +309 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/framework_detector.py +255 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/gitignore_filter.py +266 -0
- warden_core-1.8.2/src/warden/analysis/application/discovery/models.py +256 -0
- warden_core-1.8.2/src/warden/analysis/application/file_context_analyzer.py +545 -0
- warden_core-1.8.2/src/warden/analysis/application/framework_detector.py +158 -0
- warden_core-1.8.2/src/warden/analysis/application/integrity_scanner.py +225 -0
- warden_core-1.8.2/src/warden/analysis/application/issue_tracker.py +229 -0
- warden_core-1.8.2/src/warden/analysis/application/llm_analysis_phase.py +435 -0
- warden_core-1.8.2/src/warden/analysis/application/llm_context_analyzer.py +594 -0
- warden_core-1.8.2/src/warden/analysis/application/llm_phase_base.py +451 -0
- warden_core-1.8.2/src/warden/analysis/application/metrics_aggregator.py +274 -0
- warden_core-1.8.2/src/warden/analysis/application/pre_analysis_phase.py +792 -0
- warden_core-1.8.2/src/warden/analysis/application/project_purpose_detector.py +160 -0
- warden_core-1.8.2/src/warden/analysis/application/project_structure_analyzer.py +663 -0
- warden_core-1.8.2/src/warden/analysis/application/resolvers/semantic_resolver.py +159 -0
- warden_core-1.8.2/src/warden/analysis/application/result_analyzer.py +282 -0
- warden_core-1.8.2/src/warden/analysis/application/service_abstraction_detector.py +465 -0
- warden_core-1.8.2/src/warden/analysis/application/statistics_collector.py +124 -0
- warden_core-1.8.2/src/warden/analysis/domain/__init__.py +0 -0
- warden_core-1.8.2/src/warden/analysis/domain/context_weights.py +271 -0
- warden_core-1.8.2/src/warden/analysis/domain/enums.py +33 -0
- warden_core-1.8.2/src/warden/analysis/domain/file_context.py +369 -0
- warden_core-1.8.2/src/warden/analysis/domain/models.py +275 -0
- warden_core-1.8.2/src/warden/analysis/domain/project_context.py +362 -0
- warden_core-1.8.2/src/warden/analysis/domain/quality_metrics.py +424 -0
- warden_core-1.8.2/src/warden/ast/__init__.py +71 -0
- warden_core-1.8.2/src/warden/ast/application/__init__.py +11 -0
- warden_core-1.8.2/src/warden/ast/application/provider_interface.py +128 -0
- warden_core-1.8.2/src/warden/ast/application/provider_loader.py +370 -0
- warden_core-1.8.2/src/warden/ast/application/provider_registry.py +231 -0
- warden_core-1.8.2/src/warden/ast/domain/__init__.py +29 -0
- warden_core-1.8.2/src/warden/ast/domain/enums.py +108 -0
- warden_core-1.8.2/src/warden/ast/domain/models.py +232 -0
- warden_core-1.8.2/src/warden/ast/providers/__init__.py +3 -0
- warden_core-1.8.2/src/warden/ast/providers/python_ast_provider.py +312 -0
- warden_core-1.8.2/src/warden/ast/providers/tree_sitter_provider.py +451 -0
- warden_core-1.8.2/src/warden/build_context/README.md +327 -0
- warden_core-1.8.2/src/warden/build_context/__init__.py +55 -0
- warden_core-1.8.2/src/warden/build_context/context_provider.py +205 -0
- warden_core-1.8.2/src/warden/build_context/models.py +244 -0
- warden_core-1.8.2/src/warden/build_context/parsers/__init__.py +18 -0
- warden_core-1.8.2/src/warden/build_context/parsers/package_json_parser.py +224 -0
- warden_core-1.8.2/src/warden/build_context/parsers/pyproject_parser.py +470 -0
- warden_core-1.8.2/src/warden/build_context/parsers/requirements_parser.py +289 -0
- warden_core-1.8.2/src/warden/classification/__init__.py +4 -0
- warden_core-1.8.2/src/warden/classification/application/__init__.py +1 -0
- warden_core-1.8.2/src/warden/classification/application/classification_phase.py +251 -0
- warden_core-1.8.2/src/warden/classification/application/classification_prompts.py +100 -0
- warden_core-1.8.2/src/warden/classification/application/llm_classification_phase.py +508 -0
- warden_core-1.8.2/src/warden/cleaning/__init__.py +13 -0
- warden_core-1.8.2/src/warden/cleaning/application/__init__.py +1 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/__init__.py +17 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/complexity_analyzer.py +351 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/documentation_analyzer.py +494 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/duplication_analyzer.py +343 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/lsp_diagnostics_analyzer.py +98 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/magic_number_analyzer.py +331 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/maintainability_analyzer.py +517 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/naming_analyzer.py +352 -0
- warden_core-1.8.2/src/warden/cleaning/application/analyzers/testability_analyzer.py +650 -0
- warden_core-1.8.2/src/warden/cleaning/application/cleaning_phase.py +400 -0
- warden_core-1.8.2/src/warden/cleaning/application/llm_cleaning_generator.py +499 -0
- warden_core-1.8.2/src/warden/cleaning/application/llm_suggestion_generator.py +477 -0
- warden_core-1.8.2/src/warden/cleaning/application/orchestrator.py +287 -0
- warden_core-1.8.2/src/warden/cleaning/application/pattern_analyzer.py +346 -0
- warden_core-1.8.2/src/warden/cleaning/domain/__init__.py +10 -0
- warden_core-1.8.2/src/warden/cleaning/domain/base.py +118 -0
- warden_core-1.8.2/src/warden/cleaning/domain/models.py +104 -0
- warden_core-1.8.2/src/warden/cleaning/resilience_scenario.py +56 -0
- warden_core-1.8.2/src/warden/cli/__init__.py +0 -0
- warden_core-1.8.2/src/warden/cli/commands/AI_RULES.md +37 -0
- warden_core-1.8.2/src/warden/cli/commands/__init__.py +0 -0
- warden_core-1.8.2/src/warden/cli/commands/chat.py +82 -0
- warden_core-1.8.2/src/warden/cli/commands/doctor.py +32 -0
- warden_core-1.8.2/src/warden/cli/commands/init.py +518 -0
- warden_core-1.8.2/src/warden/cli/commands/init_helpers.py +185 -0
- warden_core-1.8.2/src/warden/cli/commands/install.py +94 -0
- warden_core-1.8.2/src/warden/cli/commands/scan.py +264 -0
- warden_core-1.8.2/src/warden/cli/commands/search.py +171 -0
- warden_core-1.8.2/src/warden/cli/commands/serve.py +57 -0
- warden_core-1.8.2/src/warden/cli/commands/status.py +77 -0
- warden_core-1.8.2/src/warden/cli/commands/update.py +33 -0
- warden_core-1.8.2/src/warden/cli/commands/version.py +18 -0
- warden_core-1.8.2/src/warden/cli/utils.py +32 -0
- warden_core-1.8.2/src/warden/cli_bridge/README.md +367 -0
- warden_core-1.8.2/src/warden/cli_bridge/USAGE.md +272 -0
- warden_core-1.8.2/src/warden/cli_bridge/__init__.py +46 -0
- warden_core-1.8.2/src/warden/cli_bridge/bridge.py +231 -0
- warden_core-1.8.2/src/warden/cli_bridge/bridge_minimal.py +218 -0
- warden_core-1.8.2/src/warden/cli_bridge/config_manager.py +234 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/__init__.py +0 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/base.py +7 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/config_handler.py +201 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/llm_handler.py +49 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/pipeline_handler.py +124 -0
- warden_core-1.8.2/src/warden/cli_bridge/handlers/tool_handler.py +69 -0
- warden_core-1.8.2/src/warden/cli_bridge/http_server.py +268 -0
- warden_core-1.8.2/src/warden/cli_bridge/protocol.py +231 -0
- warden_core-1.8.2/src/warden/cli_bridge/server.py +422 -0
- warden_core-1.8.2/src/warden/cli_bridge/utils.py +39 -0
- warden_core-1.8.2/src/warden/config/__init__.py +5 -0
- warden_core-1.8.2/src/warden/config/config_generator.py +378 -0
- warden_core-1.8.2/src/warden/config/discovery.py +151 -0
- warden_core-1.8.2/src/warden/config/domain/models.py +479 -0
- warden_core-1.8.2/src/warden/config/language_templates.py +427 -0
- warden_core-1.8.2/src/warden/config/project_config.py +146 -0
- warden_core-1.8.2/src/warden/config/project_detector.py +544 -0
- warden_core-1.8.2/src/warden/config/project_manager.py +227 -0
- warden_core-1.8.2/src/warden/config/templates/full-validation.yaml +28 -0
- warden_core-1.8.2/src/warden/config/templates/llm-basic.yaml +75 -0
- warden_core-1.8.2/src/warden/config/templates/llm-fast.yaml +53 -0
- warden_core-1.8.2/src/warden/config/templates/llm-production.yaml +154 -0
- warden_core-1.8.2/src/warden/config/templates/production-ready.yaml +44 -0
- warden_core-1.8.2/src/warden/config/templates/quick-scan.yaml +16 -0
- warden_core-1.8.2/src/warden/config/templates/security-only.yaml +20 -0
- warden_core-1.8.2/src/warden/config/yaml_exporter.py +238 -0
- warden_core-1.8.2/src/warden/config/yaml_parser.py +347 -0
- warden_core-1.8.2/src/warden/config/yaml_validator.py +297 -0
- warden_core-1.8.2/src/warden/demos/fragile_service.py +37 -0
- warden_core-1.8.2/src/warden/fortification/__init__.py +13 -0
- warden_core-1.8.2/src/warden/fortification/application/__init__.py +1 -0
- warden_core-1.8.2/src/warden/fortification/application/fortification_phase.py +577 -0
- warden_core-1.8.2/src/warden/fortification/application/fortifiers/__init__.py +13 -0
- warden_core-1.8.2/src/warden/fortification/application/fortifiers/error_handling.py +368 -0
- warden_core-1.8.2/src/warden/fortification/application/fortifiers/input_validation.py +251 -0
- warden_core-1.8.2/src/warden/fortification/application/fortifiers/logging.py +245 -0
- warden_core-1.8.2/src/warden/fortification/application/fortifiers/resource_disposal.py +258 -0
- warden_core-1.8.2/src/warden/fortification/application/llm_fortification_generator.py +527 -0
- warden_core-1.8.2/src/warden/fortification/application/orchestrator.py +227 -0
- warden_core-1.8.2/src/warden/fortification/domain/__init__.py +10 -0
- warden_core-1.8.2/src/warden/fortification/domain/base.py +62 -0
- warden_core-1.8.2/src/warden/fortification/domain/models.py +90 -0
- warden_core-1.8.2/src/warden/grpc/__init__.py +16 -0
- warden_core-1.8.2/src/warden/grpc/converters.py +250 -0
- warden_core-1.8.2/src/warden/grpc/generated/__init__.py +4 -0
- warden_core-1.8.2/src/warden/grpc/generated/warden_pb2.py +291 -0
- warden_core-1.8.2/src/warden/grpc/generated/warden_pb2_grpc.py +2295 -0
- warden_core-1.8.2/src/warden/grpc/infrastructure/__init__.py +17 -0
- warden_core-1.8.2/src/warden/grpc/infrastructure/base_file_repository.py +179 -0
- warden_core-1.8.2/src/warden/grpc/infrastructure/history_repository.py +168 -0
- warden_core-1.8.2/src/warden/grpc/infrastructure/issue_repository.py +170 -0
- warden_core-1.8.2/src/warden/grpc/infrastructure/suppression_repository.py +193 -0
- warden_core-1.8.2/src/warden/grpc/protos/warden.proto +1141 -0
- warden_core-1.8.2/src/warden/grpc/server.py +148 -0
- warden_core-1.8.2/src/warden/grpc/servicer/__init__.py +52 -0
- warden_core-1.8.2/src/warden/grpc/servicer/base.py +315 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/__init__.py +33 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/cleanup.py +97 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/configuration.py +206 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/file_discovery.py +263 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/fortification.py +152 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/health_status.py +66 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/issue_management.py +298 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/llm_operations.py +228 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/pipeline.py +131 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/report_generation.py +238 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/result_analysis.py +211 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/semantic_search.py +176 -0
- warden_core-1.8.2/src/warden/grpc/servicer/mixins/suppression.py +158 -0
- warden_core-1.8.2/src/warden/infrastructure/__init__.py +19 -0
- warden_core-1.8.2/src/warden/infrastructure/ci/__init__.py +15 -0
- warden_core-1.8.2/src/warden/infrastructure/ci/azure_pipelines.py +180 -0
- warden_core-1.8.2/src/warden/infrastructure/ci/github_actions.py +216 -0
- warden_core-1.8.2/src/warden/infrastructure/ci/github_cli.py +120 -0
- warden_core-1.8.2/src/warden/infrastructure/ci/gitlab_ci.py +175 -0
- warden_core-1.8.2/src/warden/infrastructure/hooks/__init__.py +15 -0
- warden_core-1.8.2/src/warden/infrastructure/hooks/commit_message_hook.py +165 -0
- warden_core-1.8.2/src/warden/infrastructure/hooks/installer.py +258 -0
- warden_core-1.8.2/src/warden/infrastructure/hooks/pre_commit.py +223 -0
- warden_core-1.8.2/src/warden/infrastructure/hooks/pre_push.py +172 -0
- warden_core-1.8.2/src/warden/infrastructure/installer.py +409 -0
- warden_core-1.8.2/src/warden/issues/__init__.py +21 -0
- warden_core-1.8.2/src/warden/issues/domain/__init__.py +0 -0
- warden_core-1.8.2/src/warden/issues/domain/enums.py +74 -0
- warden_core-1.8.2/src/warden/issues/domain/models.py +200 -0
- warden_core-1.8.2/src/warden/legacy_cli.py +264 -0
- warden_core-1.8.2/src/warden/llm/__init__.py +78 -0
- warden_core-1.8.2/src/warden/llm/config.py +336 -0
- warden_core-1.8.2/src/warden/llm/factory.py +95 -0
- warden_core-1.8.2/src/warden/llm/prompts/__init__.py +13 -0
- warden_core-1.8.2/src/warden/llm/prompts/analysis.py +125 -0
- warden_core-1.8.2/src/warden/llm/prompts/classification.py +80 -0
- warden_core-1.8.2/src/warden/llm/prompts/resilience.py +83 -0
- warden_core-1.8.2/src/warden/llm/providers/__init__.py +9 -0
- warden_core-1.8.2/src/warden/llm/providers/anthropic.py +152 -0
- warden_core-1.8.2/src/warden/llm/providers/base.py +146 -0
- warden_core-1.8.2/src/warden/llm/providers/deepseek.py +103 -0
- warden_core-1.8.2/src/warden/llm/providers/groq.py +103 -0
- warden_core-1.8.2/src/warden/llm/providers/openai.py +248 -0
- warden_core-1.8.2/src/warden/llm/providers/qwencode.py +107 -0
- warden_core-1.8.2/src/warden/llm/types.py +92 -0
- warden_core-1.8.2/src/warden/lsp/__init__.py +6 -0
- warden_core-1.8.2/src/warden/lsp/client.py +228 -0
- warden_core-1.8.2/src/warden/lsp/manager.py +87 -0
- warden_core-1.8.2/src/warden/lsp/symbol_graph.py +73 -0
- warden_core-1.8.2/src/warden/main.py +60 -0
- warden_core-1.8.2/src/warden/mcp/__init__.py +60 -0
- warden_core-1.8.2/src/warden/mcp/application/__init__.py +18 -0
- warden_core-1.8.2/src/warden/mcp/application/mcp_service.py +315 -0
- warden_core-1.8.2/src/warden/mcp/application/resource_provider.py +87 -0
- warden_core-1.8.2/src/warden/mcp/application/session_manager.py +65 -0
- warden_core-1.8.2/src/warden/mcp/application/tool_executor.py +303 -0
- warden_core-1.8.2/src/warden/mcp/domain/__init__.py +54 -0
- warden_core-1.8.2/src/warden/mcp/domain/enums.py +92 -0
- warden_core-1.8.2/src/warden/mcp/domain/errors.py +108 -0
- warden_core-1.8.2/src/warden/mcp/domain/models.py +135 -0
- warden_core-1.8.2/src/warden/mcp/domain/value_objects.py +111 -0
- warden_core-1.8.2/src/warden/mcp/entry.py +92 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/__init__.py +17 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/__init__.py +60 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/analysis_adapter.py +255 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/base_adapter.py +218 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/cleanup_adapter.py +186 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/config_adapter.py +176 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/discovery_adapter.py +316 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/fortification_adapter.py +250 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/health_adapter.py +153 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/issue_adapter.py +361 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/llm_adapter.py +291 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/pipeline_adapter.py +131 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/report_adapter.py +300 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/search_adapter.py +263 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/adapters/suppression_adapter.py +251 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/file_resource_repo.py +207 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/stdio_transport.py +86 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/tool_registry.py +235 -0
- warden_core-1.8.2/src/warden/mcp/infrastructure/warden_adapter.py +125 -0
- warden_core-1.8.2/src/warden/mcp/ports/__init__.py +16 -0
- warden_core-1.8.2/src/warden/mcp/ports/resource_repository.py +74 -0
- warden_core-1.8.2/src/warden/mcp/ports/tool_executor.py +69 -0
- warden_core-1.8.2/src/warden/mcp/ports/transport.py +65 -0
- warden_core-1.8.2/src/warden/mcp/protocol.py +276 -0
- warden_core-1.8.2/src/warden/mcp/resources.py +197 -0
- warden_core-1.8.2/src/warden/mcp/server.py +98 -0
- warden_core-1.8.2/src/warden/memory/__init__.py +1 -0
- warden_core-1.8.2/src/warden/memory/application/__init__.py +1 -0
- warden_core-1.8.2/src/warden/memory/application/memory_manager.py +257 -0
- warden_core-1.8.2/src/warden/memory/domain/__init__.py +1 -0
- warden_core-1.8.2/src/warden/memory/domain/models.py +103 -0
- warden_core-1.8.2/src/warden/pipeline/__init__.py +24 -0
- warden_core-1.8.2/src/warden/pipeline/application/__init__.py +8 -0
- warden_core-1.8.2/src/warden/pipeline/application/enhanced_orchestrator.py +447 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/__init__.py +3 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/analysis_executor.py +174 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/base_phase_executor.py +38 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/classification_executor.py +191 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/cleaning_executor.py +105 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/fortification_executor.py +93 -0
- warden_core-1.8.2/src/warden/pipeline/application/executors/pre_analysis_executor.py +84 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/__init__.py +11 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/frame_executor.py +587 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/frame_matcher.py +343 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/orchestrator.py +562 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/phase_executor.py +152 -0
- warden_core-1.8.2/src/warden/pipeline/application/orchestrator/result_aggregator.py +167 -0
- warden_core-1.8.2/src/warden/pipeline/application/phase_orchestrator.py +12 -0
- warden_core-1.8.2/src/warden/pipeline/domain/__init__.py +18 -0
- warden_core-1.8.2/src/warden/pipeline/domain/enums.py +119 -0
- warden_core-1.8.2/src/warden/pipeline/domain/models.py +453 -0
- warden_core-1.8.2/src/warden/pipeline/domain/pipeline_context.py +414 -0
- warden_core-1.8.2/src/warden/reports/__init__.py +5 -0
- warden_core-1.8.2/src/warden/reports/generator.py +344 -0
- warden_core-1.8.2/src/warden/reports/html_generator.py +331 -0
- warden_core-1.8.2/src/warden/reports/status_reporter.py +50 -0
- warden_core-1.8.2/src/warden/rules/__init__.py +12 -0
- warden_core-1.8.2/src/warden/rules/application/__init__.py +5 -0
- warden_core-1.8.2/src/warden/rules/application/rule_validator.py +692 -0
- warden_core-1.8.2/src/warden/rules/defaults/javascript/security.yaml +75 -0
- warden_core-1.8.2/src/warden/rules/defaults/loader.py +176 -0
- warden_core-1.8.2/src/warden/rules/defaults/python/security.yaml +75 -0
- warden_core-1.8.2/src/warden/rules/defaults/python/style.yaml +66 -0
- warden_core-1.8.2/src/warden/rules/domain/__init__.py +16 -0
- warden_core-1.8.2/src/warden/rules/domain/enums.py +43 -0
- warden_core-1.8.2/src/warden/rules/domain/models.py +135 -0
- warden_core-1.8.2/src/warden/rules/infrastructure/__init__.py +5 -0
- warden_core-1.8.2/src/warden/rules/infrastructure/yaml_loader.py +413 -0
- warden_core-1.8.2/src/warden/secrets/__init__.py +55 -0
- warden_core-1.8.2/src/warden/secrets/application/__init__.py +6 -0
- warden_core-1.8.2/src/warden/secrets/application/secret_manager.py +219 -0
- warden_core-1.8.2/src/warden/secrets/application/template_resolver.py +175 -0
- warden_core-1.8.2/src/warden/secrets/domain/__init__.py +6 -0
- warden_core-1.8.2/src/warden/secrets/domain/enums.py +16 -0
- warden_core-1.8.2/src/warden/secrets/domain/models.py +57 -0
- warden_core-1.8.2/src/warden/secrets/providers/__init__.py +13 -0
- warden_core-1.8.2/src/warden/secrets/providers/azure_keyvault_provider.py +211 -0
- warden_core-1.8.2/src/warden/secrets/providers/base.py +80 -0
- warden_core-1.8.2/src/warden/secrets/providers/dotenv_provider.py +171 -0
- warden_core-1.8.2/src/warden/secrets/providers/env_provider.py +67 -0
- warden_core-1.8.2/src/warden/semantic_search/__init__.py +97 -0
- warden_core-1.8.2/src/warden/semantic_search/adapters.py +224 -0
- warden_core-1.8.2/src/warden/semantic_search/chunker.py +252 -0
- warden_core-1.8.2/src/warden/semantic_search/context_retriever.py +410 -0
- warden_core-1.8.2/src/warden/semantic_search/embeddings.py +398 -0
- warden_core-1.8.2/src/warden/semantic_search/indexer.py +256 -0
- warden_core-1.8.2/src/warden/semantic_search/models.py +322 -0
- warden_core-1.8.2/src/warden/semantic_search/searcher.py +277 -0
- warden_core-1.8.2/src/warden/services/__init__.py +8 -0
- warden_core-1.8.2/src/warden/services/grpc_entry.py +62 -0
- warden_core-1.8.2/src/warden/services/ipc_entry.py +129 -0
- warden_core-1.8.2/src/warden/services/package_manager/doctor.py +206 -0
- warden_core-1.8.2/src/warden/services/package_manager/exceptions.py +31 -0
- warden_core-1.8.2/src/warden/services/package_manager/fetcher.py +396 -0
- warden_core-1.8.2/src/warden/services/package_manager/registry.py +112 -0
- warden_core-1.8.2/src/warden/shared/__init__.py +0 -0
- warden_core-1.8.2/src/warden/shared/domain/__init__.py +0 -0
- warden_core-1.8.2/src/warden/shared/domain/base_model.py +58 -0
- warden_core-1.8.2/src/warden/shared/domain/project_context.py +318 -0
- warden_core-1.8.2/src/warden/shared/domain/repository.py +202 -0
- warden_core-1.8.2/src/warden/shared/infrastructure/__init__.py +0 -0
- warden_core-1.8.2/src/warden/shared/infrastructure/config.py +113 -0
- warden_core-1.8.2/src/warden/shared/infrastructure/exceptions.py +65 -0
- warden_core-1.8.2/src/warden/shared/infrastructure/ignore_matcher.py +294 -0
- warden_core-1.8.2/src/warden/shared/infrastructure/logging.py +82 -0
- warden_core-1.8.2/src/warden/shared/logger.py +48 -0
- warden_core-1.8.2/src/warden/shared/services/__init__.py +181 -0
- warden_core-1.8.2/src/warden/shared/services/semantic_search_service.py +207 -0
- warden_core-1.8.2/src/warden/shared/utils/__init__.py +0 -0
- warden_core-1.8.2/src/warden/shared/utils/json_parser.py +72 -0
- warden_core-1.8.2/src/warden/shared/utils/language_utils.py +157 -0
- warden_core-1.8.2/src/warden/shared/utils/panel_converter.py +126 -0
- warden_core-1.8.2/src/warden/shared/utils/quality_calculator.py +48 -0
- warden_core-1.8.2/src/warden/shared/utils/yaml_merger.py +98 -0
- warden_core-1.8.2/src/warden/suppression/README.md +423 -0
- warden_core-1.8.2/src/warden/suppression/__init__.py +37 -0
- warden_core-1.8.2/src/warden/suppression/config_loader.py +293 -0
- warden_core-1.8.2/src/warden/suppression/matcher.py +355 -0
- warden_core-1.8.2/src/warden/suppression/models.py +252 -0
- warden_core-1.8.2/src/warden/templates/AI_RULES.md +40 -0
- warden_core-1.8.2/src/warden/validation/__init__.py +39 -0
- warden_core-1.8.2/src/warden/validation/application/base_universal_frame.py +90 -0
- warden_core-1.8.2/src/warden/validation/domain/__init__.py +61 -0
- warden_core-1.8.2/src/warden/validation/domain/check.py +317 -0
- warden_core-1.8.2/src/warden/validation/domain/enums.py +128 -0
- warden_core-1.8.2/src/warden/validation/domain/frame.py +351 -0
- warden_core-1.8.2/src/warden/validation/domain/test_results.py +334 -0
- warden_core-1.8.2/src/warden/validation/fix_imports.py +57 -0
- warden_core-1.8.2/src/warden/validation/frames/README.md +334 -0
- warden_core-1.8.2/src/warden/validation/frames/__init__.py +4 -0
- warden_core-1.8.2/src/warden/validation/frames/orphan/__init__.py +4 -0
- warden_core-1.8.2/src/warden/validation/frames/orphan/orphan_frame.py +146 -0
- warden_core-1.8.2/src/warden/validation/infrastructure/__init__.py +15 -0
- warden_core-1.8.2/src/warden/validation/infrastructure/check_loader.py +359 -0
- warden_core-1.8.2/src/warden/validation/infrastructure/frame_metadata.py +239 -0
- warden_core-1.8.2/src/warden/validation/infrastructure/frame_registry.py +845 -0
- warden_core-1.8.2/src/warden/validation/infrastructure/llm_validator.py +236 -0
- warden_core-1.8.2/src/warden/validation/migrate_frames.py +65 -0
- warden_core-1.8.2/src/warden.lock +6 -0
- warden_core-1.8.2/src/warden_core.egg-info/PKG-INFO +586 -0
- warden_core-1.8.2/src/warden_core.egg-info/SOURCES.txt +573 -0
- warden_core-1.8.2/src/warden_core.egg-info/dependency_links.txt +1 -0
- warden_core-1.8.2/src/warden_core.egg-info/entry_points.txt +2 -0
- warden_core-1.8.2/src/warden_core.egg-info/not-zip-safe +1 -0
- warden_core-1.8.2/src/warden_core.egg-info/requires.txt +30 -0
- warden_core-1.8.2/src/warden_core.egg-info/top_level.txt +1 -0
- warden_core-1.8.2/start_warden_chat.sh +80 -0
- warden_core-1.8.2/tests/__init__.py.bak +0 -0
- warden_core-1.8.2/tests/analysis/__init__.py +0 -0
- warden_core-1.8.2/tests/analysis/application/__init__.py +1 -0
- warden_core-1.8.2/tests/analysis/application/test_integrity_scanner.py +78 -0
- warden_core-1.8.2/tests/analysis/test_issue_tracker.py +272 -0
- warden_core-1.8.2/tests/analysis/test_pre_analysis.py +442 -0
- warden_core-1.8.2/tests/analysis/test_result_analyzer.py +313 -0
- warden_core-1.8.2/tests/ast_tests/__init__.py +1 -0
- warden_core-1.8.2/tests/ast_tests/test_provider_registry.py +247 -0
- warden_core-1.8.2/tests/ast_tests/test_python_ast_provider.py +230 -0
- warden_core-1.8.2/tests/build_context/__init__.py +1 -0
- warden_core-1.8.2/tests/build_context/test_context_provider.py +311 -0
- warden_core-1.8.2/tests/build_context/test_models.py +321 -0
- warden_core-1.8.2/tests/chaos/__init__.py +0 -0
- warden_core-1.8.2/tests/chaos/grpc/__init__.py +0 -0
- warden_core-1.8.2/tests/chaos/grpc/test_grpc_chaos.py +500 -0
- warden_core-1.8.2/tests/helpers/__init__.py +3 -0
- warden_core-1.8.2/tests/helpers/panel_test_utils.py +231 -0
- warden_core-1.8.2/tests/infrastructure/__init__.py +1 -0
- warden_core-1.8.2/tests/infrastructure/ci/__init__.py +1 -0
- warden_core-1.8.2/tests/infrastructure/ci/test_github_actions.py +168 -0
- warden_core-1.8.2/tests/infrastructure/hooks/__init__.py +1 -0
- warden_core-1.8.2/tests/infrastructure/hooks/test_installer.py +361 -0
- warden_core-1.8.2/tests/infrastructure/test_installer.py +251 -0
- warden_core-1.8.2/tests/integration/grpc_integration/__init__.py +1 -0
- warden_core-1.8.2/tests/integration/grpc_integration/test_grpc_integration.py +279 -0
- warden_core-1.8.2/tests/integration/test_context_propagation.py +89 -0
- warden_core-1.8.2/tests/llm/__init__.py +1 -0
- warden_core-1.8.2/tests/llm/manual_llm_live_simple.py +193 -0
- warden_core-1.8.2/tests/llm/test_config.py +77 -0
- warden_core-1.8.2/tests/llm/test_factory.py +61 -0
- warden_core-1.8.2/tests/llm/test_integration_live.py +205 -0
- warden_core-1.8.2/tests/llm/test_types.py +158 -0
- warden_core-1.8.2/tests/mcp/test_notification.py +80 -0
- warden_core-1.8.2/tests/phase16_verification.py +68 -0
- warden_core-1.8.2/tests/pipeline/__init__.py +0 -0
- warden_core-1.8.2/tests/pipeline/test_orchestrator.py +287 -0
- warden_core-1.8.2/tests/pipeline/test_orchestrator_rules.py +488 -0
- warden_core-1.8.2/tests/postman/README.md +240 -0
- warden_core-1.8.2/tests/postman/test_grpc.sh +480 -0
- warden_core-1.8.2/tests/rules/__init__.py +0 -0
- warden_core-1.8.2/tests/rules/application/__init__.py +1 -0
- warden_core-1.8.2/tests/rules/application/test_rule_validator.py +603 -0
- warden_core-1.8.2/tests/rules/domain/__init__.py +1 -0
- warden_core-1.8.2/tests/rules/domain/test_enums.py +51 -0
- warden_core-1.8.2/tests/rules/domain/test_models.py +213 -0
- warden_core-1.8.2/tests/rules/infrastructure/__init__.py +1 -0
- warden_core-1.8.2/tests/rules/infrastructure/test_yaml_loader.py +558 -0
- warden_core-1.8.2/tests/services/package_manager/__init__.py +0 -0
- warden_core-1.8.2/tests/services/package_manager/test_doctor.py +34 -0
- warden_core-1.8.2/tests/services/package_manager/test_fetcher.py +79 -0
- warden_core-1.8.2/tests/shared/utils/test_language_utils.py +36 -0
- warden_core-1.8.2/tests/suppression/__init__.py +1 -0
- warden_core-1.8.2/tests/suppression/test_config_loader.py +403 -0
- warden_core-1.8.2/tests/suppression/test_matcher.py +467 -0
- warden_core-1.8.2/tests/suppression/test_models.py +289 -0
- warden_core-1.8.2/tests/test_cleaning_panel_compat.py +239 -0
- warden_core-1.8.2/tests/test_fortification_panel_compat.py +213 -0
- warden_core-1.8.2/tests/test_frame_priority_conversion.py +178 -0
- warden_core-1.8.2/tests/test_main.py +18 -0
- warden_core-1.8.2/tests/test_panel_converter_utils.py +255 -0
- warden_core-1.8.2/tests/test_pipeline_panel_compat.py +418 -0
- warden_core-1.8.2/tests/test_validation_test_results.py +476 -0
- warden_core-1.8.2/tests/tui/__init__.py +1 -0
- warden_core-1.8.2/tests/tui/modals/__init__.py +1 -0
- warden_core-1.8.2/tests/tui/widgets/__init__.py +1 -0
- warden_core-1.8.2/tests/unit/grpc_testing/__init__.py +1 -0
- warden_core-1.8.2/tests/unit/grpc_testing/test_proto.py +355 -0
- warden_core-1.8.2/tests/unit/grpc_testing/test_server.py +325 -0
- warden_core-1.8.2/tests/validation/__init__.py +0 -0
- warden_core-1.8.2/tests/validation/frames/README.md +141 -0
- warden_core-1.8.2/tests/validation/frames/__init__.py +1 -0
- warden_core-1.8.2/tests/validation/frames/gitchanges/__init__.py +1 -0
- warden_core-1.8.2/tests/validation/frames/gitchanges/test_gitchanges_frame.py +529 -0
- warden_core-1.8.2/tests/validation/frames/orphan/__init__.py +1 -0
- warden_core-1.8.2/tests/validation/frames/orphan/test_orphan_frame.py +520 -0
- warden_core-1.8.2/tests/validation/frames/resilience/test_resilience_frame.py +102 -0
- warden_core-1.8.2/tests/validation/frames/security/__init__.py +1 -0
- warden_core-1.8.2/tests/validation/frames/security/test_security_frame.py +242 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Warden Security Rules
|
|
2
|
+
# WHAT IS WARDEN?
|
|
3
|
+
# Warden is the AI Code Guardian for this project.
|
|
4
|
+
# It acts as a hard gate against vulnerabilities and technical debt.
|
|
5
|
+
|
|
6
|
+
ALLWAYS READ .warden/ai_status.md AT THE START OF A SESSION.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## Security (Warden)
|
|
10
|
+
This project is protected by Warden (AI Code Guardian).
|
|
11
|
+
- **Status Check:** Read `.warden/ai_status.md` first.
|
|
12
|
+
- **Fail Protocol:** If status is FAIL, read `warden-report.sarif/json` for details. Do not proceed until fixed.
|
|
13
|
+
- **Action:** Run `warden scan` to verify fixes.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# Warden Agent Protocol
|
|
18
|
+
# IMPORTANT: You MUST follow the rules in /Users/alper/Documents/Development/Personal/warden-core/.warden/AI_RULES.md
|
|
19
|
+
# Run 'warden scan' to verify your work.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Git
|
|
2
|
+
.git
|
|
3
|
+
.gitignore
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
*.so
|
|
10
|
+
.venv
|
|
11
|
+
venv
|
|
12
|
+
env
|
|
13
|
+
build
|
|
14
|
+
dist
|
|
15
|
+
*.egg-info
|
|
16
|
+
.coverage
|
|
17
|
+
.pytest_cache
|
|
18
|
+
|
|
19
|
+
# Node
|
|
20
|
+
node_modules
|
|
21
|
+
npm-debug.log
|
|
22
|
+
|
|
23
|
+
# Warden
|
|
24
|
+
.warden
|
|
25
|
+
.mem0
|
|
26
|
+
temp
|
|
27
|
+
examples
|
|
28
|
+
tests
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# Warden Core - Environment Configuration
|
|
3
|
+
# ============================================================================
|
|
4
|
+
|
|
5
|
+
# Application
|
|
6
|
+
APP_NAME=warden-core
|
|
7
|
+
APP_ENV=development
|
|
8
|
+
DEBUG=true
|
|
9
|
+
LOG_LEVEL=INFO
|
|
10
|
+
|
|
11
|
+
# API Server
|
|
12
|
+
API_HOST=0.0.0.0
|
|
13
|
+
API_PORT=8000
|
|
14
|
+
API_WORKERS=4
|
|
15
|
+
API_RELOAD=true
|
|
16
|
+
|
|
17
|
+
# CORS
|
|
18
|
+
CORS_ORIGINS=["http://localhost:5173","http://localhost:3000"]
|
|
19
|
+
|
|
20
|
+
# Qdrant Vector Database
|
|
21
|
+
QDRANT_URL=https://your-cluster.qdrant.io
|
|
22
|
+
QDRANT_API_KEY=your-qdrant-api-key-here
|
|
23
|
+
QDRANT_COLLECTION=warden_memory
|
|
24
|
+
QDRANT_TIMEOUT=30
|
|
25
|
+
|
|
26
|
+
# OpenAI (for embeddings)
|
|
27
|
+
OPENAI_API_KEY=sk-your-openai-api-key-here
|
|
28
|
+
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
29
|
+
|
|
30
|
+
# Azure OpenAI (alternative to OpenAI)
|
|
31
|
+
# AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
|
|
32
|
+
# AZURE_OPENAI_API_KEY=your-azure-key-here
|
|
33
|
+
# AZURE_OPENAI_EMBEDDING_DEPLOYMENT=text-embedding-3-small
|
|
34
|
+
|
|
35
|
+
# LLM Provider (for analysis)
|
|
36
|
+
LLM_PROVIDER=deepseek # Options: deepseek, openai, groq, anthropic
|
|
37
|
+
DEEPSEEK_API_KEY=sk-your-deepseek-api-key-here
|
|
38
|
+
DEEPSEEK_MODEL=deepseek-chat
|
|
39
|
+
|
|
40
|
+
# File Storage
|
|
41
|
+
WARDEN_DIR=.warden
|
|
42
|
+
ISSUES_FILE=.warden/issues.json
|
|
43
|
+
REPORTS_DIR=.warden/reports
|
|
44
|
+
|
|
45
|
+
# Security
|
|
46
|
+
SECRET_KEY=your-secret-key-for-jwt-signing-change-this-in-production
|
|
47
|
+
ALGORITHM=HS256
|
|
48
|
+
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
|
49
|
+
|
|
50
|
+
# Database (Future - Phase 2)
|
|
51
|
+
# DATABASE_URL=postgresql://user:password@localhost:5432/warden
|
|
52
|
+
|
|
53
|
+
# Monitoring (Future)
|
|
54
|
+
# SENTRY_DSN=https://your-sentry-dsn
|
|
55
|
+
# PROMETHEUS_PORT=9090
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
name: Warden CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, dev ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, dev ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
security-events: write
|
|
17
|
+
actions: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
warden-scan:
|
|
21
|
+
name: Self-Scan
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout Code
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
|
|
30
|
+
- name: Set up Python
|
|
31
|
+
uses: actions/setup-python@v5
|
|
32
|
+
with:
|
|
33
|
+
python-version: '3.11'
|
|
34
|
+
cache: 'pip'
|
|
35
|
+
|
|
36
|
+
# Removed apt-get install as build-essential is pre-installed on ubuntu-latest
|
|
37
|
+
# and it saves ~1-2 minutes of setup time.
|
|
38
|
+
|
|
39
|
+
- name: Install Warden
|
|
40
|
+
run: |
|
|
41
|
+
pip install --upgrade pip
|
|
42
|
+
pip install -e .
|
|
43
|
+
# Verify installation
|
|
44
|
+
warden --help
|
|
45
|
+
|
|
46
|
+
- name: Cache Warden Storage
|
|
47
|
+
uses: actions/cache@v4
|
|
48
|
+
with:
|
|
49
|
+
path: |
|
|
50
|
+
.warden/memory
|
|
51
|
+
.warden/embeddings
|
|
52
|
+
key: warden-storage-${{ runner.os }}-${{ github.sha }}
|
|
53
|
+
restore-keys: |
|
|
54
|
+
warden-storage-${{ runner.os }}-
|
|
55
|
+
|
|
56
|
+
- name: Cache AI Models
|
|
57
|
+
uses: actions/cache@v4
|
|
58
|
+
with:
|
|
59
|
+
path: ~/.cache/huggingface
|
|
60
|
+
key: hf-models-${{ runner.os }}-${{ hashFiles('.warden/config.yaml') }}
|
|
61
|
+
restore-keys: |
|
|
62
|
+
hf-models-${{ runner.os }}-
|
|
63
|
+
|
|
64
|
+
- name: Run Warden Scan
|
|
65
|
+
# continue-on-error removed to enforce quality gate
|
|
66
|
+
env:
|
|
67
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
68
|
+
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
|
|
69
|
+
AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
|
|
70
|
+
AZURE_OPENAI_API_VERSION: ${{ secrets.AZURE_OPENAI_API_VERSION }}
|
|
71
|
+
AZURE_OPENAI_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_DEPLOYMENT_NAME }}
|
|
72
|
+
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
|
|
73
|
+
LLM_PROVIDER: ${{ secrets.LLM_PROVIDER }}
|
|
74
|
+
DEFAULT_LLM_MODEL: ${{ secrets.DEFAULT_LLM_MODEL }}
|
|
75
|
+
run: |
|
|
76
|
+
# Scanning the source code of Warden itself
|
|
77
|
+
warden scan src/warden --format sarif --output warden.sarif --verbose
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
- name: Archive SARIF Artifact
|
|
82
|
+
uses: actions/upload-artifact@v4
|
|
83
|
+
if: always()
|
|
84
|
+
with:
|
|
85
|
+
name: warden-scan-results
|
|
86
|
+
path: warden.sarif
|
|
87
|
+
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Release Warden Core
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-n-publish:
|
|
10
|
+
name: Build and publish to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write # For creating release
|
|
14
|
+
id-token: write # MANDATORY for trusted publishing
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v3
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@v4
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.11"
|
|
25
|
+
|
|
26
|
+
- name: Install build dependencies
|
|
27
|
+
run: |
|
|
28
|
+
python -m pip install --upgrade pip
|
|
29
|
+
pip install build
|
|
30
|
+
|
|
31
|
+
- name: Build package
|
|
32
|
+
run: python -m build
|
|
33
|
+
|
|
34
|
+
- name: Publish to PyPI
|
|
35
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
36
|
+
# No password needed! Trusted Publishing (OIDC) is used.
|
|
37
|
+
|
|
38
|
+
- name: Create GitHub Release
|
|
39
|
+
uses: softprops/action-gh-release@v1
|
|
40
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
41
|
+
with:
|
|
42
|
+
files: dist/*
|
|
43
|
+
|
|
44
|
+
- name: Update Homebrew Formula
|
|
45
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
46
|
+
continue-on-error: true
|
|
47
|
+
env:
|
|
48
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
49
|
+
run: |
|
|
50
|
+
TAG_NAME=${GITHUB_REF#refs/tags/}
|
|
51
|
+
TARBALL_URL="https://github.com/alperduzgun/warden-core/archive/refs/tags/${TAG_NAME}.tar.gz"
|
|
52
|
+
|
|
53
|
+
echo "Updating formula for ${TAG_NAME}..."
|
|
54
|
+
|
|
55
|
+
# Download tarball to calculate SHA256
|
|
56
|
+
curl -L -o release.tar.gz $TARBALL_URL
|
|
57
|
+
SHA256=$(sha256sum release.tar.gz | awk '{print $1}')
|
|
58
|
+
|
|
59
|
+
# Update Formula file
|
|
60
|
+
sed -i "s|url \".*\"|url \"${TARBALL_URL}\"|" Formula/warden.rb
|
|
61
|
+
sed -i "s|sha256 \".*\"|sha256 \"${SHA256}\"|" Formula/warden.rb
|
|
62
|
+
|
|
63
|
+
# Commit and Push changes
|
|
64
|
+
git config --local user.email "action@github.com"
|
|
65
|
+
git config --local user.name "GitHub Action"
|
|
66
|
+
git add Formula/warden.rb
|
|
67
|
+
git commit -m "chore: update homebrew formula for ${TAG_NAME}"
|
|
68
|
+
git push origin HEAD:${{ github.event.repository.default_branch }} || git push origin HEAD:main
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Claude Code & Memory files
|
|
2
|
+
.claude/
|
|
3
|
+
.mem0/
|
|
4
|
+
*.db
|
|
5
|
+
*.sqlite
|
|
6
|
+
|
|
7
|
+
# Qdrant storage
|
|
8
|
+
qdrant_storage/
|
|
9
|
+
.qdrant/
|
|
10
|
+
|
|
11
|
+
# Python
|
|
12
|
+
__pycache__/
|
|
13
|
+
*.py[cod]
|
|
14
|
+
*$py.class
|
|
15
|
+
*.so
|
|
16
|
+
.Python
|
|
17
|
+
env/
|
|
18
|
+
venv/
|
|
19
|
+
ENV/
|
|
20
|
+
.venv
|
|
21
|
+
|
|
22
|
+
# IDEs
|
|
23
|
+
.vscode/
|
|
24
|
+
.idea/
|
|
25
|
+
*.swp
|
|
26
|
+
*.swo
|
|
27
|
+
*~
|
|
28
|
+
|
|
29
|
+
# OS
|
|
30
|
+
.DS_Store
|
|
31
|
+
Thumbs.db
|
|
32
|
+
|
|
33
|
+
# Logs
|
|
34
|
+
*.log
|
|
35
|
+
|
|
36
|
+
# Test coverage
|
|
37
|
+
coverage.xml
|
|
38
|
+
htmlcov/
|
|
39
|
+
.coverage
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
|
|
42
|
+
# Environment
|
|
43
|
+
.env
|
|
44
|
+
.env.local
|
|
45
|
+
.session-notes.md
|
|
46
|
+
mem0_cli.py
|
|
47
|
+
mem
|
|
48
|
+
|
|
49
|
+
# Reference repositories
|
|
50
|
+
temp/
|
|
51
|
+
|
|
52
|
+
# Warden runtime files
|
|
53
|
+
.warden/backend.pid
|
|
54
|
+
.warden/memory/
|
|
55
|
+
.warden/reports/
|
|
56
|
+
|
|
57
|
+
# Python build artifacts
|
|
58
|
+
*.egg-info/
|
|
59
|
+
build/
|
|
60
|
+
dist/
|
|
61
|
+
.agent/workflows/mem_context.md
|
|
62
|
+
.gitignore
|
|
63
|
+
.agent/workflows/mem_save.md
|
|
64
|
+
.agent/workflows/mem_search.md
|
|
65
|
+
|
|
66
|
+
# Warden Embeddings
|
|
67
|
+
.warden/embeddings/
|
|
68
|
+
.warden/test_embeddings/
|
|
69
|
+
/Users/alper/Documents/Development/Personal/warden-core/.warden.bak_20260106_023251
|
|
70
|
+
# Temporary
|
|
71
|
+
temp/
|
|
72
|
+
tmp/
|
|
73
|
+
run.log
|
|
74
|
+
*.log
|
|
75
|
+
coverage.xml
|
|
76
|
+
.coverage
|
|
77
|
+
warden-ink
|
|
78
|
+
warden-ipc
|
|
79
|
+
src/warden/_version.py
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Warden Code Verification Protocol for AI Agents
|
|
2
|
+
|
|
3
|
+
> **Role:** You are a Senior Software Engineer working in a Warden-protected codebase.
|
|
4
|
+
> **Constraint:** You CANNOT mark a task as complete without verifying your changes using Warden.
|
|
5
|
+
|
|
6
|
+
## The "Verify-Loop" Protocol
|
|
7
|
+
|
|
8
|
+
You must follow this cycle for every code change:
|
|
9
|
+
|
|
10
|
+
1. **PLAN**: Design your change.
|
|
11
|
+
2. **CODE**: Implement the change.
|
|
12
|
+
3. **VERIFY (Critical)**:
|
|
13
|
+
* Run `warden scan` in the project root.
|
|
14
|
+
* **IF PASS**: Commit and mark task complete.
|
|
15
|
+
* **IF FAIL**:
|
|
16
|
+
* Analyze the JSON/SARIF output.
|
|
17
|
+
* Fix the specific issues found.
|
|
18
|
+
* **REPEAT VERIFY** until pass.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
* **Scan**: `warden scan`
|
|
23
|
+
* **Request Fix**: `warden request_fix --file <path> --line <num>`
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
1. **Never Skip**: Do not "assume" your code is correct. Compilers lie; Warden does not.
|
|
27
|
+
2. **Scope**: If you changed a file, you must scan it (and ideally the whole project to check dependencies).
|
|
28
|
+
3. **Forbidden Patterns**:
|
|
29
|
+
* No `print()` in production code (Use `logger`).
|
|
30
|
+
* No hardcoded secrets.
|
|
31
|
+
* No misplaced files (Respect architectural boundaries).
|
|
32
|
+
|
|
33
|
+
## Failure Recovery
|
|
34
|
+
If you cannot fix a Warden error:
|
|
35
|
+
1. Explain WHY you cannot fix it.
|
|
36
|
+
2. Ask the user for guidance.
|
|
37
|
+
3. Do NOT suppress the error unless explicitly instructed.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Warden Security Status
|
|
2
|
+
Updated: 2026-01-08 23:19:05
|
|
3
|
+
|
|
4
|
+
**Status**: ✅ PASS
|
|
5
|
+
**Critical Issues**: 0
|
|
6
|
+
**Total Issues**: 6
|
|
7
|
+
|
|
8
|
+
> [!NOTE]
|
|
9
|
+
> If status is FAIL, please check the full report or run `warden scan` for details.
|
|
10
|
+
> Do not analyze full code unless you are resolving these specific issues.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
advanced:
|
|
2
|
+
debug: false
|
|
3
|
+
frame_timeout: 300
|
|
4
|
+
max_workers: 4
|
|
5
|
+
ci:
|
|
6
|
+
enabled: true
|
|
7
|
+
fail_on_blocker: true
|
|
8
|
+
output:
|
|
9
|
+
- format: markdown
|
|
10
|
+
path: .warden/reports/WARDEN_REPORT.md
|
|
11
|
+
- format: json
|
|
12
|
+
path: .warden/reports/warden-report.json
|
|
13
|
+
- format: sarif
|
|
14
|
+
path: .warden/reports/warden-report.sarif
|
|
15
|
+
frames:
|
|
16
|
+
- config
|
|
17
|
+
- security
|
|
18
|
+
- environmentsecurity
|
|
19
|
+
- resilience
|
|
20
|
+
- fuzz
|
|
21
|
+
- orphan
|
|
22
|
+
- env-security
|
|
23
|
+
- stress
|
|
24
|
+
- demosecurity
|
|
25
|
+
- architecturalconsistency
|
|
26
|
+
- property
|
|
27
|
+
frames_config:
|
|
28
|
+
architecturalconsistency:
|
|
29
|
+
enabled: true
|
|
30
|
+
priority: low
|
|
31
|
+
config:
|
|
32
|
+
enabled: true
|
|
33
|
+
demosecurity:
|
|
34
|
+
check_hardcoded_passwords: true
|
|
35
|
+
enabled: true
|
|
36
|
+
severity_level: high
|
|
37
|
+
env-security:
|
|
38
|
+
enabled: true
|
|
39
|
+
environmentsecurity:
|
|
40
|
+
enabled: true
|
|
41
|
+
orphan:
|
|
42
|
+
enabled: true
|
|
43
|
+
ignore_imports:
|
|
44
|
+
- annotations
|
|
45
|
+
- TYPE_CHECKING
|
|
46
|
+
ignore_private: false
|
|
47
|
+
ignore_test_files: true
|
|
48
|
+
use_llm_filter: true
|
|
49
|
+
resilience:
|
|
50
|
+
checks:
|
|
51
|
+
- timeout_handling
|
|
52
|
+
- retry_logic
|
|
53
|
+
- circuit_breaker
|
|
54
|
+
- error_recovery
|
|
55
|
+
enabled: true
|
|
56
|
+
priority: high
|
|
57
|
+
security:
|
|
58
|
+
checks:
|
|
59
|
+
- sql-injection
|
|
60
|
+
- xss
|
|
61
|
+
- secrets
|
|
62
|
+
- command-injection
|
|
63
|
+
- path-traversal
|
|
64
|
+
enabled: true
|
|
65
|
+
is_blocker: false
|
|
66
|
+
priority: critical
|
|
67
|
+
stress:
|
|
68
|
+
checks:
|
|
69
|
+
- api_load_testing
|
|
70
|
+
- async_performance
|
|
71
|
+
enabled: true
|
|
72
|
+
llm:
|
|
73
|
+
azure:
|
|
74
|
+
api_key: ${AZURE_OPENAI_API_KEY}
|
|
75
|
+
api_version: ${AZURE_OPENAI_API_VERSION}
|
|
76
|
+
deployment_name: ${AZURE_OPENAI_DEPLOYMENT_NAME}
|
|
77
|
+
endpoint: ${AZURE_OPENAI_ENDPOINT}
|
|
78
|
+
fallback:
|
|
79
|
+
api_key: ${GROQ_API_KEY}
|
|
80
|
+
provider: groq
|
|
81
|
+
max_retries: 2
|
|
82
|
+
model: gpt-4o
|
|
83
|
+
provider: azure_openai
|
|
84
|
+
timeout: 300
|
|
85
|
+
project:
|
|
86
|
+
description: Warden configuration for warden-core
|
|
87
|
+
detected_at: '2025-12-24T16:35:53.922859'
|
|
88
|
+
framework: fastapi
|
|
89
|
+
frameworks: []
|
|
90
|
+
language: python
|
|
91
|
+
name: warden-core
|
|
92
|
+
project_type: monorepo
|
|
93
|
+
sdk_version: '3.11'
|
|
94
|
+
type: microservice
|
|
95
|
+
semantic_search:
|
|
96
|
+
chroma_path: .warden/embeddings
|
|
97
|
+
collection_name: warden_warden_core
|
|
98
|
+
database: chromadb
|
|
99
|
+
enabled: true
|
|
100
|
+
max_context_tokens: 4000
|
|
101
|
+
model: all-MiniLM-L6-v2
|
|
102
|
+
provider: local
|
|
103
|
+
settings:
|
|
104
|
+
enable_analysis: true
|
|
105
|
+
enable_classification: true
|
|
106
|
+
enable_cleaning: true
|
|
107
|
+
enable_fortification: true
|
|
108
|
+
enable_pre_analysis: true
|
|
109
|
+
enable_validation: true
|
|
110
|
+
fail_fast: false
|
|
111
|
+
frame_timeout: 120
|
|
112
|
+
min_severity: high
|
|
113
|
+
mode: normal
|
|
114
|
+
pre_analysis_config:
|
|
115
|
+
batch_size: 10
|
|
116
|
+
cache_enabled: true
|
|
117
|
+
llm_threshold: 0.7
|
|
118
|
+
use_llm: true
|
|
119
|
+
timeout: 300
|
|
120
|
+
|
|
121
|
+
# --- Custom Rules Configuration ---
|
|
122
|
+
# To enable your custom rules, uncomment the following lines:
|
|
123
|
+
#
|
|
124
|
+
# custom_rules:
|
|
125
|
+
# - .warden/rules/my_custom_rules.yaml
|
|
126
|
+
#
|