tapps-agents 3.6.0__py3-none-any.whl → 3.6.1__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/service_discovery.py +534 -534
- 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/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 -227
- tapps_agents/cli/commands/tester.py +191 -191
- 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/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/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.backup_20260204_064058.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +324 -0
- 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/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/resources/__init__.py +5 -0
- tapps_agents/resources/claude/__init__.py +1 -0
- tapps_agents/resources/claude/commands/README.md +156 -0
- tapps_agents/resources/claude/commands/__init__.py +1 -0
- tapps_agents/resources/claude/commands/build-fix.md +22 -0
- tapps_agents/resources/claude/commands/build.md +77 -0
- tapps_agents/resources/claude/commands/debug.md +53 -0
- tapps_agents/resources/claude/commands/design.md +68 -0
- tapps_agents/resources/claude/commands/docs.md +53 -0
- tapps_agents/resources/claude/commands/e2e.md +22 -0
- tapps_agents/resources/claude/commands/fix.md +54 -0
- tapps_agents/resources/claude/commands/implement.md +53 -0
- tapps_agents/resources/claude/commands/improve.md +53 -0
- tapps_agents/resources/claude/commands/library-docs.md +64 -0
- tapps_agents/resources/claude/commands/lint.md +52 -0
- tapps_agents/resources/claude/commands/plan.md +65 -0
- tapps_agents/resources/claude/commands/refactor-clean.md +21 -0
- tapps_agents/resources/claude/commands/refactor.md +55 -0
- tapps_agents/resources/claude/commands/review.md +67 -0
- tapps_agents/resources/claude/commands/score.md +60 -0
- tapps_agents/resources/claude/commands/security-review.md +22 -0
- tapps_agents/resources/claude/commands/security-scan.md +54 -0
- tapps_agents/resources/claude/commands/tdd.md +24 -0
- tapps_agents/resources/claude/commands/test-coverage.md +21 -0
- tapps_agents/resources/claude/commands/test.md +54 -0
- tapps_agents/resources/claude/commands/update-codemaps.md +20 -0
- tapps_agents/resources/claude/commands/update-docs.md +21 -0
- tapps_agents/resources/claude/skills/__init__.py +1 -0
- tapps_agents/resources/claude/skills/analyst/SKILL.md +272 -0
- tapps_agents/resources/claude/skills/analyst/__init__.py +1 -0
- tapps_agents/resources/claude/skills/architect/SKILL.md +282 -0
- tapps_agents/resources/claude/skills/architect/__init__.py +1 -0
- tapps_agents/resources/claude/skills/backend-patterns/SKILL.md +30 -0
- tapps_agents/resources/claude/skills/backend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/coding-standards/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/coding-standards/__init__.py +1 -0
- tapps_agents/resources/claude/skills/debugger/SKILL.md +203 -0
- tapps_agents/resources/claude/skills/debugger/__init__.py +1 -0
- tapps_agents/resources/claude/skills/designer/SKILL.md +243 -0
- tapps_agents/resources/claude/skills/designer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/documenter/SKILL.md +252 -0
- tapps_agents/resources/claude/skills/documenter/__init__.py +1 -0
- tapps_agents/resources/claude/skills/enhancer/SKILL.md +307 -0
- tapps_agents/resources/claude/skills/enhancer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/evaluator/SKILL.md +204 -0
- tapps_agents/resources/claude/skills/evaluator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/frontend-patterns/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/frontend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/implementer/SKILL.md +188 -0
- tapps_agents/resources/claude/skills/implementer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/improver/SKILL.md +218 -0
- tapps_agents/resources/claude/skills/improver/__init__.py +1 -0
- tapps_agents/resources/claude/skills/ops/SKILL.md +281 -0
- tapps_agents/resources/claude/skills/ops/__init__.py +1 -0
- tapps_agents/resources/claude/skills/orchestrator/SKILL.md +390 -0
- tapps_agents/resources/claude/skills/orchestrator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/planner/SKILL.md +254 -0
- tapps_agents/resources/claude/skills/planner/__init__.py +1 -0
- tapps_agents/resources/claude/skills/reviewer/SKILL.md +434 -0
- tapps_agents/resources/claude/skills/reviewer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/security-review/SKILL.md +31 -0
- tapps_agents/resources/claude/skills/security-review/__init__.py +1 -0
- tapps_agents/resources/claude/skills/simple-mode/SKILL.md +695 -0
- tapps_agents/resources/claude/skills/simple-mode/__init__.py +1 -0
- tapps_agents/resources/claude/skills/tester/SKILL.md +219 -0
- tapps_agents/resources/claude/skills/tester/__init__.py +1 -0
- tapps_agents/resources/cursor/.cursorignore +35 -0
- tapps_agents/resources/cursor/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/build-fix.md +11 -0
- tapps_agents/resources/cursor/commands/build.md +11 -0
- tapps_agents/resources/cursor/commands/e2e.md +11 -0
- tapps_agents/resources/cursor/commands/fix.md +11 -0
- tapps_agents/resources/cursor/commands/refactor-clean.md +11 -0
- tapps_agents/resources/cursor/commands/review.md +11 -0
- tapps_agents/resources/cursor/commands/security-review.md +11 -0
- tapps_agents/resources/cursor/commands/tdd.md +11 -0
- tapps_agents/resources/cursor/commands/test-coverage.md +11 -0
- tapps_agents/resources/cursor/commands/test.md +11 -0
- tapps_agents/resources/cursor/commands/update-codemaps.md +10 -0
- tapps_agents/resources/cursor/commands/update-docs.md +11 -0
- tapps_agents/resources/cursor/rules/__init__.py +1 -0
- tapps_agents/resources/cursor/rules/agent-capabilities.mdc +687 -0
- tapps_agents/resources/cursor/rules/coding-style.mdc +31 -0
- tapps_agents/resources/cursor/rules/command-reference.mdc +2081 -0
- tapps_agents/resources/cursor/rules/cursor-mode-usage.mdc +125 -0
- tapps_agents/resources/cursor/rules/git-workflow.mdc +29 -0
- tapps_agents/resources/cursor/rules/performance.mdc +29 -0
- tapps_agents/resources/cursor/rules/project-context.mdc +163 -0
- tapps_agents/resources/cursor/rules/project-profiling.mdc +197 -0
- tapps_agents/resources/cursor/rules/quick-reference.mdc +630 -0
- tapps_agents/resources/cursor/rules/security.mdc +32 -0
- tapps_agents/resources/cursor/rules/simple-mode.mdc +500 -0
- tapps_agents/resources/cursor/rules/testing.mdc +31 -0
- tapps_agents/resources/cursor/rules/when-to-use.mdc +156 -0
- tapps_agents/resources/cursor/rules/workflow-presets.mdc +179 -0
- tapps_agents/resources/customizations/__init__.py +1 -0
- tapps_agents/resources/customizations/example-custom.yaml +83 -0
- tapps_agents/resources/hooks/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/README.md +5 -0
- tapps_agents/resources/hooks/templates/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/add-project-context.yaml +8 -0
- tapps_agents/resources/hooks/templates/auto-format-js.yaml +10 -0
- tapps_agents/resources/hooks/templates/auto-format-python.yaml +10 -0
- tapps_agents/resources/hooks/templates/git-commit-check.yaml +7 -0
- tapps_agents/resources/hooks/templates/notify-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/quality-gate.yaml +8 -0
- tapps_agents/resources/hooks/templates/security-scan-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/session-end-log.yaml +7 -0
- tapps_agents/resources/hooks/templates/show-beads-ready.yaml +8 -0
- tapps_agents/resources/hooks/templates/test-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/update-docs-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/user-prompt-log.yaml +7 -0
- tapps_agents/resources/scripts/__init__.py +1 -0
- tapps_agents/resources/scripts/set_bd_path.ps1 +51 -0
- tapps_agents/resources/workflows/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/brownfield-analysis.yaml +235 -0
- tapps_agents/resources/workflows/presets/fix.yaml +78 -0
- tapps_agents/resources/workflows/presets/full-sdlc.yaml +122 -0
- tapps_agents/resources/workflows/presets/quality.yaml +82 -0
- tapps_agents/resources/workflows/presets/rapid-dev.yaml +84 -0
- 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/breakdown_orchestrator.py +49 -49
- tapps_agents/simple_mode/orchestrators/brownfield_orchestrator.py +135 -135
- 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/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_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/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 -148
- 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.6.0.dist-info → tapps_agents-3.6.1.dist-info}/METADATA +672 -672
- tapps_agents-3.6.1.dist-info/RECORD +883 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/licenses/LICENSE +22 -22
- tapps_agents-3.6.0.dist-info/RECORD +0 -758
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/WHEEL +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/top_level.txt +0 -0
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Behavioral correctness evaluator.
|
|
3
|
-
|
|
4
|
-
Validates that code behaves as it claims (logic flow analysis, contract validation).
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import ast
|
|
8
|
-
import logging
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from typing import Any
|
|
11
|
-
|
|
12
|
-
from ..evaluation_base import BaseEvaluator
|
|
13
|
-
from ..evaluation_models import Issue, IssueCategory, IssueManifest, IssueSeverity
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class BehavioralEvaluator(BaseEvaluator):
|
|
19
|
-
"""
|
|
20
|
-
Evaluator for behavioral correctness validation.
|
|
21
|
-
|
|
22
|
-
Uses AST-based logic flow analysis to detect potential behavioral issues.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(self):
|
|
26
|
-
"""Initialize behavioral evaluator."""
|
|
27
|
-
pass
|
|
28
|
-
|
|
29
|
-
def get_name(self) -> str:
|
|
30
|
-
"""Get evaluator name."""
|
|
31
|
-
return "behavioral"
|
|
32
|
-
|
|
33
|
-
def is_applicable(self, target: Path | str) -> bool:
|
|
34
|
-
"""Check if evaluator can evaluate target (Python files only currently)."""
|
|
35
|
-
target_path = Path(target) if isinstance(target, str) else target
|
|
36
|
-
return target_path.suffix == ".py"
|
|
37
|
-
|
|
38
|
-
def evaluate(
|
|
39
|
-
self, target: Path | str, context: dict[str, Any] | None = None
|
|
40
|
-
) -> IssueManifest:
|
|
41
|
-
"""
|
|
42
|
-
Evaluate behavioral correctness.
|
|
43
|
-
|
|
44
|
-
Args:
|
|
45
|
-
target: File path to evaluate
|
|
46
|
-
context: Optional context (code content, expected behavior, etc.)
|
|
47
|
-
|
|
48
|
-
Returns:
|
|
49
|
-
IssueManifest with behavioral issues found
|
|
50
|
-
"""
|
|
51
|
-
target_path = Path(target) if isinstance(target, str) else target
|
|
52
|
-
issues = IssueManifest()
|
|
53
|
-
|
|
54
|
-
if not target_path.exists():
|
|
55
|
-
return issues
|
|
56
|
-
|
|
57
|
-
try:
|
|
58
|
-
code = target_path.read_text(encoding="utf-8")
|
|
59
|
-
tree = ast.parse(code)
|
|
60
|
-
|
|
61
|
-
# Analyze function contracts and logic flow
|
|
62
|
-
issues = self._analyze_logic_flow(tree, target_path, code)
|
|
63
|
-
|
|
64
|
-
except SyntaxError as e:
|
|
65
|
-
# Syntax errors are critical behavioral issues
|
|
66
|
-
issue = Issue(
|
|
67
|
-
id=f"behavioral_syntax_{target_path.name}",
|
|
68
|
-
severity=IssueSeverity.CRITICAL,
|
|
69
|
-
category=IssueCategory.CORRECTNESS,
|
|
70
|
-
evidence=f"Syntax error in {target_path.name}: {e}",
|
|
71
|
-
repro=f"Run: python -m py_compile {target_path}",
|
|
72
|
-
suggested_fix="Fix syntax error: " + str(e),
|
|
73
|
-
owner_step="implementation",
|
|
74
|
-
file_path=str(target_path),
|
|
75
|
-
line_number=getattr(e, "lineno", None),
|
|
76
|
-
)
|
|
77
|
-
issues.add_issue(issue)
|
|
78
|
-
except Exception as e:
|
|
79
|
-
logger.warning(f"Error in behavioral evaluation of {target_path}: {e}")
|
|
80
|
-
|
|
81
|
-
return issues
|
|
82
|
-
|
|
83
|
-
def _analyze_logic_flow(
|
|
84
|
-
self, tree: ast.AST, file_path: Path, code: str
|
|
85
|
-
) -> IssueManifest:
|
|
86
|
-
"""Analyze logic flow for potential behavioral issues."""
|
|
87
|
-
issues = IssueManifest()
|
|
88
|
-
|
|
89
|
-
# Find functions
|
|
90
|
-
for node in ast.walk(tree):
|
|
91
|
-
if isinstance(node, ast.FunctionDef):
|
|
92
|
-
func_issues = self._analyze_function(node, file_path, code)
|
|
93
|
-
issues.add_issues(func_issues.issues)
|
|
94
|
-
|
|
95
|
-
return issues
|
|
96
|
-
|
|
97
|
-
def _analyze_function(
|
|
98
|
-
self, func_node: ast.FunctionDef, file_path: Path, code: str
|
|
99
|
-
) -> IssueManifest:
|
|
100
|
-
"""Analyze a single function for behavioral issues."""
|
|
101
|
-
issues = IssueManifest()
|
|
102
|
-
|
|
103
|
-
# Check for unreachable code
|
|
104
|
-
unreachable = self._find_unreachable_code(func_node)
|
|
105
|
-
for line_num in unreachable:
|
|
106
|
-
issue = Issue(
|
|
107
|
-
id=f"behavioral_unreachable_{func_node.name}_line_{line_num}",
|
|
108
|
-
severity=IssueSeverity.MEDIUM,
|
|
109
|
-
category=IssueCategory.CORRECTNESS,
|
|
110
|
-
evidence=f"Unreachable code in function {func_node.name} at line {line_num}",
|
|
111
|
-
repro=f"Inspect function {func_node.name} at line {line_num}",
|
|
112
|
-
suggested_fix="Remove unreachable code or fix control flow",
|
|
113
|
-
owner_step="implementation",
|
|
114
|
-
file_path=str(file_path),
|
|
115
|
-
line_number=line_num,
|
|
116
|
-
)
|
|
117
|
-
issues.add_issue(issue)
|
|
118
|
-
|
|
119
|
-
# Check for missing return statements
|
|
120
|
-
if not self._has_return_statement(func_node):
|
|
121
|
-
# Check docstring for return type hint
|
|
122
|
-
docstring = ast.get_docstring(func_node)
|
|
123
|
-
if docstring and ("return" in docstring.lower() or "->" in docstring):
|
|
124
|
-
issue = Issue(
|
|
125
|
-
id=f"behavioral_missing_return_{func_node.name}",
|
|
126
|
-
severity=IssueSeverity.MEDIUM,
|
|
127
|
-
category=IssueCategory.CORRECTNESS,
|
|
128
|
-
evidence=f"Function {func_node.name} may be missing return statement (docstring indicates return type)",
|
|
129
|
-
repro=f"Check function {func_node.name} return behavior",
|
|
130
|
-
suggested_fix="Add return statement or update docstring",
|
|
131
|
-
owner_step="implementation",
|
|
132
|
-
file_path=str(file_path),
|
|
133
|
-
line_number=func_node.lineno,
|
|
134
|
-
)
|
|
135
|
-
issues.add_issue(issue)
|
|
136
|
-
|
|
137
|
-
return issues
|
|
138
|
-
|
|
139
|
-
def _find_unreachable_code(self, func_node: ast.FunctionDef) -> list[int]:
|
|
140
|
-
"""Find unreachable code (after return/raise statements)."""
|
|
141
|
-
unreachable_lines: list[int] = []
|
|
142
|
-
returns_found = False
|
|
143
|
-
|
|
144
|
-
for node in ast.walk(func_node):
|
|
145
|
-
if isinstance(node, (ast.Return, ast.Raise)):
|
|
146
|
-
returns_found = True
|
|
147
|
-
# Mark subsequent statements as potentially unreachable
|
|
148
|
-
# (simplified - full analysis would require control flow graph)
|
|
149
|
-
if hasattr(node, "lineno"):
|
|
150
|
-
unreachable_lines.append(node.lineno + 1)
|
|
151
|
-
|
|
152
|
-
return unreachable_lines if returns_found else []
|
|
153
|
-
|
|
154
|
-
def _has_return_statement(self, func_node: ast.FunctionDef) -> bool:
|
|
155
|
-
"""Check if function has return statements."""
|
|
156
|
-
for node in ast.walk(func_node):
|
|
157
|
-
if isinstance(node, ast.Return):
|
|
158
|
-
return True
|
|
159
|
-
return False
|
|
160
|
-
|
|
1
|
+
"""
|
|
2
|
+
Behavioral correctness evaluator.
|
|
3
|
+
|
|
4
|
+
Validates that code behaves as it claims (logic flow analysis, contract validation).
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import ast
|
|
8
|
+
import logging
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from ..evaluation_base import BaseEvaluator
|
|
13
|
+
from ..evaluation_models import Issue, IssueCategory, IssueManifest, IssueSeverity
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BehavioralEvaluator(BaseEvaluator):
|
|
19
|
+
"""
|
|
20
|
+
Evaluator for behavioral correctness validation.
|
|
21
|
+
|
|
22
|
+
Uses AST-based logic flow analysis to detect potential behavioral issues.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
"""Initialize behavioral evaluator."""
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
def get_name(self) -> str:
|
|
30
|
+
"""Get evaluator name."""
|
|
31
|
+
return "behavioral"
|
|
32
|
+
|
|
33
|
+
def is_applicable(self, target: Path | str) -> bool:
|
|
34
|
+
"""Check if evaluator can evaluate target (Python files only currently)."""
|
|
35
|
+
target_path = Path(target) if isinstance(target, str) else target
|
|
36
|
+
return target_path.suffix == ".py"
|
|
37
|
+
|
|
38
|
+
def evaluate(
|
|
39
|
+
self, target: Path | str, context: dict[str, Any] | None = None
|
|
40
|
+
) -> IssueManifest:
|
|
41
|
+
"""
|
|
42
|
+
Evaluate behavioral correctness.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
target: File path to evaluate
|
|
46
|
+
context: Optional context (code content, expected behavior, etc.)
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
IssueManifest with behavioral issues found
|
|
50
|
+
"""
|
|
51
|
+
target_path = Path(target) if isinstance(target, str) else target
|
|
52
|
+
issues = IssueManifest()
|
|
53
|
+
|
|
54
|
+
if not target_path.exists():
|
|
55
|
+
return issues
|
|
56
|
+
|
|
57
|
+
try:
|
|
58
|
+
code = target_path.read_text(encoding="utf-8")
|
|
59
|
+
tree = ast.parse(code)
|
|
60
|
+
|
|
61
|
+
# Analyze function contracts and logic flow
|
|
62
|
+
issues = self._analyze_logic_flow(tree, target_path, code)
|
|
63
|
+
|
|
64
|
+
except SyntaxError as e:
|
|
65
|
+
# Syntax errors are critical behavioral issues
|
|
66
|
+
issue = Issue(
|
|
67
|
+
id=f"behavioral_syntax_{target_path.name}",
|
|
68
|
+
severity=IssueSeverity.CRITICAL,
|
|
69
|
+
category=IssueCategory.CORRECTNESS,
|
|
70
|
+
evidence=f"Syntax error in {target_path.name}: {e}",
|
|
71
|
+
repro=f"Run: python -m py_compile {target_path}",
|
|
72
|
+
suggested_fix="Fix syntax error: " + str(e),
|
|
73
|
+
owner_step="implementation",
|
|
74
|
+
file_path=str(target_path),
|
|
75
|
+
line_number=getattr(e, "lineno", None),
|
|
76
|
+
)
|
|
77
|
+
issues.add_issue(issue)
|
|
78
|
+
except Exception as e:
|
|
79
|
+
logger.warning(f"Error in behavioral evaluation of {target_path}: {e}")
|
|
80
|
+
|
|
81
|
+
return issues
|
|
82
|
+
|
|
83
|
+
def _analyze_logic_flow(
|
|
84
|
+
self, tree: ast.AST, file_path: Path, code: str
|
|
85
|
+
) -> IssueManifest:
|
|
86
|
+
"""Analyze logic flow for potential behavioral issues."""
|
|
87
|
+
issues = IssueManifest()
|
|
88
|
+
|
|
89
|
+
# Find functions
|
|
90
|
+
for node in ast.walk(tree):
|
|
91
|
+
if isinstance(node, ast.FunctionDef):
|
|
92
|
+
func_issues = self._analyze_function(node, file_path, code)
|
|
93
|
+
issues.add_issues(func_issues.issues)
|
|
94
|
+
|
|
95
|
+
return issues
|
|
96
|
+
|
|
97
|
+
def _analyze_function(
|
|
98
|
+
self, func_node: ast.FunctionDef, file_path: Path, code: str
|
|
99
|
+
) -> IssueManifest:
|
|
100
|
+
"""Analyze a single function for behavioral issues."""
|
|
101
|
+
issues = IssueManifest()
|
|
102
|
+
|
|
103
|
+
# Check for unreachable code
|
|
104
|
+
unreachable = self._find_unreachable_code(func_node)
|
|
105
|
+
for line_num in unreachable:
|
|
106
|
+
issue = Issue(
|
|
107
|
+
id=f"behavioral_unreachable_{func_node.name}_line_{line_num}",
|
|
108
|
+
severity=IssueSeverity.MEDIUM,
|
|
109
|
+
category=IssueCategory.CORRECTNESS,
|
|
110
|
+
evidence=f"Unreachable code in function {func_node.name} at line {line_num}",
|
|
111
|
+
repro=f"Inspect function {func_node.name} at line {line_num}",
|
|
112
|
+
suggested_fix="Remove unreachable code or fix control flow",
|
|
113
|
+
owner_step="implementation",
|
|
114
|
+
file_path=str(file_path),
|
|
115
|
+
line_number=line_num,
|
|
116
|
+
)
|
|
117
|
+
issues.add_issue(issue)
|
|
118
|
+
|
|
119
|
+
# Check for missing return statements
|
|
120
|
+
if not self._has_return_statement(func_node):
|
|
121
|
+
# Check docstring for return type hint
|
|
122
|
+
docstring = ast.get_docstring(func_node)
|
|
123
|
+
if docstring and ("return" in docstring.lower() or "->" in docstring):
|
|
124
|
+
issue = Issue(
|
|
125
|
+
id=f"behavioral_missing_return_{func_node.name}",
|
|
126
|
+
severity=IssueSeverity.MEDIUM,
|
|
127
|
+
category=IssueCategory.CORRECTNESS,
|
|
128
|
+
evidence=f"Function {func_node.name} may be missing return statement (docstring indicates return type)",
|
|
129
|
+
repro=f"Check function {func_node.name} return behavior",
|
|
130
|
+
suggested_fix="Add return statement or update docstring",
|
|
131
|
+
owner_step="implementation",
|
|
132
|
+
file_path=str(file_path),
|
|
133
|
+
line_number=func_node.lineno,
|
|
134
|
+
)
|
|
135
|
+
issues.add_issue(issue)
|
|
136
|
+
|
|
137
|
+
return issues
|
|
138
|
+
|
|
139
|
+
def _find_unreachable_code(self, func_node: ast.FunctionDef) -> list[int]:
|
|
140
|
+
"""Find unreachable code (after return/raise statements)."""
|
|
141
|
+
unreachable_lines: list[int] = []
|
|
142
|
+
returns_found = False
|
|
143
|
+
|
|
144
|
+
for node in ast.walk(func_node):
|
|
145
|
+
if isinstance(node, (ast.Return, ast.Raise)):
|
|
146
|
+
returns_found = True
|
|
147
|
+
# Mark subsequent statements as potentially unreachable
|
|
148
|
+
# (simplified - full analysis would require control flow graph)
|
|
149
|
+
if hasattr(node, "lineno"):
|
|
150
|
+
unreachable_lines.append(node.lineno + 1)
|
|
151
|
+
|
|
152
|
+
return unreachable_lines if returns_found else []
|
|
153
|
+
|
|
154
|
+
def _has_return_statement(self, func_node: ast.FunctionDef) -> bool:
|
|
155
|
+
"""Check if function has return statements."""
|
|
156
|
+
for node in ast.walk(func_node):
|
|
157
|
+
if isinstance(node, ast.Return):
|
|
158
|
+
return True
|
|
159
|
+
return False
|
|
160
|
+
|
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Performance profile evaluator.
|
|
3
|
-
|
|
4
|
-
Identifies performance issues, bottlenecks, and resource usage patterns.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import logging
|
|
8
|
-
import re
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from typing import Any
|
|
11
|
-
|
|
12
|
-
from ..evaluation_base import BaseEvaluator
|
|
13
|
-
from ..evaluation_models import Issue, IssueCategory, IssueManifest, IssueSeverity
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class PerformanceProfileEvaluator(BaseEvaluator):
|
|
19
|
-
"""
|
|
20
|
-
Evaluator for performance profiling.
|
|
21
|
-
|
|
22
|
-
Identifies performance anti-patterns and potential bottlenecks.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(self):
|
|
26
|
-
"""Initialize performance profile evaluator."""
|
|
27
|
-
# Performance anti-patterns
|
|
28
|
-
self.anti_patterns = [
|
|
29
|
-
(r'for\s+\w+\s+in\s+\w+\.append\s*\(', "Inefficient list building - use list comprehension"),
|
|
30
|
-
(r'\.sort\s*\(\s*\)\s*.*\.sort\s*\(', "Multiple sorts - inefficient"),
|
|
31
|
-
(r'SELECT\s+\*\s+FROM', "SELECT * can be inefficient - specify columns"),
|
|
32
|
-
(r'nested\s+for\s+.*\s+for\s+', "Nested loops can be O(n²) or worse"),
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
def get_name(self) -> str:
|
|
36
|
-
"""Get evaluator name."""
|
|
37
|
-
return "performance_profile"
|
|
38
|
-
|
|
39
|
-
def is_applicable(self, target: Path | str) -> bool:
|
|
40
|
-
"""Applicable to code files."""
|
|
41
|
-
target_path = Path(target) if isinstance(target, str) else target
|
|
42
|
-
return target_path.suffix in [".py", ".js", ".ts", ".tsx", ".jsx", ".sql"]
|
|
43
|
-
|
|
44
|
-
def evaluate(
|
|
45
|
-
self, target: Path | str, context: dict[str, Any] | None = None
|
|
46
|
-
) -> IssueManifest:
|
|
47
|
-
"""
|
|
48
|
-
Evaluate performance profile.
|
|
49
|
-
|
|
50
|
-
Args:
|
|
51
|
-
target: File path to evaluate
|
|
52
|
-
context: Optional context
|
|
53
|
-
|
|
54
|
-
Returns:
|
|
55
|
-
IssueManifest with performance issues found
|
|
56
|
-
"""
|
|
57
|
-
target_path = Path(target) if isinstance(target, str) else target
|
|
58
|
-
issues = IssueManifest()
|
|
59
|
-
|
|
60
|
-
if not target_path.exists() or not target_path.is_file():
|
|
61
|
-
return issues
|
|
62
|
-
|
|
63
|
-
try:
|
|
64
|
-
code = target_path.read_text(encoding="utf-8")
|
|
65
|
-
|
|
66
|
-
# Check for performance anti-patterns
|
|
67
|
-
for pattern, description in self.anti_patterns:
|
|
68
|
-
matches = list(re.finditer(pattern, code, re.IGNORECASE | re.MULTILINE))
|
|
69
|
-
for match in matches:
|
|
70
|
-
line_num = code[:match.start()].count("\n") + 1
|
|
71
|
-
|
|
72
|
-
issue = Issue(
|
|
73
|
-
id=f"perf_anti_pattern_{line_num}",
|
|
74
|
-
severity=IssueSeverity.LOW,
|
|
75
|
-
category=IssueCategory.PERFORMANCE,
|
|
76
|
-
evidence=f"Performance anti-pattern: {description}",
|
|
77
|
-
repro=f"Inspect line {line_num} in {target_path}",
|
|
78
|
-
suggested_fix=description,
|
|
79
|
-
owner_step="implementation",
|
|
80
|
-
file_path=str(target_path),
|
|
81
|
-
line_number=line_num,
|
|
82
|
-
)
|
|
83
|
-
issues.add_issue(issue)
|
|
84
|
-
|
|
85
|
-
# Check for nested loops (O(n²) complexity)
|
|
86
|
-
nested_loop_issues = self._check_nested_loops(code, target_path)
|
|
87
|
-
issues = issues.merge(nested_loop_issues)
|
|
88
|
-
|
|
89
|
-
# Check for potential database N+1 queries
|
|
90
|
-
db_issues = self._check_database_queries(code, target_path)
|
|
91
|
-
issues = issues.merge(db_issues)
|
|
92
|
-
|
|
93
|
-
except Exception as e:
|
|
94
|
-
logger.warning(f"Error in performance profile evaluation: {e}")
|
|
95
|
-
|
|
96
|
-
return issues
|
|
97
|
-
|
|
98
|
-
def _check_nested_loops(
|
|
99
|
-
self, code: str, file_path: Path
|
|
100
|
-
) -> IssueManifest:
|
|
101
|
-
"""Check for deeply nested loops."""
|
|
102
|
-
issues = IssueManifest()
|
|
103
|
-
|
|
104
|
-
# Count nested for/while loops
|
|
105
|
-
lines = code.splitlines()
|
|
106
|
-
for i, line in enumerate(lines, 1):
|
|
107
|
-
# Simple heuristic: count consecutive for/while statements
|
|
108
|
-
if i < len(lines) - 1:
|
|
109
|
-
current_line = line.strip()
|
|
110
|
-
next_line = lines[i].strip() if i < len(lines) else ""
|
|
111
|
-
|
|
112
|
-
if re.match(r'for\s+', current_line) or re.match(r'while\s+', current_line):
|
|
113
|
-
# Check if next line also has a loop (simplified)
|
|
114
|
-
if re.match(r'for\s+', next_line) or re.match(r'while\s+', next_line):
|
|
115
|
-
issue = Issue(
|
|
116
|
-
id=f"perf_nested_loop_{i}",
|
|
117
|
-
severity=IssueSeverity.MEDIUM,
|
|
118
|
-
category=IssueCategory.PERFORMANCE,
|
|
119
|
-
evidence=f"Nested loops detected at line {i} - potential O(n²) complexity",
|
|
120
|
-
repro=f"Review nested loops in {file_path} around line {i}",
|
|
121
|
-
suggested_fix="Consider optimizing nested loops or using vectorized operations",
|
|
122
|
-
owner_step="implementation",
|
|
123
|
-
file_path=str(file_path),
|
|
124
|
-
line_number=i,
|
|
125
|
-
)
|
|
126
|
-
issues.add_issue(issue)
|
|
127
|
-
|
|
128
|
-
return issues
|
|
129
|
-
|
|
130
|
-
def _check_database_queries(
|
|
131
|
-
self, code: str, file_path: Path
|
|
132
|
-
) -> IssueManifest:
|
|
133
|
-
"""Check for potential N+1 query patterns."""
|
|
134
|
-
issues = IssueManifest()
|
|
135
|
-
|
|
136
|
-
# Check for loops containing queries (N+1 pattern)
|
|
137
|
-
query_patterns = [r'\.get\s*\(', r'\.filter\s*\(', r'SELECT\s+.*\s+FROM']
|
|
138
|
-
loop_pattern = r'for\s+\w+\s+in'
|
|
139
|
-
|
|
140
|
-
if re.search(loop_pattern, code):
|
|
141
|
-
# Check if queries appear inside loops
|
|
142
|
-
# This is simplified - full analysis would require parsing control flow
|
|
143
|
-
for query_pattern in query_patterns:
|
|
144
|
-
if re.search(query_pattern, code, re.IGNORECASE):
|
|
145
|
-
# Potential N+1 pattern
|
|
146
|
-
issue = Issue(
|
|
147
|
-
id=f"perf_n_plus_one_query",
|
|
148
|
-
severity=IssueSeverity.MEDIUM,
|
|
149
|
-
category=IssueCategory.PERFORMANCE,
|
|
150
|
-
evidence="Potential N+1 query pattern: database queries inside loops",
|
|
151
|
-
repro=f"Review {file_path} for queries inside loops",
|
|
152
|
-
suggested_fix="Use bulk queries or eager loading to avoid N+1 queries",
|
|
153
|
-
owner_step="implementation",
|
|
154
|
-
file_path=str(file_path),
|
|
155
|
-
)
|
|
156
|
-
issues.add_issue(issue)
|
|
157
|
-
break # Only report once
|
|
158
|
-
|
|
159
|
-
return issues
|
|
160
|
-
|
|
1
|
+
"""
|
|
2
|
+
Performance profile evaluator.
|
|
3
|
+
|
|
4
|
+
Identifies performance issues, bottlenecks, and resource usage patterns.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from ..evaluation_base import BaseEvaluator
|
|
13
|
+
from ..evaluation_models import Issue, IssueCategory, IssueManifest, IssueSeverity
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PerformanceProfileEvaluator(BaseEvaluator):
|
|
19
|
+
"""
|
|
20
|
+
Evaluator for performance profiling.
|
|
21
|
+
|
|
22
|
+
Identifies performance anti-patterns and potential bottlenecks.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
"""Initialize performance profile evaluator."""
|
|
27
|
+
# Performance anti-patterns
|
|
28
|
+
self.anti_patterns = [
|
|
29
|
+
(r'for\s+\w+\s+in\s+\w+\.append\s*\(', "Inefficient list building - use list comprehension"),
|
|
30
|
+
(r'\.sort\s*\(\s*\)\s*.*\.sort\s*\(', "Multiple sorts - inefficient"),
|
|
31
|
+
(r'SELECT\s+\*\s+FROM', "SELECT * can be inefficient - specify columns"),
|
|
32
|
+
(r'nested\s+for\s+.*\s+for\s+', "Nested loops can be O(n²) or worse"),
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
def get_name(self) -> str:
|
|
36
|
+
"""Get evaluator name."""
|
|
37
|
+
return "performance_profile"
|
|
38
|
+
|
|
39
|
+
def is_applicable(self, target: Path | str) -> bool:
|
|
40
|
+
"""Applicable to code files."""
|
|
41
|
+
target_path = Path(target) if isinstance(target, str) else target
|
|
42
|
+
return target_path.suffix in [".py", ".js", ".ts", ".tsx", ".jsx", ".sql"]
|
|
43
|
+
|
|
44
|
+
def evaluate(
|
|
45
|
+
self, target: Path | str, context: dict[str, Any] | None = None
|
|
46
|
+
) -> IssueManifest:
|
|
47
|
+
"""
|
|
48
|
+
Evaluate performance profile.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
target: File path to evaluate
|
|
52
|
+
context: Optional context
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
IssueManifest with performance issues found
|
|
56
|
+
"""
|
|
57
|
+
target_path = Path(target) if isinstance(target, str) else target
|
|
58
|
+
issues = IssueManifest()
|
|
59
|
+
|
|
60
|
+
if not target_path.exists() or not target_path.is_file():
|
|
61
|
+
return issues
|
|
62
|
+
|
|
63
|
+
try:
|
|
64
|
+
code = target_path.read_text(encoding="utf-8")
|
|
65
|
+
|
|
66
|
+
# Check for performance anti-patterns
|
|
67
|
+
for pattern, description in self.anti_patterns:
|
|
68
|
+
matches = list(re.finditer(pattern, code, re.IGNORECASE | re.MULTILINE))
|
|
69
|
+
for match in matches:
|
|
70
|
+
line_num = code[:match.start()].count("\n") + 1
|
|
71
|
+
|
|
72
|
+
issue = Issue(
|
|
73
|
+
id=f"perf_anti_pattern_{line_num}",
|
|
74
|
+
severity=IssueSeverity.LOW,
|
|
75
|
+
category=IssueCategory.PERFORMANCE,
|
|
76
|
+
evidence=f"Performance anti-pattern: {description}",
|
|
77
|
+
repro=f"Inspect line {line_num} in {target_path}",
|
|
78
|
+
suggested_fix=description,
|
|
79
|
+
owner_step="implementation",
|
|
80
|
+
file_path=str(target_path),
|
|
81
|
+
line_number=line_num,
|
|
82
|
+
)
|
|
83
|
+
issues.add_issue(issue)
|
|
84
|
+
|
|
85
|
+
# Check for nested loops (O(n²) complexity)
|
|
86
|
+
nested_loop_issues = self._check_nested_loops(code, target_path)
|
|
87
|
+
issues = issues.merge(nested_loop_issues)
|
|
88
|
+
|
|
89
|
+
# Check for potential database N+1 queries
|
|
90
|
+
db_issues = self._check_database_queries(code, target_path)
|
|
91
|
+
issues = issues.merge(db_issues)
|
|
92
|
+
|
|
93
|
+
except Exception as e:
|
|
94
|
+
logger.warning(f"Error in performance profile evaluation: {e}")
|
|
95
|
+
|
|
96
|
+
return issues
|
|
97
|
+
|
|
98
|
+
def _check_nested_loops(
|
|
99
|
+
self, code: str, file_path: Path
|
|
100
|
+
) -> IssueManifest:
|
|
101
|
+
"""Check for deeply nested loops."""
|
|
102
|
+
issues = IssueManifest()
|
|
103
|
+
|
|
104
|
+
# Count nested for/while loops
|
|
105
|
+
lines = code.splitlines()
|
|
106
|
+
for i, line in enumerate(lines, 1):
|
|
107
|
+
# Simple heuristic: count consecutive for/while statements
|
|
108
|
+
if i < len(lines) - 1:
|
|
109
|
+
current_line = line.strip()
|
|
110
|
+
next_line = lines[i].strip() if i < len(lines) else ""
|
|
111
|
+
|
|
112
|
+
if re.match(r'for\s+', current_line) or re.match(r'while\s+', current_line):
|
|
113
|
+
# Check if next line also has a loop (simplified)
|
|
114
|
+
if re.match(r'for\s+', next_line) or re.match(r'while\s+', next_line):
|
|
115
|
+
issue = Issue(
|
|
116
|
+
id=f"perf_nested_loop_{i}",
|
|
117
|
+
severity=IssueSeverity.MEDIUM,
|
|
118
|
+
category=IssueCategory.PERFORMANCE,
|
|
119
|
+
evidence=f"Nested loops detected at line {i} - potential O(n²) complexity",
|
|
120
|
+
repro=f"Review nested loops in {file_path} around line {i}",
|
|
121
|
+
suggested_fix="Consider optimizing nested loops or using vectorized operations",
|
|
122
|
+
owner_step="implementation",
|
|
123
|
+
file_path=str(file_path),
|
|
124
|
+
line_number=i,
|
|
125
|
+
)
|
|
126
|
+
issues.add_issue(issue)
|
|
127
|
+
|
|
128
|
+
return issues
|
|
129
|
+
|
|
130
|
+
def _check_database_queries(
|
|
131
|
+
self, code: str, file_path: Path
|
|
132
|
+
) -> IssueManifest:
|
|
133
|
+
"""Check for potential N+1 query patterns."""
|
|
134
|
+
issues = IssueManifest()
|
|
135
|
+
|
|
136
|
+
# Check for loops containing queries (N+1 pattern)
|
|
137
|
+
query_patterns = [r'\.get\s*\(', r'\.filter\s*\(', r'SELECT\s+.*\s+FROM']
|
|
138
|
+
loop_pattern = r'for\s+\w+\s+in'
|
|
139
|
+
|
|
140
|
+
if re.search(loop_pattern, code):
|
|
141
|
+
# Check if queries appear inside loops
|
|
142
|
+
# This is simplified - full analysis would require parsing control flow
|
|
143
|
+
for query_pattern in query_patterns:
|
|
144
|
+
if re.search(query_pattern, code, re.IGNORECASE):
|
|
145
|
+
# Potential N+1 pattern
|
|
146
|
+
issue = Issue(
|
|
147
|
+
id=f"perf_n_plus_one_query",
|
|
148
|
+
severity=IssueSeverity.MEDIUM,
|
|
149
|
+
category=IssueCategory.PERFORMANCE,
|
|
150
|
+
evidence="Potential N+1 query pattern: database queries inside loops",
|
|
151
|
+
repro=f"Review {file_path} for queries inside loops",
|
|
152
|
+
suggested_fix="Use bulk queries or eager loading to avoid N+1 queries",
|
|
153
|
+
owner_step="implementation",
|
|
154
|
+
file_path=str(file_path),
|
|
155
|
+
)
|
|
156
|
+
issues.add_issue(issue)
|
|
157
|
+
break # Only report once
|
|
158
|
+
|
|
159
|
+
return issues
|
|
160
|
+
|