tapps-agents 3.5.40__py3-none-any.whl → 3.6.0__py3-none-any.whl
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.
- tapps_agents/__init__.py +2 -2
- tapps_agents/agents/__init__.py +22 -22
- tapps_agents/agents/analyst/__init__.py +5 -5
- tapps_agents/agents/architect/__init__.py +5 -5
- tapps_agents/agents/architect/agent.py +1033 -1033
- tapps_agents/agents/architect/pattern_detector.py +75 -75
- tapps_agents/agents/cleanup/__init__.py +7 -7
- tapps_agents/agents/cleanup/agent.py +445 -445
- tapps_agents/agents/debugger/__init__.py +7 -7
- tapps_agents/agents/debugger/agent.py +310 -310
- tapps_agents/agents/debugger/error_analyzer.py +437 -437
- tapps_agents/agents/designer/__init__.py +5 -5
- tapps_agents/agents/designer/agent.py +786 -786
- tapps_agents/agents/designer/visual_designer.py +638 -638
- tapps_agents/agents/documenter/__init__.py +7 -7
- tapps_agents/agents/documenter/agent.py +531 -531
- tapps_agents/agents/documenter/doc_generator.py +472 -472
- tapps_agents/agents/documenter/doc_validator.py +393 -393
- tapps_agents/agents/documenter/framework_doc_updater.py +493 -493
- tapps_agents/agents/enhancer/__init__.py +7 -7
- tapps_agents/agents/evaluator/__init__.py +7 -7
- tapps_agents/agents/evaluator/agent.py +443 -443
- tapps_agents/agents/evaluator/priority_evaluator.py +641 -641
- tapps_agents/agents/evaluator/quality_analyzer.py +147 -147
- tapps_agents/agents/evaluator/report_generator.py +344 -344
- tapps_agents/agents/evaluator/usage_analyzer.py +192 -192
- tapps_agents/agents/evaluator/workflow_analyzer.py +189 -189
- tapps_agents/agents/implementer/__init__.py +7 -7
- tapps_agents/agents/implementer/agent.py +798 -798
- tapps_agents/agents/implementer/auto_fix.py +1119 -1119
- tapps_agents/agents/implementer/code_generator.py +73 -73
- tapps_agents/agents/improver/__init__.py +1 -1
- tapps_agents/agents/improver/agent.py +753 -753
- tapps_agents/agents/ops/__init__.py +1 -1
- tapps_agents/agents/ops/agent.py +619 -619
- tapps_agents/agents/ops/dependency_analyzer.py +600 -600
- tapps_agents/agents/orchestrator/__init__.py +5 -5
- tapps_agents/agents/orchestrator/agent.py +522 -522
- tapps_agents/agents/planner/__init__.py +7 -7
- tapps_agents/agents/planner/agent.py +1127 -1127
- tapps_agents/agents/reviewer/__init__.py +24 -24
- tapps_agents/agents/reviewer/agent.py +3513 -3513
- tapps_agents/agents/reviewer/aggregator.py +213 -213
- tapps_agents/agents/reviewer/batch_review.py +448 -448
- tapps_agents/agents/reviewer/cache.py +443 -443
- tapps_agents/agents/reviewer/context7_enhancer.py +630 -630
- tapps_agents/agents/reviewer/context_detector.py +203 -203
- tapps_agents/agents/reviewer/docker_compose_validator.py +158 -158
- tapps_agents/agents/reviewer/dockerfile_validator.py +176 -176
- tapps_agents/agents/reviewer/error_handling.py +126 -126
- tapps_agents/agents/reviewer/feedback_generator.py +490 -490
- tapps_agents/agents/reviewer/influxdb_validator.py +316 -316
- tapps_agents/agents/reviewer/issue_tracking.py +169 -169
- tapps_agents/agents/reviewer/library_detector.py +295 -295
- tapps_agents/agents/reviewer/library_patterns.py +268 -268
- tapps_agents/agents/reviewer/maintainability_scorer.py +593 -593
- tapps_agents/agents/reviewer/metric_strategies.py +276 -276
- tapps_agents/agents/reviewer/mqtt_validator.py +160 -160
- tapps_agents/agents/reviewer/output_enhancer.py +105 -105
- tapps_agents/agents/reviewer/pattern_detector.py +241 -241
- tapps_agents/agents/reviewer/performance_scorer.py +357 -357
- tapps_agents/agents/reviewer/phased_review.py +516 -516
- tapps_agents/agents/reviewer/progressive_review.py +435 -435
- tapps_agents/agents/reviewer/react_scorer.py +331 -331
- tapps_agents/agents/reviewer/score_constants.py +228 -228
- tapps_agents/agents/reviewer/score_validator.py +507 -507
- tapps_agents/agents/reviewer/scorer_registry.py +373 -373
- tapps_agents/agents/reviewer/scoring.py +1566 -1566
- tapps_agents/agents/reviewer/service_discovery.py +534 -534
- tapps_agents/agents/reviewer/tools/__init__.py +41 -41
- tapps_agents/agents/reviewer/tools/parallel_executor.py +581 -581
- tapps_agents/agents/reviewer/tools/ruff_grouping.py +250 -250
- tapps_agents/agents/reviewer/tools/scoped_mypy.py +284 -284
- tapps_agents/agents/reviewer/typescript_scorer.py +1142 -1142
- tapps_agents/agents/reviewer/validation.py +208 -208
- tapps_agents/agents/reviewer/websocket_validator.py +132 -132
- tapps_agents/agents/tester/__init__.py +7 -7
- tapps_agents/agents/tester/accessibility_auditor.py +309 -309
- tapps_agents/agents/tester/agent.py +1080 -1080
- tapps_agents/agents/tester/batch_generator.py +54 -54
- tapps_agents/agents/tester/context_learner.py +51 -51
- tapps_agents/agents/tester/coverage_analyzer.py +386 -386
- tapps_agents/agents/tester/coverage_test_generator.py +290 -290
- tapps_agents/agents/tester/debug_enhancer.py +238 -238
- tapps_agents/agents/tester/device_emulator.py +241 -241
- tapps_agents/agents/tester/integration_generator.py +62 -62
- tapps_agents/agents/tester/network_recorder.py +300 -300
- tapps_agents/agents/tester/performance_monitor.py +320 -320
- tapps_agents/agents/tester/test_fixer.py +316 -316
- tapps_agents/agents/tester/test_generator.py +632 -632
- tapps_agents/agents/tester/trace_manager.py +234 -234
- tapps_agents/agents/tester/visual_regression.py +291 -291
- tapps_agents/analysis/pattern_detector.py +36 -36
- tapps_agents/beads/hydration.py +213 -213
- tapps_agents/beads/parse.py +32 -32
- tapps_agents/beads/specs.py +206 -206
- tapps_agents/cli/__init__.py +9 -9
- tapps_agents/cli/__main__.py +8 -8
- tapps_agents/cli/base.py +478 -478
- tapps_agents/cli/command_classifier.py +72 -72
- tapps_agents/cli/commands/__init__.py +2 -2
- tapps_agents/cli/commands/analyst.py +173 -173
- tapps_agents/cli/commands/architect.py +109 -109
- tapps_agents/cli/commands/cleanup_agent.py +92 -92
- tapps_agents/cli/commands/common.py +126 -126
- tapps_agents/cli/commands/debugger.py +90 -90
- tapps_agents/cli/commands/designer.py +112 -112
- tapps_agents/cli/commands/documenter.py +136 -136
- tapps_agents/cli/commands/enhancer.py +110 -110
- tapps_agents/cli/commands/evaluator.py +255 -255
- tapps_agents/cli/commands/health.py +665 -665
- tapps_agents/cli/commands/implementer.py +301 -301
- tapps_agents/cli/commands/improver.py +91 -91
- tapps_agents/cli/commands/knowledge.py +111 -111
- tapps_agents/cli/commands/learning.py +172 -172
- tapps_agents/cli/commands/observability.py +283 -283
- tapps_agents/cli/commands/ops.py +135 -135
- tapps_agents/cli/commands/orchestrator.py +116 -116
- tapps_agents/cli/commands/planner.py +237 -237
- tapps_agents/cli/commands/reviewer.py +1872 -1872
- tapps_agents/cli/commands/status.py +285 -285
- tapps_agents/cli/commands/task.py +227 -219
- tapps_agents/cli/commands/tester.py +191 -191
- tapps_agents/cli/commands/top_level.py +3586 -3586
- tapps_agents/cli/feedback.py +936 -936
- tapps_agents/cli/formatters.py +608 -608
- tapps_agents/cli/help/__init__.py +7 -7
- tapps_agents/cli/help/static_help.py +425 -425
- tapps_agents/cli/network_detection.py +110 -110
- tapps_agents/cli/output_compactor.py +274 -274
- tapps_agents/cli/parsers/__init__.py +2 -2
- tapps_agents/cli/parsers/analyst.py +186 -186
- tapps_agents/cli/parsers/architect.py +167 -167
- tapps_agents/cli/parsers/cleanup_agent.py +228 -228
- tapps_agents/cli/parsers/debugger.py +116 -116
- tapps_agents/cli/parsers/designer.py +182 -182
- tapps_agents/cli/parsers/documenter.py +134 -134
- tapps_agents/cli/parsers/enhancer.py +113 -113
- tapps_agents/cli/parsers/evaluator.py +213 -213
- tapps_agents/cli/parsers/implementer.py +168 -168
- tapps_agents/cli/parsers/improver.py +132 -132
- tapps_agents/cli/parsers/ops.py +159 -159
- tapps_agents/cli/parsers/orchestrator.py +98 -98
- tapps_agents/cli/parsers/planner.py +145 -145
- tapps_agents/cli/parsers/reviewer.py +462 -462
- tapps_agents/cli/parsers/tester.py +124 -124
- tapps_agents/cli/progress_heartbeat.py +254 -254
- tapps_agents/cli/streaming_progress.py +336 -336
- tapps_agents/cli/utils/__init__.py +6 -6
- tapps_agents/cli/utils/agent_lifecycle.py +48 -48
- tapps_agents/cli/utils/error_formatter.py +82 -82
- tapps_agents/cli/utils/error_recovery.py +188 -188
- tapps_agents/cli/utils/output_handler.py +59 -59
- tapps_agents/cli/utils/prompt_enhancer.py +319 -319
- tapps_agents/cli/validators/__init__.py +9 -9
- tapps_agents/cli/validators/command_validator.py +81 -81
- tapps_agents/context7/__init__.py +112 -112
- tapps_agents/context7/agent_integration.py +869 -869
- tapps_agents/context7/analytics.py +382 -382
- tapps_agents/context7/analytics_dashboard.py +299 -299
- tapps_agents/context7/async_cache.py +681 -681
- tapps_agents/context7/backup_client.py +958 -958
- tapps_agents/context7/cache_locking.py +194 -194
- tapps_agents/context7/cache_metadata.py +214 -214
- tapps_agents/context7/cache_prewarm.py +488 -488
- tapps_agents/context7/cache_structure.py +168 -168
- tapps_agents/context7/cache_warming.py +604 -604
- tapps_agents/context7/circuit_breaker.py +376 -376
- tapps_agents/context7/cleanup.py +461 -461
- tapps_agents/context7/commands.py +858 -858
- tapps_agents/context7/credential_validation.py +276 -276
- tapps_agents/context7/cross_reference_resolver.py +168 -168
- tapps_agents/context7/cross_references.py +424 -424
- tapps_agents/context7/doc_manager.py +225 -225
- tapps_agents/context7/fuzzy_matcher.py +369 -369
- tapps_agents/context7/kb_cache.py +404 -404
- tapps_agents/context7/language_detector.py +219 -219
- tapps_agents/context7/library_detector.py +725 -725
- tapps_agents/context7/lookup.py +738 -738
- tapps_agents/context7/metadata.py +258 -258
- tapps_agents/context7/refresh_queue.py +300 -300
- tapps_agents/context7/security.py +373 -373
- tapps_agents/context7/staleness_policies.py +278 -278
- tapps_agents/context7/tiles_integration.py +47 -47
- tapps_agents/continuous_bug_fix/__init__.py +20 -20
- tapps_agents/continuous_bug_fix/bug_finder.py +306 -306
- tapps_agents/continuous_bug_fix/bug_fix_coordinator.py +177 -177
- tapps_agents/continuous_bug_fix/commit_manager.py +178 -178
- tapps_agents/continuous_bug_fix/continuous_bug_fixer.py +322 -322
- tapps_agents/continuous_bug_fix/proactive_bug_finder.py +285 -285
- tapps_agents/core/__init__.py +298 -298
- tapps_agents/core/adaptive_cache_config.py +432 -432
- tapps_agents/core/agent_base.py +647 -647
- tapps_agents/core/agent_cache.py +466 -466
- tapps_agents/core/agent_learning.py +1865 -1865
- tapps_agents/core/analytics_dashboard.py +563 -563
- tapps_agents/core/analytics_enhancements.py +597 -597
- tapps_agents/core/anonymization.py +274 -274
- tapps_agents/core/artifact_context_builder.py +293 -0
- tapps_agents/core/ast_parser.py +228 -228
- tapps_agents/core/async_file_ops.py +402 -402
- tapps_agents/core/best_practice_consultant.py +299 -299
- tapps_agents/core/brownfield_analyzer.py +299 -299
- tapps_agents/core/brownfield_review.py +541 -541
- tapps_agents/core/browser_controller.py +513 -513
- tapps_agents/core/capability_registry.py +418 -418
- tapps_agents/core/change_impact_analyzer.py +190 -190
- tapps_agents/core/checkpoint_manager.py +377 -377
- tapps_agents/core/code_generator.py +329 -329
- tapps_agents/core/code_validator.py +276 -276
- tapps_agents/core/command_registry.py +327 -327
- tapps_agents/core/config.py +33 -0
- tapps_agents/core/context_gathering/__init__.py +2 -2
- tapps_agents/core/context_gathering/repository_explorer.py +28 -28
- tapps_agents/core/context_intelligence/__init__.py +2 -2
- tapps_agents/core/context_intelligence/relevance_scorer.py +24 -24
- tapps_agents/core/context_intelligence/token_budget_manager.py +27 -27
- tapps_agents/core/context_manager.py +240 -240
- tapps_agents/core/cursor_feedback_monitor.py +146 -146
- tapps_agents/core/cursor_verification.py +290 -290
- tapps_agents/core/customization_loader.py +280 -280
- tapps_agents/core/customization_schema.py +260 -260
- tapps_agents/core/customization_template.py +238 -238
- tapps_agents/core/debug_logger.py +124 -124
- tapps_agents/core/design_validator.py +298 -298
- tapps_agents/core/diagram_generator.py +226 -226
- tapps_agents/core/docker_utils.py +232 -232
- tapps_agents/core/document_generator.py +617 -617
- tapps_agents/core/domain_detector.py +30 -30
- tapps_agents/core/error_envelope.py +454 -454
- tapps_agents/core/error_handler.py +270 -270
- tapps_agents/core/estimation_tracker.py +189 -189
- tapps_agents/core/eval_prompt_engine.py +116 -116
- tapps_agents/core/evaluation_base.py +119 -119
- tapps_agents/core/evaluation_models.py +320 -320
- tapps_agents/core/evaluation_orchestrator.py +225 -225
- tapps_agents/core/evaluators/__init__.py +7 -7
- tapps_agents/core/evaluators/architectural_evaluator.py +205 -205
- tapps_agents/core/evaluators/behavioral_evaluator.py +160 -160
- tapps_agents/core/evaluators/performance_profile_evaluator.py +160 -160
- tapps_agents/core/evaluators/security_posture_evaluator.py +148 -148
- tapps_agents/core/evaluators/spec_compliance_evaluator.py +181 -181
- tapps_agents/core/exceptions.py +107 -107
- tapps_agents/core/expert_config_generator.py +293 -293
- tapps_agents/core/export_schema.py +202 -202
- tapps_agents/core/external_feedback_models.py +102 -102
- tapps_agents/core/external_feedback_storage.py +213 -213
- tapps_agents/core/fallback_strategy.py +314 -314
- tapps_agents/core/feedback_analyzer.py +162 -162
- tapps_agents/core/feedback_collector.py +178 -178
- tapps_agents/core/git_operations.py +445 -445
- tapps_agents/core/hardware_profiler.py +151 -151
- tapps_agents/core/instructions.py +324 -324
- tapps_agents/core/io_guardrails.py +69 -69
- tapps_agents/core/issue_manifest.py +249 -249
- tapps_agents/core/issue_schema.py +139 -139
- tapps_agents/core/json_utils.py +128 -128
- tapps_agents/core/knowledge_graph.py +446 -446
- tapps_agents/core/language_detector.py +296 -296
- tapps_agents/core/learning_confidence.py +242 -242
- tapps_agents/core/learning_dashboard.py +246 -246
- tapps_agents/core/learning_decision.py +384 -384
- tapps_agents/core/learning_explainability.py +578 -578
- tapps_agents/core/learning_export.py +287 -287
- tapps_agents/core/learning_integration.py +228 -228
- tapps_agents/core/llm_behavior.py +232 -232
- tapps_agents/core/long_duration_support.py +786 -786
- tapps_agents/core/mcp_setup.py +106 -106
- tapps_agents/core/memory_integration.py +396 -396
- tapps_agents/core/meta_learning.py +666 -666
- tapps_agents/core/module_path_sanitizer.py +199 -199
- tapps_agents/core/multi_agent_orchestrator.py +382 -382
- tapps_agents/core/network_errors.py +125 -125
- tapps_agents/core/nfr_validator.py +336 -336
- tapps_agents/core/offline_mode.py +158 -158
- tapps_agents/core/output_contracts.py +300 -300
- tapps_agents/core/output_formatter.py +300 -300
- tapps_agents/core/path_normalizer.py +174 -174
- tapps_agents/core/path_validator.py +322 -322
- tapps_agents/core/pattern_library.py +250 -250
- tapps_agents/core/performance_benchmark.py +301 -301
- tapps_agents/core/performance_monitor.py +184 -184
- tapps_agents/core/playwright_mcp_controller.py +771 -771
- tapps_agents/core/policy_loader.py +135 -135
- tapps_agents/core/progress.py +166 -166
- tapps_agents/core/project_profile.py +354 -354
- tapps_agents/core/project_type_detector.py +454 -454
- tapps_agents/core/prompt_base.py +223 -223
- tapps_agents/core/prompt_learning/__init__.py +2 -2
- tapps_agents/core/prompt_learning/learning_loop.py +24 -24
- tapps_agents/core/prompt_learning/project_prompt_store.py +25 -25
- tapps_agents/core/prompt_learning/skills_prompt_analyzer.py +35 -35
- tapps_agents/core/prompt_optimization/__init__.py +6 -6
- tapps_agents/core/prompt_optimization/ab_tester.py +114 -114
- tapps_agents/core/prompt_optimization/correlation_analyzer.py +160 -160
- tapps_agents/core/prompt_optimization/progressive_refiner.py +129 -129
- tapps_agents/core/prompt_optimization/prompt_library.py +37 -37
- tapps_agents/core/requirements_evaluator.py +431 -431
- tapps_agents/core/resource_aware_executor.py +449 -449
- tapps_agents/core/resource_monitor.py +343 -343
- tapps_agents/core/resume_handler.py +298 -298
- tapps_agents/core/retry_handler.py +197 -197
- tapps_agents/core/review_checklists.py +479 -479
- tapps_agents/core/role_loader.py +201 -201
- tapps_agents/core/role_template_loader.py +201 -201
- tapps_agents/core/runtime_mode.py +60 -60
- tapps_agents/core/security_scanner.py +342 -342
- tapps_agents/core/skill_agent_registry.py +194 -194
- tapps_agents/core/skill_integration.py +208 -208
- tapps_agents/core/skill_loader.py +492 -492
- tapps_agents/core/skill_template.py +341 -341
- tapps_agents/core/skill_validator.py +478 -478
- tapps_agents/core/stack_analyzer.py +35 -35
- tapps_agents/core/startup.py +174 -174
- tapps_agents/core/storage_manager.py +397 -397
- tapps_agents/core/storage_models.py +166 -166
- tapps_agents/core/story_evaluator.py +410 -410
- tapps_agents/core/subprocess_utils.py +170 -170
- tapps_agents/core/task_duration.py +296 -296
- tapps_agents/core/task_memory.py +582 -582
- tapps_agents/core/task_state.py +226 -226
- tapps_agents/core/tech_stack_priorities.py +208 -208
- tapps_agents/core/temp_directory.py +194 -194
- tapps_agents/core/template_merger.py +600 -600
- tapps_agents/core/template_selector.py +280 -280
- tapps_agents/core/test_generator.py +286 -286
- tapps_agents/core/tiered_context.py +253 -253
- tapps_agents/core/token_monitor.py +345 -345
- tapps_agents/core/traceability.py +254 -254
- tapps_agents/core/trajectory_tracker.py +50 -50
- tapps_agents/core/unicode_safe.py +143 -143
- tapps_agents/core/unified_cache_config.py +170 -170
- tapps_agents/core/unified_state.py +324 -324
- tapps_agents/core/validate_cursor_setup.py +237 -237
- tapps_agents/core/validation_registry.py +136 -136
- tapps_agents/core/validators/__init__.py +4 -4
- tapps_agents/core/validators/python_validator.py +87 -87
- tapps_agents/core/verification_agent.py +90 -90
- tapps_agents/core/visual_feedback.py +644 -644
- tapps_agents/core/workflow_validator.py +197 -197
- tapps_agents/core/worktree.py +367 -367
- tapps_agents/docker/__init__.py +10 -10
- tapps_agents/docker/analyzer.py +186 -186
- tapps_agents/docker/debugger.py +229 -229
- tapps_agents/docker/error_patterns.py +216 -216
- tapps_agents/epic/__init__.py +22 -22
- tapps_agents/epic/beads_sync.py +115 -115
- tapps_agents/epic/markdown_sync.py +105 -105
- tapps_agents/epic/models.py +96 -96
- tapps_agents/experts/__init__.py +163 -163
- tapps_agents/experts/agent_integration.py +243 -243
- tapps_agents/experts/auto_generator.py +331 -331
- tapps_agents/experts/base_expert.py +536 -536
- tapps_agents/experts/builtin_registry.py +261 -261
- tapps_agents/experts/business_metrics.py +565 -565
- tapps_agents/experts/cache.py +266 -266
- tapps_agents/experts/confidence_breakdown.py +306 -306
- tapps_agents/experts/confidence_calculator.py +336 -336
- tapps_agents/experts/confidence_metrics.py +236 -236
- tapps_agents/experts/domain_config.py +311 -311
- tapps_agents/experts/domain_detector.py +550 -550
- tapps_agents/experts/domain_utils.py +84 -84
- tapps_agents/experts/expert_config.py +113 -113
- tapps_agents/experts/expert_engine.py +465 -465
- tapps_agents/experts/expert_registry.py +744 -744
- tapps_agents/experts/expert_synthesizer.py +70 -70
- tapps_agents/experts/governance.py +197 -197
- tapps_agents/experts/history_logger.py +312 -312
- tapps_agents/experts/knowledge/README.md +180 -180
- tapps_agents/experts/knowledge/accessibility/accessible-forms.md +331 -331
- tapps_agents/experts/knowledge/accessibility/aria-patterns.md +344 -344
- tapps_agents/experts/knowledge/accessibility/color-contrast.md +285 -285
- tapps_agents/experts/knowledge/accessibility/keyboard-navigation.md +332 -332
- tapps_agents/experts/knowledge/accessibility/screen-readers.md +282 -282
- tapps_agents/experts/knowledge/accessibility/semantic-html.md +355 -355
- tapps_agents/experts/knowledge/accessibility/testing-accessibility.md +369 -369
- tapps_agents/experts/knowledge/accessibility/wcag-2.1.md +296 -296
- tapps_agents/experts/knowledge/accessibility/wcag-2.2.md +211 -211
- tapps_agents/experts/knowledge/agent-learning/best-practices.md +715 -715
- tapps_agents/experts/knowledge/agent-learning/pattern-extraction.md +282 -282
- tapps_agents/experts/knowledge/agent-learning/prompt-optimization.md +320 -320
- tapps_agents/experts/knowledge/ai-frameworks/model-optimization.md +90 -90
- tapps_agents/experts/knowledge/ai-frameworks/openvino-patterns.md +260 -260
- tapps_agents/experts/knowledge/api-design-integration/api-gateway-patterns.md +309 -309
- tapps_agents/experts/knowledge/api-design-integration/api-security-patterns.md +521 -521
- tapps_agents/experts/knowledge/api-design-integration/api-versioning.md +421 -421
- tapps_agents/experts/knowledge/api-design-integration/async-protocol-patterns.md +61 -61
- tapps_agents/experts/knowledge/api-design-integration/contract-testing.md +221 -221
- tapps_agents/experts/knowledge/api-design-integration/external-api-integration.md +489 -489
- tapps_agents/experts/knowledge/api-design-integration/fastapi-patterns.md +360 -360
- tapps_agents/experts/knowledge/api-design-integration/fastapi-testing.md +262 -262
- tapps_agents/experts/knowledge/api-design-integration/graphql-patterns.md +582 -582
- tapps_agents/experts/knowledge/api-design-integration/grpc-best-practices.md +499 -499
- tapps_agents/experts/knowledge/api-design-integration/mqtt-patterns.md +455 -455
- tapps_agents/experts/knowledge/api-design-integration/rate-limiting.md +507 -507
- tapps_agents/experts/knowledge/api-design-integration/restful-api-design.md +618 -618
- tapps_agents/experts/knowledge/api-design-integration/websocket-patterns.md +480 -480
- tapps_agents/experts/knowledge/cloud-infrastructure/cloud-native-patterns.md +175 -175
- tapps_agents/experts/knowledge/cloud-infrastructure/container-health-checks.md +261 -261
- tapps_agents/experts/knowledge/cloud-infrastructure/containerization.md +222 -222
- tapps_agents/experts/knowledge/cloud-infrastructure/cost-optimization.md +122 -122
- tapps_agents/experts/knowledge/cloud-infrastructure/disaster-recovery.md +153 -153
- tapps_agents/experts/knowledge/cloud-infrastructure/dockerfile-patterns.md +285 -285
- tapps_agents/experts/knowledge/cloud-infrastructure/infrastructure-as-code.md +187 -187
- tapps_agents/experts/knowledge/cloud-infrastructure/kubernetes-patterns.md +253 -253
- tapps_agents/experts/knowledge/cloud-infrastructure/multi-cloud-strategies.md +155 -155
- tapps_agents/experts/knowledge/cloud-infrastructure/serverless-architecture.md +200 -200
- tapps_agents/experts/knowledge/code-quality-analysis/README.md +16 -16
- tapps_agents/experts/knowledge/code-quality-analysis/code-metrics.md +137 -137
- tapps_agents/experts/knowledge/code-quality-analysis/complexity-analysis.md +181 -181
- tapps_agents/experts/knowledge/code-quality-analysis/technical-debt-patterns.md +191 -191
- tapps_agents/experts/knowledge/data-privacy-compliance/anonymization.md +313 -313
- tapps_agents/experts/knowledge/data-privacy-compliance/ccpa.md +255 -255
- tapps_agents/experts/knowledge/data-privacy-compliance/consent-management.md +282 -282
- tapps_agents/experts/knowledge/data-privacy-compliance/data-minimization.md +275 -275
- tapps_agents/experts/knowledge/data-privacy-compliance/data-retention.md +297 -297
- tapps_agents/experts/knowledge/data-privacy-compliance/data-subject-rights.md +383 -383
- tapps_agents/experts/knowledge/data-privacy-compliance/encryption-privacy.md +285 -285
- tapps_agents/experts/knowledge/data-privacy-compliance/gdpr.md +344 -344
- tapps_agents/experts/knowledge/data-privacy-compliance/hipaa.md +385 -385
- tapps_agents/experts/knowledge/data-privacy-compliance/privacy-by-design.md +280 -280
- tapps_agents/experts/knowledge/database-data-management/acid-vs-cap.md +164 -164
- tapps_agents/experts/knowledge/database-data-management/backup-and-recovery.md +182 -182
- tapps_agents/experts/knowledge/database-data-management/data-modeling.md +172 -172
- tapps_agents/experts/knowledge/database-data-management/database-design.md +187 -187
- tapps_agents/experts/knowledge/database-data-management/flux-query-optimization.md +342 -342
- tapps_agents/experts/knowledge/database-data-management/influxdb-connection-patterns.md +432 -432
- tapps_agents/experts/knowledge/database-data-management/influxdb-patterns.md +442 -442
- tapps_agents/experts/knowledge/database-data-management/migration-strategies.md +216 -216
- tapps_agents/experts/knowledge/database-data-management/nosql-patterns.md +259 -259
- tapps_agents/experts/knowledge/database-data-management/scalability-patterns.md +184 -184
- tapps_agents/experts/knowledge/database-data-management/sql-optimization.md +175 -175
- tapps_agents/experts/knowledge/database-data-management/time-series-modeling.md +444 -444
- tapps_agents/experts/knowledge/development-workflow/README.md +16 -16
- tapps_agents/experts/knowledge/development-workflow/automation-best-practices.md +216 -216
- tapps_agents/experts/knowledge/development-workflow/build-strategies.md +198 -198
- tapps_agents/experts/knowledge/development-workflow/deployment-patterns.md +205 -205
- tapps_agents/experts/knowledge/development-workflow/git-workflows.md +205 -205
- tapps_agents/experts/knowledge/documentation-knowledge-management/README.md +16 -16
- tapps_agents/experts/knowledge/documentation-knowledge-management/api-documentation-patterns.md +231 -231
- tapps_agents/experts/knowledge/documentation-knowledge-management/documentation-standards.md +191 -191
- tapps_agents/experts/knowledge/documentation-knowledge-management/knowledge-management.md +171 -171
- tapps_agents/experts/knowledge/documentation-knowledge-management/technical-writing-guide.md +192 -192
- tapps_agents/experts/knowledge/observability-monitoring/alerting-patterns.md +461 -461
- tapps_agents/experts/knowledge/observability-monitoring/apm-tools.md +459 -459
- tapps_agents/experts/knowledge/observability-monitoring/distributed-tracing.md +367 -367
- tapps_agents/experts/knowledge/observability-monitoring/logging-strategies.md +478 -478
- tapps_agents/experts/knowledge/observability-monitoring/metrics-and-monitoring.md +510 -510
- tapps_agents/experts/knowledge/observability-monitoring/observability-best-practices.md +492 -492
- tapps_agents/experts/knowledge/observability-monitoring/open-telemetry.md +573 -573
- tapps_agents/experts/knowledge/observability-monitoring/slo-sli-sla.md +419 -419
- tapps_agents/experts/knowledge/performance/anti-patterns.md +284 -284
- tapps_agents/experts/knowledge/performance/api-performance.md +256 -256
- tapps_agents/experts/knowledge/performance/caching.md +327 -327
- tapps_agents/experts/knowledge/performance/database-performance.md +252 -252
- tapps_agents/experts/knowledge/performance/optimization-patterns.md +327 -327
- tapps_agents/experts/knowledge/performance/profiling.md +297 -297
- tapps_agents/experts/knowledge/performance/resource-management.md +293 -293
- tapps_agents/experts/knowledge/performance/scalability.md +306 -306
- tapps_agents/experts/knowledge/security/owasp-top10.md +209 -209
- tapps_agents/experts/knowledge/security/secure-coding-practices.md +207 -207
- tapps_agents/experts/knowledge/security/threat-modeling.md +220 -220
- tapps_agents/experts/knowledge/security/vulnerability-patterns.md +342 -342
- tapps_agents/experts/knowledge/software-architecture/docker-compose-patterns.md +314 -314
- tapps_agents/experts/knowledge/software-architecture/microservices-patterns.md +379 -379
- tapps_agents/experts/knowledge/software-architecture/service-communication.md +316 -316
- tapps_agents/experts/knowledge/testing/best-practices.md +310 -310
- tapps_agents/experts/knowledge/testing/coverage-analysis.md +293 -293
- tapps_agents/experts/knowledge/testing/mocking.md +256 -256
- tapps_agents/experts/knowledge/testing/test-automation.md +276 -276
- tapps_agents/experts/knowledge/testing/test-data.md +271 -271
- tapps_agents/experts/knowledge/testing/test-design-patterns.md +280 -280
- tapps_agents/experts/knowledge/testing/test-maintenance.md +236 -236
- tapps_agents/experts/knowledge/testing/test-strategies.md +311 -311
- tapps_agents/experts/knowledge/user-experience/information-architecture.md +325 -325
- tapps_agents/experts/knowledge/user-experience/interaction-design.md +363 -363
- tapps_agents/experts/knowledge/user-experience/prototyping.md +293 -293
- tapps_agents/experts/knowledge/user-experience/usability-heuristics.md +337 -337
- tapps_agents/experts/knowledge/user-experience/usability-testing.md +311 -311
- tapps_agents/experts/knowledge/user-experience/user-journeys.md +296 -296
- tapps_agents/experts/knowledge/user-experience/user-research.md +373 -373
- tapps_agents/experts/knowledge/user-experience/ux-principles.md +340 -340
- tapps_agents/experts/knowledge_freshness.py +321 -321
- tapps_agents/experts/knowledge_ingestion.py +438 -438
- tapps_agents/experts/knowledge_need_detector.py +93 -93
- tapps_agents/experts/knowledge_validator.py +382 -382
- tapps_agents/experts/observability.py +440 -440
- tapps_agents/experts/passive_notifier.py +238 -238
- tapps_agents/experts/proactive_orchestrator.py +32 -32
- tapps_agents/experts/rag_chunker.py +205 -205
- tapps_agents/experts/rag_embedder.py +152 -152
- tapps_agents/experts/rag_evaluation.py +299 -299
- tapps_agents/experts/rag_index.py +303 -303
- tapps_agents/experts/rag_metrics.py +293 -293
- tapps_agents/experts/rag_safety.py +263 -263
- tapps_agents/experts/report_generator.py +296 -296
- tapps_agents/experts/setup_wizard.py +441 -441
- tapps_agents/experts/simple_rag.py +431 -431
- tapps_agents/experts/vector_rag.py +354 -354
- tapps_agents/experts/weight_distributor.py +304 -304
- tapps_agents/health/__init__.py +24 -24
- tapps_agents/health/base.py +75 -75
- tapps_agents/health/checks/__init__.py +22 -22
- tapps_agents/health/checks/automation.py +127 -127
- tapps_agents/health/checks/context7_cache.py +210 -210
- tapps_agents/health/checks/environment.py +116 -116
- tapps_agents/health/checks/execution.py +170 -170
- tapps_agents/health/checks/knowledge_base.py +187 -187
- tapps_agents/health/checks/outcomes.py +324 -324
- tapps_agents/health/collector.py +280 -280
- tapps_agents/health/dashboard.py +137 -137
- tapps_agents/health/metrics.py +151 -151
- tapps_agents/health/orchestrator.py +271 -271
- tapps_agents/health/registry.py +166 -166
- tapps_agents/hooks/__init__.py +33 -33
- tapps_agents/hooks/config.py +140 -140
- tapps_agents/hooks/events.py +135 -135
- tapps_agents/hooks/executor.py +128 -128
- tapps_agents/hooks/manager.py +143 -143
- tapps_agents/integration/__init__.py +8 -8
- tapps_agents/integration/service_integrator.py +121 -121
- tapps_agents/integrations/__init__.py +10 -10
- tapps_agents/integrations/clawdbot.py +525 -525
- tapps_agents/integrations/memory_bridge.py +356 -356
- tapps_agents/mcp/__init__.py +18 -18
- tapps_agents/mcp/gateway.py +112 -112
- tapps_agents/mcp/servers/__init__.py +13 -13
- tapps_agents/mcp/servers/analysis.py +204 -204
- tapps_agents/mcp/servers/context7.py +198 -198
- tapps_agents/mcp/servers/filesystem.py +218 -218
- tapps_agents/mcp/servers/git.py +201 -201
- tapps_agents/mcp/tool_registry.py +115 -115
- tapps_agents/quality/__init__.py +54 -54
- tapps_agents/quality/coverage_analyzer.py +379 -379
- tapps_agents/quality/enforcement.py +82 -82
- tapps_agents/quality/gates/__init__.py +37 -37
- tapps_agents/quality/gates/approval_gate.py +255 -255
- tapps_agents/quality/gates/base.py +84 -84
- tapps_agents/quality/gates/exceptions.py +43 -43
- tapps_agents/quality/gates/policy_gate.py +195 -195
- tapps_agents/quality/gates/registry.py +239 -239
- tapps_agents/quality/gates/security_gate.py +156 -156
- tapps_agents/quality/quality_gates.py +369 -369
- tapps_agents/quality/secret_scanner.py +335 -335
- tapps_agents/session/__init__.py +19 -19
- tapps_agents/session/manager.py +256 -256
- tapps_agents/simple_mode/__init__.py +66 -66
- tapps_agents/simple_mode/agent_contracts.py +357 -357
- tapps_agents/simple_mode/beads_hooks.py +151 -151
- tapps_agents/simple_mode/code_snippet_handler.py +382 -382
- tapps_agents/simple_mode/documentation_manager.py +395 -395
- tapps_agents/simple_mode/documentation_reader.py +187 -187
- tapps_agents/simple_mode/file_inference.py +292 -292
- tapps_agents/simple_mode/framework_change_detector.py +268 -268
- tapps_agents/simple_mode/intent_parser.py +510 -510
- tapps_agents/simple_mode/learning_progression.py +358 -358
- tapps_agents/simple_mode/nl_handler.py +700 -700
- tapps_agents/simple_mode/onboarding.py +253 -253
- tapps_agents/simple_mode/orchestrators/__init__.py +38 -38
- tapps_agents/simple_mode/orchestrators/base.py +185 -185
- tapps_agents/simple_mode/orchestrators/breakdown_orchestrator.py +49 -49
- tapps_agents/simple_mode/orchestrators/brownfield_orchestrator.py +135 -135
- tapps_agents/simple_mode/orchestrators/build_orchestrator.py +2700 -2667
- tapps_agents/simple_mode/orchestrators/deliverable_checklist.py +349 -349
- tapps_agents/simple_mode/orchestrators/enhance_orchestrator.py +53 -53
- tapps_agents/simple_mode/orchestrators/epic_orchestrator.py +122 -122
- tapps_agents/simple_mode/orchestrators/explore_orchestrator.py +184 -184
- tapps_agents/simple_mode/orchestrators/fix_orchestrator.py +723 -723
- tapps_agents/simple_mode/orchestrators/plan_analysis_orchestrator.py +206 -206
- tapps_agents/simple_mode/orchestrators/pr_orchestrator.py +237 -237
- tapps_agents/simple_mode/orchestrators/refactor_orchestrator.py +222 -222
- tapps_agents/simple_mode/orchestrators/requirements_tracer.py +262 -262
- tapps_agents/simple_mode/orchestrators/resume_orchestrator.py +210 -210
- tapps_agents/simple_mode/orchestrators/review_orchestrator.py +161 -161
- tapps_agents/simple_mode/orchestrators/test_orchestrator.py +82 -82
- tapps_agents/simple_mode/output_aggregator.py +340 -340
- tapps_agents/simple_mode/result_formatters.py +598 -598
- tapps_agents/simple_mode/step_dependencies.py +382 -382
- tapps_agents/simple_mode/step_results.py +276 -276
- tapps_agents/simple_mode/streaming.py +388 -388
- tapps_agents/simple_mode/variations.py +129 -129
- tapps_agents/simple_mode/visual_feedback.py +238 -238
- tapps_agents/simple_mode/zero_config.py +274 -274
- tapps_agents/suggestions/__init__.py +8 -8
- tapps_agents/suggestions/inline_suggester.py +52 -52
- tapps_agents/templates/__init__.py +8 -8
- tapps_agents/templates/microservice_generator.py +274 -274
- tapps_agents/utils/env_validator.py +291 -291
- tapps_agents/workflow/__init__.py +171 -171
- tapps_agents/workflow/acceptance_verifier.py +132 -132
- tapps_agents/workflow/agent_handlers/__init__.py +41 -41
- tapps_agents/workflow/agent_handlers/analyst_handler.py +75 -75
- tapps_agents/workflow/agent_handlers/architect_handler.py +107 -107
- tapps_agents/workflow/agent_handlers/base.py +84 -84
- tapps_agents/workflow/agent_handlers/debugger_handler.py +100 -100
- tapps_agents/workflow/agent_handlers/designer_handler.py +110 -110
- tapps_agents/workflow/agent_handlers/documenter_handler.py +94 -94
- tapps_agents/workflow/agent_handlers/implementer_handler.py +235 -235
- tapps_agents/workflow/agent_handlers/ops_handler.py +62 -62
- tapps_agents/workflow/agent_handlers/orchestrator_handler.py +43 -43
- tapps_agents/workflow/agent_handlers/planner_handler.py +98 -98
- tapps_agents/workflow/agent_handlers/registry.py +119 -119
- tapps_agents/workflow/agent_handlers/reviewer_handler.py +119 -119
- tapps_agents/workflow/agent_handlers/tester_handler.py +69 -69
- tapps_agents/workflow/analytics_accessor.py +337 -337
- tapps_agents/workflow/analytics_alerts.py +416 -416
- tapps_agents/workflow/analytics_dashboard_cursor.py +281 -281
- tapps_agents/workflow/analytics_dual_write.py +103 -103
- tapps_agents/workflow/analytics_integration.py +119 -119
- tapps_agents/workflow/analytics_query_parser.py +278 -278
- tapps_agents/workflow/analytics_visualizer.py +259 -259
- tapps_agents/workflow/artifact_helper.py +204 -204
- tapps_agents/workflow/audit_logger.py +263 -263
- tapps_agents/workflow/auto_execution_config.py +340 -340
- tapps_agents/workflow/auto_progression.py +586 -586
- tapps_agents/workflow/branch_cleanup.py +349 -349
- tapps_agents/workflow/checkpoint.py +256 -256
- tapps_agents/workflow/checkpoint_manager.py +178 -178
- tapps_agents/workflow/code_artifact.py +179 -179
- tapps_agents/workflow/common_enums.py +96 -96
- tapps_agents/workflow/confirmation_handler.py +130 -130
- tapps_agents/workflow/context_analyzer.py +222 -222
- tapps_agents/workflow/context_artifact.py +230 -230
- tapps_agents/workflow/cursor_chat.py +94 -94
- tapps_agents/workflow/cursor_executor.py +2337 -2196
- tapps_agents/workflow/cursor_skill_helper.py +516 -516
- tapps_agents/workflow/dependency_resolver.py +244 -244
- tapps_agents/workflow/design_artifact.py +156 -156
- tapps_agents/workflow/detector.py +751 -751
- tapps_agents/workflow/direct_execution_fallback.py +301 -301
- tapps_agents/workflow/docs_artifact.py +168 -168
- tapps_agents/workflow/enforcer.py +389 -389
- tapps_agents/workflow/enhancement_artifact.py +142 -142
- tapps_agents/workflow/error_recovery.py +806 -806
- tapps_agents/workflow/event_bus.py +183 -183
- tapps_agents/workflow/event_log.py +612 -612
- tapps_agents/workflow/events.py +63 -63
- tapps_agents/workflow/exceptions.py +43 -43
- tapps_agents/workflow/execution_graph.py +498 -498
- tapps_agents/workflow/execution_plan.py +126 -126
- tapps_agents/workflow/file_utils.py +186 -186
- tapps_agents/workflow/gate_evaluator.py +182 -182
- tapps_agents/workflow/gate_integration.py +200 -200
- tapps_agents/workflow/graph_visualizer.py +130 -130
- tapps_agents/workflow/health_checker.py +206 -206
- tapps_agents/workflow/logging_helper.py +243 -243
- tapps_agents/workflow/manifest.py +582 -582
- tapps_agents/workflow/marker_writer.py +250 -250
- tapps_agents/workflow/message_formatter.py +188 -188
- tapps_agents/workflow/messaging.py +325 -325
- tapps_agents/workflow/metadata_models.py +91 -91
- tapps_agents/workflow/metrics_integration.py +226 -226
- tapps_agents/workflow/migration_utils.py +116 -116
- tapps_agents/workflow/models.py +148 -111
- tapps_agents/workflow/nlp_config.py +198 -198
- tapps_agents/workflow/nlp_error_handler.py +207 -207
- tapps_agents/workflow/nlp_executor.py +163 -163
- tapps_agents/workflow/nlp_parser.py +528 -528
- tapps_agents/workflow/observability_dashboard.py +451 -451
- tapps_agents/workflow/observer.py +170 -170
- tapps_agents/workflow/ops_artifact.py +257 -257
- tapps_agents/workflow/output_passing.py +214 -214
- tapps_agents/workflow/parallel_executor.py +463 -463
- tapps_agents/workflow/planning_artifact.py +179 -179
- tapps_agents/workflow/preset_loader.py +285 -285
- tapps_agents/workflow/preset_recommender.py +270 -270
- tapps_agents/workflow/progress_logger.py +145 -145
- tapps_agents/workflow/progress_manager.py +303 -303
- tapps_agents/workflow/progress_monitor.py +186 -186
- tapps_agents/workflow/progress_updates.py +423 -423
- tapps_agents/workflow/quality_artifact.py +158 -158
- tapps_agents/workflow/quality_loopback.py +101 -101
- tapps_agents/workflow/recommender.py +387 -387
- tapps_agents/workflow/remediation_loop.py +166 -166
- tapps_agents/workflow/result_aggregator.py +300 -300
- tapps_agents/workflow/review_artifact.py +185 -185
- tapps_agents/workflow/schema_validator.py +522 -522
- tapps_agents/workflow/session_handoff.py +178 -178
- tapps_agents/workflow/skill_invoker.py +648 -648
- tapps_agents/workflow/state_manager.py +756 -756
- tapps_agents/workflow/state_persistence_config.py +331 -331
- tapps_agents/workflow/status_monitor.py +449 -449
- tapps_agents/workflow/step_checkpoint.py +314 -314
- tapps_agents/workflow/step_details.py +201 -201
- tapps_agents/workflow/story_models.py +147 -147
- tapps_agents/workflow/streaming.py +416 -416
- tapps_agents/workflow/suggestion_engine.py +552 -552
- tapps_agents/workflow/testing_artifact.py +186 -186
- tapps_agents/workflow/timeline.py +158 -158
- tapps_agents/workflow/token_integration.py +209 -209
- tapps_agents/workflow/validation.py +217 -217
- tapps_agents/workflow/visual_feedback.py +391 -391
- tapps_agents/workflow/workflow_chain.py +95 -95
- tapps_agents/workflow/workflow_summary.py +219 -219
- tapps_agents/workflow/worktree_manager.py +724 -724
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/METADATA +672 -672
- tapps_agents-3.6.0.dist-info/RECORD +758 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/licenses/LICENSE +22 -22
- tapps_agents/health/checks/outcomes.backup_20260204_064058.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +0 -324
- tapps_agents-3.5.40.dist-info/RECORD +0 -760
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/WHEEL +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1,250 +1,250 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Design Pattern Library - Catalog of design patterns with recommendations.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from dataclasses import dataclass, field
|
|
7
|
-
from typing import Any
|
|
8
|
-
|
|
9
|
-
logger = logging.getLogger(__name__)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@dataclass
|
|
13
|
-
class DesignPattern:
|
|
14
|
-
"""A design pattern definition."""
|
|
15
|
-
|
|
16
|
-
name: str
|
|
17
|
-
category: str # "creational", "structural", "behavioral", "architectural"
|
|
18
|
-
description: str
|
|
19
|
-
use_cases: list[str] = field(default_factory=list)
|
|
20
|
-
benefits: list[str] = field(default_factory=list)
|
|
21
|
-
drawbacks: list[str] = field(default_factory=list)
|
|
22
|
-
when_to_use: list[str] = field(default_factory=list)
|
|
23
|
-
when_not_to_use: list[str] = field(default_factory=list)
|
|
24
|
-
related_patterns: list[str] = field(default_factory=list)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class DesignPatternLibrary:
|
|
28
|
-
"""Library of design patterns with recommendation engine."""
|
|
29
|
-
|
|
30
|
-
def __init__(self):
|
|
31
|
-
"""Initialize pattern library with common patterns."""
|
|
32
|
-
self.patterns: dict[str, DesignPattern] = {}
|
|
33
|
-
self._initialize_patterns()
|
|
34
|
-
|
|
35
|
-
def _initialize_patterns(self):
|
|
36
|
-
"""Initialize common design patterns."""
|
|
37
|
-
# Architectural Patterns
|
|
38
|
-
self.patterns["layered"] = DesignPattern(
|
|
39
|
-
name="Layered Architecture",
|
|
40
|
-
category="architectural",
|
|
41
|
-
description="Organizes system into horizontal layers with clear separation of concerns",
|
|
42
|
-
use_cases=["Enterprise applications", "Business applications", "Traditional web apps"],
|
|
43
|
-
benefits=["Clear separation of concerns", "Easy to understand", "Testable"],
|
|
44
|
-
drawbacks=["Can lead to performance issues", "May create unnecessary layers"],
|
|
45
|
-
when_to_use=["Complex business logic", "Need clear separation", "Team familiarity"],
|
|
46
|
-
when_not_to_use=["Simple applications", "Performance-critical systems"],
|
|
47
|
-
related_patterns=["microservices", "hexagonal"],
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
self.patterns["microservices"] = DesignPattern(
|
|
51
|
-
name="Microservices",
|
|
52
|
-
category="architectural",
|
|
53
|
-
description="Decomposes application into small, independent services",
|
|
54
|
-
use_cases=["Large scale applications", "Multiple teams", "Independent scaling"],
|
|
55
|
-
benefits=["Independent deployment", "Technology diversity", "Scalability"],
|
|
56
|
-
drawbacks=["Complexity", "Network latency", "Data consistency"],
|
|
57
|
-
when_to_use=["Large teams", "Need independent scaling", "Different tech stacks"],
|
|
58
|
-
when_not_to_use=["Small applications", "Tight coupling required"],
|
|
59
|
-
related_patterns=["api-gateway", "service-mesh"],
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
self.patterns["mvc"] = DesignPattern(
|
|
63
|
-
name="Model-View-Controller",
|
|
64
|
-
category="architectural",
|
|
65
|
-
description="Separates application into Model (data), View (UI), Controller (logic)",
|
|
66
|
-
use_cases=["Web applications", "Desktop applications", "User interfaces"],
|
|
67
|
-
benefits=["Separation of concerns", "Reusability", "Testability"],
|
|
68
|
-
drawbacks=["Can become complex", "Tight coupling in some implementations"],
|
|
69
|
-
when_to_use=["User interface applications", "Need separation of UI and logic"],
|
|
70
|
-
when_not_to_use=["API-only applications", "Simple CRUD apps"],
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
# Structural Patterns
|
|
74
|
-
self.patterns["repository"] = DesignPattern(
|
|
75
|
-
name="Repository Pattern",
|
|
76
|
-
category="structural",
|
|
77
|
-
description="Abstracts data access layer, provides collection-like interface",
|
|
78
|
-
use_cases=["Data access abstraction", "Testing", "Multiple data sources"],
|
|
79
|
-
benefits=["Testability", "Flexibility", "Separation of concerns"],
|
|
80
|
-
drawbacks=["Additional abstraction layer", "Can be overkill for simple cases"],
|
|
81
|
-
when_to_use=["Need to abstract data access", "Multiple data sources", "Testing"],
|
|
82
|
-
when_not_to_use=["Simple CRUD", "Direct database access sufficient"],
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
self.patterns["factory"] = DesignPattern(
|
|
86
|
-
name="Factory Pattern",
|
|
87
|
-
category="creational",
|
|
88
|
-
description="Creates objects without specifying exact class",
|
|
89
|
-
use_cases=["Object creation", "Dependency injection", "Polymorphism"],
|
|
90
|
-
benefits=["Flexibility", "Extensibility", "Decoupling"],
|
|
91
|
-
drawbacks=["Complexity", "Additional classes"],
|
|
92
|
-
when_to_use=["Multiple object types", "Runtime object creation", "Extensibility"],
|
|
93
|
-
when_not_to_use=["Simple object creation", "Fixed object types"],
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
# Behavioral Patterns
|
|
97
|
-
self.patterns["strategy"] = DesignPattern(
|
|
98
|
-
name="Strategy Pattern",
|
|
99
|
-
category="behavioral",
|
|
100
|
-
description="Defines family of algorithms, makes them interchangeable",
|
|
101
|
-
use_cases=["Multiple algorithms", "Runtime algorithm selection", "Extensibility"],
|
|
102
|
-
benefits=["Flexibility", "Extensibility", "Testability"],
|
|
103
|
-
drawbacks=["Additional classes", "Complexity"],
|
|
104
|
-
when_to_use=["Multiple ways to do something", "Need to switch algorithms"],
|
|
105
|
-
when_not_to_use=["Single algorithm", "Simple logic"],
|
|
106
|
-
)
|
|
107
|
-
|
|
108
|
-
def suggest_patterns(self, requirements: dict[str, Any], context: dict[str, Any] | None = None) -> list[dict[str, Any]]:
|
|
109
|
-
"""
|
|
110
|
-
Suggest design patterns based on requirements and context.
|
|
111
|
-
|
|
112
|
-
Args:
|
|
113
|
-
requirements: Requirements dict
|
|
114
|
-
context: Optional context (existing architecture, team size, etc.)
|
|
115
|
-
|
|
116
|
-
Returns:
|
|
117
|
-
List of suggested patterns with scores
|
|
118
|
-
"""
|
|
119
|
-
suggestions = []
|
|
120
|
-
|
|
121
|
-
req_text = str(requirements).lower()
|
|
122
|
-
context_text = str(context).lower() if context else ""
|
|
123
|
-
|
|
124
|
-
# Score each pattern
|
|
125
|
-
for pattern_name, pattern in self.patterns.items():
|
|
126
|
-
score = 0.0
|
|
127
|
-
reasons = []
|
|
128
|
-
|
|
129
|
-
# Check use cases
|
|
130
|
-
for use_case in pattern.use_cases:
|
|
131
|
-
if use_case.lower() in req_text or use_case.lower() in context_text:
|
|
132
|
-
score += 20.0
|
|
133
|
-
reasons.append(f"Matches use case: {use_case}")
|
|
134
|
-
|
|
135
|
-
# Check when_to_use criteria
|
|
136
|
-
for criterion in pattern.when_to_use:
|
|
137
|
-
if criterion.lower() in req_text or criterion.lower() in context_text:
|
|
138
|
-
score += 15.0
|
|
139
|
-
reasons.append(f"Applies: {criterion}")
|
|
140
|
-
|
|
141
|
-
# Check when_not_to_use (negative scoring)
|
|
142
|
-
for criterion in pattern.when_not_to_use:
|
|
143
|
-
if criterion.lower() in req_text or criterion.lower() in context_text:
|
|
144
|
-
score -= 30.0
|
|
145
|
-
reasons.append(f"Not recommended: {criterion}")
|
|
146
|
-
|
|
147
|
-
# Check pattern name/keywords in requirements
|
|
148
|
-
if pattern.name.lower() in req_text:
|
|
149
|
-
score += 25.0
|
|
150
|
-
reasons.append("Pattern explicitly mentioned")
|
|
151
|
-
|
|
152
|
-
if score > 0:
|
|
153
|
-
suggestions.append(
|
|
154
|
-
{
|
|
155
|
-
"pattern": pattern_name,
|
|
156
|
-
"name": pattern.name,
|
|
157
|
-
"category": pattern.category,
|
|
158
|
-
"score": score,
|
|
159
|
-
"reasons": reasons,
|
|
160
|
-
"description": pattern.description,
|
|
161
|
-
"benefits": pattern.benefits,
|
|
162
|
-
"drawbacks": pattern.drawbacks,
|
|
163
|
-
}
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
# Sort by score (descending)
|
|
167
|
-
suggestions.sort(key=lambda x: x["score"], reverse=True)
|
|
168
|
-
|
|
169
|
-
return suggestions[:5] # Top 5 suggestions
|
|
170
|
-
|
|
171
|
-
def check_pattern_compliance(self, architecture: dict[str, Any], pattern_name: str) -> dict[str, Any]:
|
|
172
|
-
"""
|
|
173
|
-
Check if architecture complies with a design pattern.
|
|
174
|
-
|
|
175
|
-
Args:
|
|
176
|
-
architecture: Architecture document
|
|
177
|
-
pattern_name: Name of pattern to check
|
|
178
|
-
|
|
179
|
-
Returns:
|
|
180
|
-
Compliance report
|
|
181
|
-
"""
|
|
182
|
-
pattern = self.patterns.get(pattern_name)
|
|
183
|
-
if not pattern:
|
|
184
|
-
return {"error": f"Pattern not found: {pattern_name}"}
|
|
185
|
-
|
|
186
|
-
arch_text = str(architecture).lower()
|
|
187
|
-
compliance_score = 100.0
|
|
188
|
-
violations = []
|
|
189
|
-
matches = []
|
|
190
|
-
|
|
191
|
-
# Pattern-specific compliance checks
|
|
192
|
-
if pattern_name == "layered":
|
|
193
|
-
layers = architecture.get("layers", [])
|
|
194
|
-
if not layers:
|
|
195
|
-
compliance_score -= 50.0
|
|
196
|
-
violations.append("No layers defined")
|
|
197
|
-
else:
|
|
198
|
-
matches.append(f"Has {len(layers)} layers")
|
|
199
|
-
|
|
200
|
-
elif pattern_name == "microservices":
|
|
201
|
-
services = architecture.get("services", [])
|
|
202
|
-
if not services:
|
|
203
|
-
compliance_score -= 50.0
|
|
204
|
-
violations.append("No services defined")
|
|
205
|
-
else:
|
|
206
|
-
matches.append(f"Has {len(services)} services")
|
|
207
|
-
|
|
208
|
-
elif pattern_name == "mvc":
|
|
209
|
-
components = architecture.get("components", [])
|
|
210
|
-
component_names = [c.get("name", "").lower() if isinstance(c, dict) else str(c).lower() for c in components]
|
|
211
|
-
has_model = any("model" in name for name in component_names)
|
|
212
|
-
has_view = any("view" in name for name in component_names)
|
|
213
|
-
has_controller = any("controller" in name for name in component_names)
|
|
214
|
-
|
|
215
|
-
if not has_model:
|
|
216
|
-
compliance_score -= 33.0
|
|
217
|
-
violations.append("Missing Model component")
|
|
218
|
-
else:
|
|
219
|
-
matches.append("Has Model component")
|
|
220
|
-
|
|
221
|
-
if not has_view:
|
|
222
|
-
compliance_score -= 33.0
|
|
223
|
-
violations.append("Missing View component")
|
|
224
|
-
else:
|
|
225
|
-
matches.append("Has View component")
|
|
226
|
-
|
|
227
|
-
if not has_controller:
|
|
228
|
-
compliance_score -= 34.0
|
|
229
|
-
violations.append("Missing Controller component")
|
|
230
|
-
else:
|
|
231
|
-
matches.append("Has Controller component")
|
|
232
|
-
|
|
233
|
-
return {
|
|
234
|
-
"pattern": pattern_name,
|
|
235
|
-
"compliance_score": max(0.0, compliance_score),
|
|
236
|
-
"is_compliant": compliance_score >= 70.0,
|
|
237
|
-
"violations": violations,
|
|
238
|
-
"matches": matches,
|
|
239
|
-
"pattern_description": pattern.description,
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
def get_pattern(self, pattern_name: str) -> DesignPattern | None:
|
|
243
|
-
"""Get pattern by name."""
|
|
244
|
-
return self.patterns.get(pattern_name)
|
|
245
|
-
|
|
246
|
-
def list_patterns(self, category: str | None = None) -> list[DesignPattern]:
|
|
247
|
-
"""List all patterns, optionally filtered by category."""
|
|
248
|
-
if category:
|
|
249
|
-
return [p for p in self.patterns.values() if p.category == category]
|
|
250
|
-
return list(self.patterns.values())
|
|
1
|
+
"""
|
|
2
|
+
Design Pattern Library - Catalog of design patterns with recommendations.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class DesignPattern:
|
|
14
|
+
"""A design pattern definition."""
|
|
15
|
+
|
|
16
|
+
name: str
|
|
17
|
+
category: str # "creational", "structural", "behavioral", "architectural"
|
|
18
|
+
description: str
|
|
19
|
+
use_cases: list[str] = field(default_factory=list)
|
|
20
|
+
benefits: list[str] = field(default_factory=list)
|
|
21
|
+
drawbacks: list[str] = field(default_factory=list)
|
|
22
|
+
when_to_use: list[str] = field(default_factory=list)
|
|
23
|
+
when_not_to_use: list[str] = field(default_factory=list)
|
|
24
|
+
related_patterns: list[str] = field(default_factory=list)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DesignPatternLibrary:
|
|
28
|
+
"""Library of design patterns with recommendation engine."""
|
|
29
|
+
|
|
30
|
+
def __init__(self):
|
|
31
|
+
"""Initialize pattern library with common patterns."""
|
|
32
|
+
self.patterns: dict[str, DesignPattern] = {}
|
|
33
|
+
self._initialize_patterns()
|
|
34
|
+
|
|
35
|
+
def _initialize_patterns(self):
|
|
36
|
+
"""Initialize common design patterns."""
|
|
37
|
+
# Architectural Patterns
|
|
38
|
+
self.patterns["layered"] = DesignPattern(
|
|
39
|
+
name="Layered Architecture",
|
|
40
|
+
category="architectural",
|
|
41
|
+
description="Organizes system into horizontal layers with clear separation of concerns",
|
|
42
|
+
use_cases=["Enterprise applications", "Business applications", "Traditional web apps"],
|
|
43
|
+
benefits=["Clear separation of concerns", "Easy to understand", "Testable"],
|
|
44
|
+
drawbacks=["Can lead to performance issues", "May create unnecessary layers"],
|
|
45
|
+
when_to_use=["Complex business logic", "Need clear separation", "Team familiarity"],
|
|
46
|
+
when_not_to_use=["Simple applications", "Performance-critical systems"],
|
|
47
|
+
related_patterns=["microservices", "hexagonal"],
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
self.patterns["microservices"] = DesignPattern(
|
|
51
|
+
name="Microservices",
|
|
52
|
+
category="architectural",
|
|
53
|
+
description="Decomposes application into small, independent services",
|
|
54
|
+
use_cases=["Large scale applications", "Multiple teams", "Independent scaling"],
|
|
55
|
+
benefits=["Independent deployment", "Technology diversity", "Scalability"],
|
|
56
|
+
drawbacks=["Complexity", "Network latency", "Data consistency"],
|
|
57
|
+
when_to_use=["Large teams", "Need independent scaling", "Different tech stacks"],
|
|
58
|
+
when_not_to_use=["Small applications", "Tight coupling required"],
|
|
59
|
+
related_patterns=["api-gateway", "service-mesh"],
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
self.patterns["mvc"] = DesignPattern(
|
|
63
|
+
name="Model-View-Controller",
|
|
64
|
+
category="architectural",
|
|
65
|
+
description="Separates application into Model (data), View (UI), Controller (logic)",
|
|
66
|
+
use_cases=["Web applications", "Desktop applications", "User interfaces"],
|
|
67
|
+
benefits=["Separation of concerns", "Reusability", "Testability"],
|
|
68
|
+
drawbacks=["Can become complex", "Tight coupling in some implementations"],
|
|
69
|
+
when_to_use=["User interface applications", "Need separation of UI and logic"],
|
|
70
|
+
when_not_to_use=["API-only applications", "Simple CRUD apps"],
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Structural Patterns
|
|
74
|
+
self.patterns["repository"] = DesignPattern(
|
|
75
|
+
name="Repository Pattern",
|
|
76
|
+
category="structural",
|
|
77
|
+
description="Abstracts data access layer, provides collection-like interface",
|
|
78
|
+
use_cases=["Data access abstraction", "Testing", "Multiple data sources"],
|
|
79
|
+
benefits=["Testability", "Flexibility", "Separation of concerns"],
|
|
80
|
+
drawbacks=["Additional abstraction layer", "Can be overkill for simple cases"],
|
|
81
|
+
when_to_use=["Need to abstract data access", "Multiple data sources", "Testing"],
|
|
82
|
+
when_not_to_use=["Simple CRUD", "Direct database access sufficient"],
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
self.patterns["factory"] = DesignPattern(
|
|
86
|
+
name="Factory Pattern",
|
|
87
|
+
category="creational",
|
|
88
|
+
description="Creates objects without specifying exact class",
|
|
89
|
+
use_cases=["Object creation", "Dependency injection", "Polymorphism"],
|
|
90
|
+
benefits=["Flexibility", "Extensibility", "Decoupling"],
|
|
91
|
+
drawbacks=["Complexity", "Additional classes"],
|
|
92
|
+
when_to_use=["Multiple object types", "Runtime object creation", "Extensibility"],
|
|
93
|
+
when_not_to_use=["Simple object creation", "Fixed object types"],
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
# Behavioral Patterns
|
|
97
|
+
self.patterns["strategy"] = DesignPattern(
|
|
98
|
+
name="Strategy Pattern",
|
|
99
|
+
category="behavioral",
|
|
100
|
+
description="Defines family of algorithms, makes them interchangeable",
|
|
101
|
+
use_cases=["Multiple algorithms", "Runtime algorithm selection", "Extensibility"],
|
|
102
|
+
benefits=["Flexibility", "Extensibility", "Testability"],
|
|
103
|
+
drawbacks=["Additional classes", "Complexity"],
|
|
104
|
+
when_to_use=["Multiple ways to do something", "Need to switch algorithms"],
|
|
105
|
+
when_not_to_use=["Single algorithm", "Simple logic"],
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
def suggest_patterns(self, requirements: dict[str, Any], context: dict[str, Any] | None = None) -> list[dict[str, Any]]:
|
|
109
|
+
"""
|
|
110
|
+
Suggest design patterns based on requirements and context.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
requirements: Requirements dict
|
|
114
|
+
context: Optional context (existing architecture, team size, etc.)
|
|
115
|
+
|
|
116
|
+
Returns:
|
|
117
|
+
List of suggested patterns with scores
|
|
118
|
+
"""
|
|
119
|
+
suggestions = []
|
|
120
|
+
|
|
121
|
+
req_text = str(requirements).lower()
|
|
122
|
+
context_text = str(context).lower() if context else ""
|
|
123
|
+
|
|
124
|
+
# Score each pattern
|
|
125
|
+
for pattern_name, pattern in self.patterns.items():
|
|
126
|
+
score = 0.0
|
|
127
|
+
reasons = []
|
|
128
|
+
|
|
129
|
+
# Check use cases
|
|
130
|
+
for use_case in pattern.use_cases:
|
|
131
|
+
if use_case.lower() in req_text or use_case.lower() in context_text:
|
|
132
|
+
score += 20.0
|
|
133
|
+
reasons.append(f"Matches use case: {use_case}")
|
|
134
|
+
|
|
135
|
+
# Check when_to_use criteria
|
|
136
|
+
for criterion in pattern.when_to_use:
|
|
137
|
+
if criterion.lower() in req_text or criterion.lower() in context_text:
|
|
138
|
+
score += 15.0
|
|
139
|
+
reasons.append(f"Applies: {criterion}")
|
|
140
|
+
|
|
141
|
+
# Check when_not_to_use (negative scoring)
|
|
142
|
+
for criterion in pattern.when_not_to_use:
|
|
143
|
+
if criterion.lower() in req_text or criterion.lower() in context_text:
|
|
144
|
+
score -= 30.0
|
|
145
|
+
reasons.append(f"Not recommended: {criterion}")
|
|
146
|
+
|
|
147
|
+
# Check pattern name/keywords in requirements
|
|
148
|
+
if pattern.name.lower() in req_text:
|
|
149
|
+
score += 25.0
|
|
150
|
+
reasons.append("Pattern explicitly mentioned")
|
|
151
|
+
|
|
152
|
+
if score > 0:
|
|
153
|
+
suggestions.append(
|
|
154
|
+
{
|
|
155
|
+
"pattern": pattern_name,
|
|
156
|
+
"name": pattern.name,
|
|
157
|
+
"category": pattern.category,
|
|
158
|
+
"score": score,
|
|
159
|
+
"reasons": reasons,
|
|
160
|
+
"description": pattern.description,
|
|
161
|
+
"benefits": pattern.benefits,
|
|
162
|
+
"drawbacks": pattern.drawbacks,
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
# Sort by score (descending)
|
|
167
|
+
suggestions.sort(key=lambda x: x["score"], reverse=True)
|
|
168
|
+
|
|
169
|
+
return suggestions[:5] # Top 5 suggestions
|
|
170
|
+
|
|
171
|
+
def check_pattern_compliance(self, architecture: dict[str, Any], pattern_name: str) -> dict[str, Any]:
|
|
172
|
+
"""
|
|
173
|
+
Check if architecture complies with a design pattern.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
architecture: Architecture document
|
|
177
|
+
pattern_name: Name of pattern to check
|
|
178
|
+
|
|
179
|
+
Returns:
|
|
180
|
+
Compliance report
|
|
181
|
+
"""
|
|
182
|
+
pattern = self.patterns.get(pattern_name)
|
|
183
|
+
if not pattern:
|
|
184
|
+
return {"error": f"Pattern not found: {pattern_name}"}
|
|
185
|
+
|
|
186
|
+
arch_text = str(architecture).lower()
|
|
187
|
+
compliance_score = 100.0
|
|
188
|
+
violations = []
|
|
189
|
+
matches = []
|
|
190
|
+
|
|
191
|
+
# Pattern-specific compliance checks
|
|
192
|
+
if pattern_name == "layered":
|
|
193
|
+
layers = architecture.get("layers", [])
|
|
194
|
+
if not layers:
|
|
195
|
+
compliance_score -= 50.0
|
|
196
|
+
violations.append("No layers defined")
|
|
197
|
+
else:
|
|
198
|
+
matches.append(f"Has {len(layers)} layers")
|
|
199
|
+
|
|
200
|
+
elif pattern_name == "microservices":
|
|
201
|
+
services = architecture.get("services", [])
|
|
202
|
+
if not services:
|
|
203
|
+
compliance_score -= 50.0
|
|
204
|
+
violations.append("No services defined")
|
|
205
|
+
else:
|
|
206
|
+
matches.append(f"Has {len(services)} services")
|
|
207
|
+
|
|
208
|
+
elif pattern_name == "mvc":
|
|
209
|
+
components = architecture.get("components", [])
|
|
210
|
+
component_names = [c.get("name", "").lower() if isinstance(c, dict) else str(c).lower() for c in components]
|
|
211
|
+
has_model = any("model" in name for name in component_names)
|
|
212
|
+
has_view = any("view" in name for name in component_names)
|
|
213
|
+
has_controller = any("controller" in name for name in component_names)
|
|
214
|
+
|
|
215
|
+
if not has_model:
|
|
216
|
+
compliance_score -= 33.0
|
|
217
|
+
violations.append("Missing Model component")
|
|
218
|
+
else:
|
|
219
|
+
matches.append("Has Model component")
|
|
220
|
+
|
|
221
|
+
if not has_view:
|
|
222
|
+
compliance_score -= 33.0
|
|
223
|
+
violations.append("Missing View component")
|
|
224
|
+
else:
|
|
225
|
+
matches.append("Has View component")
|
|
226
|
+
|
|
227
|
+
if not has_controller:
|
|
228
|
+
compliance_score -= 34.0
|
|
229
|
+
violations.append("Missing Controller component")
|
|
230
|
+
else:
|
|
231
|
+
matches.append("Has Controller component")
|
|
232
|
+
|
|
233
|
+
return {
|
|
234
|
+
"pattern": pattern_name,
|
|
235
|
+
"compliance_score": max(0.0, compliance_score),
|
|
236
|
+
"is_compliant": compliance_score >= 70.0,
|
|
237
|
+
"violations": violations,
|
|
238
|
+
"matches": matches,
|
|
239
|
+
"pattern_description": pattern.description,
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
def get_pattern(self, pattern_name: str) -> DesignPattern | None:
|
|
243
|
+
"""Get pattern by name."""
|
|
244
|
+
return self.patterns.get(pattern_name)
|
|
245
|
+
|
|
246
|
+
def list_patterns(self, category: str | None = None) -> list[DesignPattern]:
|
|
247
|
+
"""List all patterns, optionally filtered by category."""
|
|
248
|
+
if category:
|
|
249
|
+
return [p for p in self.patterns.values() if p.category == category]
|
|
250
|
+
return list(self.patterns.values())
|