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,268 +1,268 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Library Pattern Checkers - Extensible plugin architecture for library-specific code review patterns.
|
|
3
|
-
|
|
4
|
-
This module provides a plugin-style architecture for library-specific pattern checking,
|
|
5
|
-
making it easy to add new library patterns without modifying core agent code.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import logging
|
|
9
|
-
import re
|
|
10
|
-
from abc import ABC, abstractmethod
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
from ...context7.agent_integration import Context7AgentHelper
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class LibraryPatternChecker(ABC):
|
|
19
|
-
"""Base class for library-specific pattern checking."""
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
@abstractmethod
|
|
23
|
-
def library_name(self) -> str:
|
|
24
|
-
"""Library name this checker handles."""
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
@abstractmethod
|
|
28
|
-
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
29
|
-
"""
|
|
30
|
-
Check if this pattern applies to the code.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
code: The code to check
|
|
34
|
-
libraries_detected: List of detected library names
|
|
35
|
-
|
|
36
|
-
Returns:
|
|
37
|
-
True if this pattern applies
|
|
38
|
-
"""
|
|
39
|
-
pass
|
|
40
|
-
|
|
41
|
-
@abstractmethod
|
|
42
|
-
async def generate_suggestions(
|
|
43
|
-
self,
|
|
44
|
-
code: str,
|
|
45
|
-
context7_helper: Context7AgentHelper
|
|
46
|
-
) -> list[dict[str, Any]]:
|
|
47
|
-
"""
|
|
48
|
-
Generate Context7 suggestions for this library.
|
|
49
|
-
|
|
50
|
-
Args:
|
|
51
|
-
code: The code to analyze
|
|
52
|
-
context7_helper: Context7 helper for fetching documentation
|
|
53
|
-
|
|
54
|
-
Returns:
|
|
55
|
-
List of suggestion dictionaries
|
|
56
|
-
"""
|
|
57
|
-
pass
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class FastAPIPatternChecker(LibraryPatternChecker):
|
|
61
|
-
"""FastAPI-specific pattern checker."""
|
|
62
|
-
|
|
63
|
-
@property
|
|
64
|
-
def library_name(self) -> str:
|
|
65
|
-
return "fastapi"
|
|
66
|
-
|
|
67
|
-
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
68
|
-
"""Check if code uses FastAPI routing patterns."""
|
|
69
|
-
code_lower = code.lower()
|
|
70
|
-
lib_lower = self.library_name.lower()
|
|
71
|
-
return (
|
|
72
|
-
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
73
|
-
("route" in code_lower or "router" in code_lower)
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
async def generate_suggestions(
|
|
77
|
-
self,
|
|
78
|
-
code: str,
|
|
79
|
-
context7_helper: Context7AgentHelper
|
|
80
|
-
) -> list[dict[str, Any]]:
|
|
81
|
-
"""Generate FastAPI routing suggestions."""
|
|
82
|
-
suggestions = []
|
|
83
|
-
|
|
84
|
-
try:
|
|
85
|
-
# Detect topics for FastAPI
|
|
86
|
-
topics = context7_helper.detect_topics(code, self.library_name)
|
|
87
|
-
if "routing" not in topics:
|
|
88
|
-
return suggestions
|
|
89
|
-
|
|
90
|
-
# Proactively fetch routing documentation
|
|
91
|
-
routing_docs = await context7_helper.get_documentation(
|
|
92
|
-
library=self.library_name,
|
|
93
|
-
topic="routing",
|
|
94
|
-
use_fuzzy_match=True
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
if not routing_docs:
|
|
98
|
-
return suggestions
|
|
99
|
-
|
|
100
|
-
# Check for potential route ordering issues
|
|
101
|
-
# Look for parameterized routes before specific routes
|
|
102
|
-
route_pattern = r"@(?:router|app)\.(?:get|post|put|delete|patch)\(['\"]([^'\"]+)['\"]"
|
|
103
|
-
routes = re.findall(route_pattern, code, re.IGNORECASE)
|
|
104
|
-
|
|
105
|
-
# Check if there are parameterized routes (containing {})
|
|
106
|
-
param_routes = [r for r in routes if "{" in r]
|
|
107
|
-
specific_routes = [r for r in routes if "{" not in r]
|
|
108
|
-
|
|
109
|
-
# If we have both types, suggest checking order
|
|
110
|
-
if param_routes and specific_routes:
|
|
111
|
-
suggestions.append({
|
|
112
|
-
"type": "context7_best_practice",
|
|
113
|
-
"library": self.library_name,
|
|
114
|
-
"issue": "Route ordering: Parameterized routes (e.g., /{id}) should come after specific routes (e.g., /stats)",
|
|
115
|
-
"guidance": routing_docs.get("content", "")[:500] if routing_docs.get("content") else "",
|
|
116
|
-
"source": routing_docs.get("source", "Context7 KB"),
|
|
117
|
-
"severity": "info",
|
|
118
|
-
})
|
|
119
|
-
except Exception as e:
|
|
120
|
-
logger.debug(f"FastAPI pattern checker failed: {e}")
|
|
121
|
-
|
|
122
|
-
return suggestions
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
class ReactPatternChecker(LibraryPatternChecker):
|
|
126
|
-
"""React-specific pattern checker."""
|
|
127
|
-
|
|
128
|
-
@property
|
|
129
|
-
def library_name(self) -> str:
|
|
130
|
-
return "react"
|
|
131
|
-
|
|
132
|
-
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
133
|
-
"""Check if code uses React hooks."""
|
|
134
|
-
code_lower = code.lower()
|
|
135
|
-
lib_lower = self.library_name.lower()
|
|
136
|
-
return (
|
|
137
|
-
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
138
|
-
("usestate" in code_lower or "useeffect" in code_lower)
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
async def generate_suggestions(
|
|
142
|
-
self,
|
|
143
|
-
code: str,
|
|
144
|
-
context7_helper: Context7AgentHelper
|
|
145
|
-
) -> list[dict[str, Any]]:
|
|
146
|
-
"""Generate React hooks suggestions."""
|
|
147
|
-
suggestions = []
|
|
148
|
-
|
|
149
|
-
try:
|
|
150
|
-
topics = context7_helper.detect_topics(code, self.library_name)
|
|
151
|
-
if "hooks" not in topics:
|
|
152
|
-
return suggestions
|
|
153
|
-
|
|
154
|
-
hooks_docs = await context7_helper.get_documentation(
|
|
155
|
-
library=self.library_name,
|
|
156
|
-
topic="hooks",
|
|
157
|
-
use_fuzzy_match=True
|
|
158
|
-
)
|
|
159
|
-
|
|
160
|
-
if hooks_docs:
|
|
161
|
-
suggestions.append({
|
|
162
|
-
"type": "context7_best_practice",
|
|
163
|
-
"library": self.library_name,
|
|
164
|
-
"issue": "React hooks best practices available",
|
|
165
|
-
"guidance": hooks_docs.get("content", "")[:500] if hooks_docs.get("content") else "",
|
|
166
|
-
"source": hooks_docs.get("source", "Context7 KB"),
|
|
167
|
-
"severity": "info",
|
|
168
|
-
})
|
|
169
|
-
except Exception as e:
|
|
170
|
-
logger.debug(f"React pattern checker failed: {e}")
|
|
171
|
-
|
|
172
|
-
return suggestions
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
class PytestPatternChecker(LibraryPatternChecker):
|
|
176
|
-
"""pytest-specific pattern checker."""
|
|
177
|
-
|
|
178
|
-
@property
|
|
179
|
-
def library_name(self) -> str:
|
|
180
|
-
return "pytest"
|
|
181
|
-
|
|
182
|
-
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
183
|
-
"""Check if code uses pytest fixtures."""
|
|
184
|
-
code_lower = code.lower()
|
|
185
|
-
lib_lower = self.library_name.lower()
|
|
186
|
-
return (
|
|
187
|
-
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
188
|
-
("fixture" in code_lower or "@pytest" in code_lower)
|
|
189
|
-
)
|
|
190
|
-
|
|
191
|
-
async def generate_suggestions(
|
|
192
|
-
self,
|
|
193
|
-
code: str,
|
|
194
|
-
context7_helper: Context7AgentHelper
|
|
195
|
-
) -> list[dict[str, Any]]:
|
|
196
|
-
"""Generate pytest fixture suggestions."""
|
|
197
|
-
suggestions = []
|
|
198
|
-
|
|
199
|
-
try:
|
|
200
|
-
topics = context7_helper.detect_topics(code, self.library_name)
|
|
201
|
-
if "fixtures" not in topics:
|
|
202
|
-
return suggestions
|
|
203
|
-
|
|
204
|
-
fixtures_docs = await context7_helper.get_documentation(
|
|
205
|
-
library=self.library_name,
|
|
206
|
-
topic="fixtures",
|
|
207
|
-
use_fuzzy_match=True
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
if fixtures_docs:
|
|
211
|
-
suggestions.append({
|
|
212
|
-
"type": "context7_best_practice",
|
|
213
|
-
"library": self.library_name,
|
|
214
|
-
"issue": "pytest fixture best practices available",
|
|
215
|
-
"guidance": fixtures_docs.get("content", "")[:500] if fixtures_docs.get("content") else "",
|
|
216
|
-
"source": fixtures_docs.get("source", "Context7 KB"),
|
|
217
|
-
"severity": "info",
|
|
218
|
-
})
|
|
219
|
-
except Exception as e:
|
|
220
|
-
logger.debug(f"pytest pattern checker failed: {e}")
|
|
221
|
-
|
|
222
|
-
return suggestions
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
class LibraryPatternRegistry:
|
|
226
|
-
"""Registry for library pattern checkers."""
|
|
227
|
-
|
|
228
|
-
def __init__(self):
|
|
229
|
-
self._checkers: dict[str, LibraryPatternChecker] = {}
|
|
230
|
-
# Register default checkers
|
|
231
|
-
self.register(FastAPIPatternChecker())
|
|
232
|
-
self.register(ReactPatternChecker())
|
|
233
|
-
self.register(PytestPatternChecker())
|
|
234
|
-
|
|
235
|
-
def register(self, checker: LibraryPatternChecker):
|
|
236
|
-
"""Register a pattern checker."""
|
|
237
|
-
self._checkers[checker.library_name.lower()] = checker
|
|
238
|
-
logger.debug(f"Registered library pattern checker: {checker.library_name}")
|
|
239
|
-
|
|
240
|
-
async def generate_suggestions(
|
|
241
|
-
self,
|
|
242
|
-
code: str,
|
|
243
|
-
libraries_detected: list[str],
|
|
244
|
-
context7_helper: Context7AgentHelper
|
|
245
|
-
) -> list[dict[str, Any]]:
|
|
246
|
-
"""
|
|
247
|
-
Generate suggestions from all matching checkers.
|
|
248
|
-
|
|
249
|
-
Args:
|
|
250
|
-
code: The code to analyze
|
|
251
|
-
libraries_detected: List of detected library names
|
|
252
|
-
context7_helper: Context7 helper for fetching documentation
|
|
253
|
-
|
|
254
|
-
Returns:
|
|
255
|
-
List of all suggestions from matching checkers
|
|
256
|
-
"""
|
|
257
|
-
all_suggestions = []
|
|
258
|
-
|
|
259
|
-
for lib in libraries_detected:
|
|
260
|
-
checker = self._checkers.get(lib.lower())
|
|
261
|
-
if checker and checker.matches(code, libraries_detected):
|
|
262
|
-
try:
|
|
263
|
-
suggestions = await checker.generate_suggestions(code, context7_helper)
|
|
264
|
-
all_suggestions.extend(suggestions)
|
|
265
|
-
except Exception as e:
|
|
266
|
-
logger.debug(f"Pattern checker {checker.library_name} failed: {e}")
|
|
267
|
-
|
|
268
|
-
return all_suggestions
|
|
1
|
+
"""
|
|
2
|
+
Library Pattern Checkers - Extensible plugin architecture for library-specific code review patterns.
|
|
3
|
+
|
|
4
|
+
This module provides a plugin-style architecture for library-specific pattern checking,
|
|
5
|
+
making it easy to add new library patterns without modifying core agent code.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import re
|
|
10
|
+
from abc import ABC, abstractmethod
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from ...context7.agent_integration import Context7AgentHelper
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LibraryPatternChecker(ABC):
|
|
19
|
+
"""Base class for library-specific pattern checking."""
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def library_name(self) -> str:
|
|
24
|
+
"""Library name this checker handles."""
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
29
|
+
"""
|
|
30
|
+
Check if this pattern applies to the code.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
code: The code to check
|
|
34
|
+
libraries_detected: List of detected library names
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
True if this pattern applies
|
|
38
|
+
"""
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
async def generate_suggestions(
|
|
43
|
+
self,
|
|
44
|
+
code: str,
|
|
45
|
+
context7_helper: Context7AgentHelper
|
|
46
|
+
) -> list[dict[str, Any]]:
|
|
47
|
+
"""
|
|
48
|
+
Generate Context7 suggestions for this library.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
code: The code to analyze
|
|
52
|
+
context7_helper: Context7 helper for fetching documentation
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
List of suggestion dictionaries
|
|
56
|
+
"""
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class FastAPIPatternChecker(LibraryPatternChecker):
|
|
61
|
+
"""FastAPI-specific pattern checker."""
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def library_name(self) -> str:
|
|
65
|
+
return "fastapi"
|
|
66
|
+
|
|
67
|
+
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
68
|
+
"""Check if code uses FastAPI routing patterns."""
|
|
69
|
+
code_lower = code.lower()
|
|
70
|
+
lib_lower = self.library_name.lower()
|
|
71
|
+
return (
|
|
72
|
+
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
73
|
+
("route" in code_lower or "router" in code_lower)
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
async def generate_suggestions(
|
|
77
|
+
self,
|
|
78
|
+
code: str,
|
|
79
|
+
context7_helper: Context7AgentHelper
|
|
80
|
+
) -> list[dict[str, Any]]:
|
|
81
|
+
"""Generate FastAPI routing suggestions."""
|
|
82
|
+
suggestions = []
|
|
83
|
+
|
|
84
|
+
try:
|
|
85
|
+
# Detect topics for FastAPI
|
|
86
|
+
topics = context7_helper.detect_topics(code, self.library_name)
|
|
87
|
+
if "routing" not in topics:
|
|
88
|
+
return suggestions
|
|
89
|
+
|
|
90
|
+
# Proactively fetch routing documentation
|
|
91
|
+
routing_docs = await context7_helper.get_documentation(
|
|
92
|
+
library=self.library_name,
|
|
93
|
+
topic="routing",
|
|
94
|
+
use_fuzzy_match=True
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
if not routing_docs:
|
|
98
|
+
return suggestions
|
|
99
|
+
|
|
100
|
+
# Check for potential route ordering issues
|
|
101
|
+
# Look for parameterized routes before specific routes
|
|
102
|
+
route_pattern = r"@(?:router|app)\.(?:get|post|put|delete|patch)\(['\"]([^'\"]+)['\"]"
|
|
103
|
+
routes = re.findall(route_pattern, code, re.IGNORECASE)
|
|
104
|
+
|
|
105
|
+
# Check if there are parameterized routes (containing {})
|
|
106
|
+
param_routes = [r for r in routes if "{" in r]
|
|
107
|
+
specific_routes = [r for r in routes if "{" not in r]
|
|
108
|
+
|
|
109
|
+
# If we have both types, suggest checking order
|
|
110
|
+
if param_routes and specific_routes:
|
|
111
|
+
suggestions.append({
|
|
112
|
+
"type": "context7_best_practice",
|
|
113
|
+
"library": self.library_name,
|
|
114
|
+
"issue": "Route ordering: Parameterized routes (e.g., /{id}) should come after specific routes (e.g., /stats)",
|
|
115
|
+
"guidance": routing_docs.get("content", "")[:500] if routing_docs.get("content") else "",
|
|
116
|
+
"source": routing_docs.get("source", "Context7 KB"),
|
|
117
|
+
"severity": "info",
|
|
118
|
+
})
|
|
119
|
+
except Exception as e:
|
|
120
|
+
logger.debug(f"FastAPI pattern checker failed: {e}")
|
|
121
|
+
|
|
122
|
+
return suggestions
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class ReactPatternChecker(LibraryPatternChecker):
|
|
126
|
+
"""React-specific pattern checker."""
|
|
127
|
+
|
|
128
|
+
@property
|
|
129
|
+
def library_name(self) -> str:
|
|
130
|
+
return "react"
|
|
131
|
+
|
|
132
|
+
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
133
|
+
"""Check if code uses React hooks."""
|
|
134
|
+
code_lower = code.lower()
|
|
135
|
+
lib_lower = self.library_name.lower()
|
|
136
|
+
return (
|
|
137
|
+
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
138
|
+
("usestate" in code_lower or "useeffect" in code_lower)
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
async def generate_suggestions(
|
|
142
|
+
self,
|
|
143
|
+
code: str,
|
|
144
|
+
context7_helper: Context7AgentHelper
|
|
145
|
+
) -> list[dict[str, Any]]:
|
|
146
|
+
"""Generate React hooks suggestions."""
|
|
147
|
+
suggestions = []
|
|
148
|
+
|
|
149
|
+
try:
|
|
150
|
+
topics = context7_helper.detect_topics(code, self.library_name)
|
|
151
|
+
if "hooks" not in topics:
|
|
152
|
+
return suggestions
|
|
153
|
+
|
|
154
|
+
hooks_docs = await context7_helper.get_documentation(
|
|
155
|
+
library=self.library_name,
|
|
156
|
+
topic="hooks",
|
|
157
|
+
use_fuzzy_match=True
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
if hooks_docs:
|
|
161
|
+
suggestions.append({
|
|
162
|
+
"type": "context7_best_practice",
|
|
163
|
+
"library": self.library_name,
|
|
164
|
+
"issue": "React hooks best practices available",
|
|
165
|
+
"guidance": hooks_docs.get("content", "")[:500] if hooks_docs.get("content") else "",
|
|
166
|
+
"source": hooks_docs.get("source", "Context7 KB"),
|
|
167
|
+
"severity": "info",
|
|
168
|
+
})
|
|
169
|
+
except Exception as e:
|
|
170
|
+
logger.debug(f"React pattern checker failed: {e}")
|
|
171
|
+
|
|
172
|
+
return suggestions
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class PytestPatternChecker(LibraryPatternChecker):
|
|
176
|
+
"""pytest-specific pattern checker."""
|
|
177
|
+
|
|
178
|
+
@property
|
|
179
|
+
def library_name(self) -> str:
|
|
180
|
+
return "pytest"
|
|
181
|
+
|
|
182
|
+
def matches(self, code: str, libraries_detected: list[str]) -> bool:
|
|
183
|
+
"""Check if code uses pytest fixtures."""
|
|
184
|
+
code_lower = code.lower()
|
|
185
|
+
lib_lower = self.library_name.lower()
|
|
186
|
+
return (
|
|
187
|
+
lib_lower in [lib.lower() for lib in libraries_detected] and
|
|
188
|
+
("fixture" in code_lower or "@pytest" in code_lower)
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
async def generate_suggestions(
|
|
192
|
+
self,
|
|
193
|
+
code: str,
|
|
194
|
+
context7_helper: Context7AgentHelper
|
|
195
|
+
) -> list[dict[str, Any]]:
|
|
196
|
+
"""Generate pytest fixture suggestions."""
|
|
197
|
+
suggestions = []
|
|
198
|
+
|
|
199
|
+
try:
|
|
200
|
+
topics = context7_helper.detect_topics(code, self.library_name)
|
|
201
|
+
if "fixtures" not in topics:
|
|
202
|
+
return suggestions
|
|
203
|
+
|
|
204
|
+
fixtures_docs = await context7_helper.get_documentation(
|
|
205
|
+
library=self.library_name,
|
|
206
|
+
topic="fixtures",
|
|
207
|
+
use_fuzzy_match=True
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
if fixtures_docs:
|
|
211
|
+
suggestions.append({
|
|
212
|
+
"type": "context7_best_practice",
|
|
213
|
+
"library": self.library_name,
|
|
214
|
+
"issue": "pytest fixture best practices available",
|
|
215
|
+
"guidance": fixtures_docs.get("content", "")[:500] if fixtures_docs.get("content") else "",
|
|
216
|
+
"source": fixtures_docs.get("source", "Context7 KB"),
|
|
217
|
+
"severity": "info",
|
|
218
|
+
})
|
|
219
|
+
except Exception as e:
|
|
220
|
+
logger.debug(f"pytest pattern checker failed: {e}")
|
|
221
|
+
|
|
222
|
+
return suggestions
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class LibraryPatternRegistry:
|
|
226
|
+
"""Registry for library pattern checkers."""
|
|
227
|
+
|
|
228
|
+
def __init__(self):
|
|
229
|
+
self._checkers: dict[str, LibraryPatternChecker] = {}
|
|
230
|
+
# Register default checkers
|
|
231
|
+
self.register(FastAPIPatternChecker())
|
|
232
|
+
self.register(ReactPatternChecker())
|
|
233
|
+
self.register(PytestPatternChecker())
|
|
234
|
+
|
|
235
|
+
def register(self, checker: LibraryPatternChecker):
|
|
236
|
+
"""Register a pattern checker."""
|
|
237
|
+
self._checkers[checker.library_name.lower()] = checker
|
|
238
|
+
logger.debug(f"Registered library pattern checker: {checker.library_name}")
|
|
239
|
+
|
|
240
|
+
async def generate_suggestions(
|
|
241
|
+
self,
|
|
242
|
+
code: str,
|
|
243
|
+
libraries_detected: list[str],
|
|
244
|
+
context7_helper: Context7AgentHelper
|
|
245
|
+
) -> list[dict[str, Any]]:
|
|
246
|
+
"""
|
|
247
|
+
Generate suggestions from all matching checkers.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
code: The code to analyze
|
|
251
|
+
libraries_detected: List of detected library names
|
|
252
|
+
context7_helper: Context7 helper for fetching documentation
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
List of all suggestions from matching checkers
|
|
256
|
+
"""
|
|
257
|
+
all_suggestions = []
|
|
258
|
+
|
|
259
|
+
for lib in libraries_detected:
|
|
260
|
+
checker = self._checkers.get(lib.lower())
|
|
261
|
+
if checker and checker.matches(code, libraries_detected):
|
|
262
|
+
try:
|
|
263
|
+
suggestions = await checker.generate_suggestions(code, context7_helper)
|
|
264
|
+
all_suggestions.extend(suggestions)
|
|
265
|
+
except Exception as e:
|
|
266
|
+
logger.debug(f"Pattern checker {checker.library_name} failed: {e}")
|
|
267
|
+
|
|
268
|
+
return all_suggestions
|