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,314 +1,314 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Background Agent Fallback Strategy
|
|
3
|
-
|
|
4
|
-
Automatically routes heavy tasks to Background Agents when resources are constrained.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from dataclasses import dataclass
|
|
8
|
-
from enum import Enum
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from typing import Any
|
|
11
|
-
|
|
12
|
-
from .config import ProjectConfig
|
|
13
|
-
from .resource_monitor import ResourceMetrics, ResourceMonitor
|
|
14
|
-
from .task_duration import TaskDurationEstimator
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class TaskType(Enum):
|
|
18
|
-
"""Task type classification."""
|
|
19
|
-
|
|
20
|
-
LIGHT = "light" # Quick tasks, can run locally
|
|
21
|
-
MEDIUM = "medium" # Moderate tasks, may need background
|
|
22
|
-
HEAVY = "heavy" # Heavy tasks, should use background agent
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@dataclass
|
|
26
|
-
class TaskDecision:
|
|
27
|
-
"""Decision on where to run a task."""
|
|
28
|
-
|
|
29
|
-
task_name: str
|
|
30
|
-
task_type: TaskType
|
|
31
|
-
use_background: bool
|
|
32
|
-
reason: str
|
|
33
|
-
resource_metrics: ResourceMetrics | None = None
|
|
34
|
-
|
|
35
|
-
def to_dict(self) -> dict[str, Any]:
|
|
36
|
-
"""Convert to dictionary."""
|
|
37
|
-
return {
|
|
38
|
-
"task_name": self.task_name,
|
|
39
|
-
"task_type": self.task_type.value,
|
|
40
|
-
"use_background": self.use_background,
|
|
41
|
-
"reason": self.reason,
|
|
42
|
-
"resource_metrics": (
|
|
43
|
-
self.resource_metrics.to_dict() if self.resource_metrics else None
|
|
44
|
-
),
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class FallbackStrategy:
|
|
49
|
-
"""Manages fallback strategy for routing tasks to Background Agents."""
|
|
50
|
-
|
|
51
|
-
# Task type mappings
|
|
52
|
-
HEAVY_TASKS = {
|
|
53
|
-
"analyze-project",
|
|
54
|
-
"refactor-large",
|
|
55
|
-
"generate-tests",
|
|
56
|
-
"full-review",
|
|
57
|
-
"security-scan",
|
|
58
|
-
"performance-analysis",
|
|
59
|
-
"documentation-generation",
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
MEDIUM_TASKS = {"review-file", "refactor-file", "generate-code", "optimize-code"}
|
|
63
|
-
|
|
64
|
-
LIGHT_TASKS = {"lint-file", "type-check", "format-code", "quick-review"}
|
|
65
|
-
|
|
66
|
-
def __init__(
|
|
67
|
-
self,
|
|
68
|
-
config: ProjectConfig | None = None,
|
|
69
|
-
resource_monitor: ResourceMonitor | None = None,
|
|
70
|
-
force_background: bool = False,
|
|
71
|
-
):
|
|
72
|
-
"""
|
|
73
|
-
Initialize fallback strategy.
|
|
74
|
-
|
|
75
|
-
Args:
|
|
76
|
-
config: Optional ProjectConfig
|
|
77
|
-
resource_monitor: Optional ResourceMonitor instance
|
|
78
|
-
force_background: If True, always use background agents
|
|
79
|
-
"""
|
|
80
|
-
self.config = config
|
|
81
|
-
self.resource_monitor = resource_monitor
|
|
82
|
-
self.force_background = force_background
|
|
83
|
-
# NUC-specific config removed; empty dict for API compatibility.
|
|
84
|
-
self.nuc_config: dict[str, Any] = {}
|
|
85
|
-
|
|
86
|
-
# Initialize duration estimator
|
|
87
|
-
threshold = (
|
|
88
|
-
config.workflow.duration_threshold_seconds
|
|
89
|
-
if config and config.workflow
|
|
90
|
-
else 30.0
|
|
91
|
-
)
|
|
92
|
-
project_root = Path.cwd()
|
|
93
|
-
self.duration_estimator = TaskDurationEstimator(
|
|
94
|
-
project_root=project_root, default_threshold=threshold
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
def classify_task(self, task_name: str) -> TaskType:
|
|
98
|
-
"""
|
|
99
|
-
Classify a task by type.
|
|
100
|
-
|
|
101
|
-
Args:
|
|
102
|
-
task_name: Name of the task
|
|
103
|
-
|
|
104
|
-
Returns:
|
|
105
|
-
TaskType
|
|
106
|
-
"""
|
|
107
|
-
task_lower = task_name.lower()
|
|
108
|
-
|
|
109
|
-
# Check heavy tasks
|
|
110
|
-
if any(heavy in task_lower for heavy in self.HEAVY_TASKS):
|
|
111
|
-
return TaskType.HEAVY
|
|
112
|
-
|
|
113
|
-
# Check medium tasks
|
|
114
|
-
if any(medium in task_lower for medium in self.MEDIUM_TASKS):
|
|
115
|
-
return TaskType.MEDIUM
|
|
116
|
-
|
|
117
|
-
# Check light tasks
|
|
118
|
-
if any(light in task_lower for light in self.LIGHT_TASKS):
|
|
119
|
-
return TaskType.LIGHT
|
|
120
|
-
|
|
121
|
-
# Default to medium if unknown
|
|
122
|
-
return TaskType.MEDIUM
|
|
123
|
-
|
|
124
|
-
def should_use_background_agent(
|
|
125
|
-
self,
|
|
126
|
-
task_name: str,
|
|
127
|
-
check_resources: bool = True,
|
|
128
|
-
agent_name: str | None = None,
|
|
129
|
-
command: str | None = None,
|
|
130
|
-
file_count: int = 1,
|
|
131
|
-
file_size_kb: float = 0.0,
|
|
132
|
-
) -> TaskDecision:
|
|
133
|
-
"""
|
|
134
|
-
Determine if a task should use Background Agent.
|
|
135
|
-
|
|
136
|
-
Args:
|
|
137
|
-
task_name: Name of the task
|
|
138
|
-
check_resources: If True, check current resource usage
|
|
139
|
-
agent_name: Optional agent name for duration estimation
|
|
140
|
-
command: Optional command name for duration estimation
|
|
141
|
-
file_count: Number of files to process (for duration estimation)
|
|
142
|
-
file_size_kb: Total file size in KB (for duration estimation)
|
|
143
|
-
|
|
144
|
-
Returns:
|
|
145
|
-
TaskDecision
|
|
146
|
-
"""
|
|
147
|
-
# Force background if configured
|
|
148
|
-
if self.force_background:
|
|
149
|
-
return TaskDecision(
|
|
150
|
-
task_name=task_name,
|
|
151
|
-
task_type=TaskType.HEAVY,
|
|
152
|
-
use_background=True,
|
|
153
|
-
reason="Force background mode enabled",
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
# Check NUC config
|
|
157
|
-
nuc_optimization = self.nuc_config.get("optimization", {})
|
|
158
|
-
default_for = nuc_optimization.get("background_agents", {}).get(
|
|
159
|
-
"default_for", []
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
if any(default_task in task_name.lower() for default_task in default_for):
|
|
163
|
-
return TaskDecision(
|
|
164
|
-
task_name=task_name,
|
|
165
|
-
task_type=TaskType.HEAVY,
|
|
166
|
-
use_background=True,
|
|
167
|
-
reason="Task configured for background agent in NUC config",
|
|
168
|
-
)
|
|
169
|
-
|
|
170
|
-
# Check duration estimation if agent/command provided
|
|
171
|
-
if agent_name and command:
|
|
172
|
-
threshold = (
|
|
173
|
-
self.config.workflow.duration_threshold_seconds
|
|
174
|
-
if self.config and self.config.workflow
|
|
175
|
-
else 30.0
|
|
176
|
-
)
|
|
177
|
-
should_use, estimate = self.duration_estimator.should_use_background_agent(
|
|
178
|
-
agent_name=agent_name,
|
|
179
|
-
command=command,
|
|
180
|
-
file_count=file_count,
|
|
181
|
-
file_size_kb=file_size_kb,
|
|
182
|
-
threshold=threshold,
|
|
183
|
-
)
|
|
184
|
-
|
|
185
|
-
if should_use:
|
|
186
|
-
return TaskDecision(
|
|
187
|
-
task_name=task_name,
|
|
188
|
-
task_type=TaskType.HEAVY,
|
|
189
|
-
use_background=True,
|
|
190
|
-
reason=f"Estimated duration {estimate.estimated_seconds:.1f}s >= threshold {threshold}s ({estimate.method})",
|
|
191
|
-
)
|
|
192
|
-
else:
|
|
193
|
-
# Duration-based decision: use direct execution
|
|
194
|
-
return TaskDecision(
|
|
195
|
-
task_name=task_name,
|
|
196
|
-
task_type=TaskType.LIGHT,
|
|
197
|
-
use_background=False,
|
|
198
|
-
reason=f"Estimated duration {estimate.estimated_seconds:.1f}s < threshold {threshold}s ({estimate.method})",
|
|
199
|
-
)
|
|
200
|
-
|
|
201
|
-
# Classify task
|
|
202
|
-
task_type = self.classify_task(task_name)
|
|
203
|
-
|
|
204
|
-
# Heavy tasks always use background
|
|
205
|
-
if task_type == TaskType.HEAVY:
|
|
206
|
-
return TaskDecision(
|
|
207
|
-
task_name=task_name,
|
|
208
|
-
task_type=task_type,
|
|
209
|
-
use_background=True,
|
|
210
|
-
reason="Heavy task type - should use background agent",
|
|
211
|
-
)
|
|
212
|
-
|
|
213
|
-
# Light tasks never use background
|
|
214
|
-
if task_type == TaskType.LIGHT:
|
|
215
|
-
return TaskDecision(
|
|
216
|
-
task_name=task_name,
|
|
217
|
-
task_type=task_type,
|
|
218
|
-
use_background=False,
|
|
219
|
-
reason="Light task type - can run locally",
|
|
220
|
-
)
|
|
221
|
-
|
|
222
|
-
# Medium tasks: check resources
|
|
223
|
-
if check_resources and self.resource_monitor:
|
|
224
|
-
metrics = self.resource_monitor.get_current_metrics()
|
|
225
|
-
|
|
226
|
-
if metrics.is_high_usage():
|
|
227
|
-
return TaskDecision(
|
|
228
|
-
task_name=task_name,
|
|
229
|
-
task_type=task_type,
|
|
230
|
-
use_background=True,
|
|
231
|
-
reason=f"Resource usage high (CPU: {metrics.cpu_percent:.1f}%, Memory: {metrics.memory_percent:.1f}%)",
|
|
232
|
-
resource_metrics=metrics,
|
|
233
|
-
)
|
|
234
|
-
|
|
235
|
-
# Default: medium tasks run locally if resources are available
|
|
236
|
-
return TaskDecision(
|
|
237
|
-
task_name=task_name,
|
|
238
|
-
task_type=task_type,
|
|
239
|
-
use_background=False,
|
|
240
|
-
reason="Medium task - resources available for local execution",
|
|
241
|
-
)
|
|
242
|
-
|
|
243
|
-
def get_background_agent_for_task(self, task_name: str) -> str | None:
|
|
244
|
-
"""
|
|
245
|
-
Get the appropriate Background Agent for a task.
|
|
246
|
-
|
|
247
|
-
Args:
|
|
248
|
-
task_name: Name of the task
|
|
249
|
-
|
|
250
|
-
Returns:
|
|
251
|
-
Background Agent name or None
|
|
252
|
-
"""
|
|
253
|
-
# Map tasks to background agents
|
|
254
|
-
task_mapping = {
|
|
255
|
-
"analyze-project": "TappsCodingAgents Quality Analyzer",
|
|
256
|
-
"refactor-large": "TappsCodingAgents Refactoring Agent",
|
|
257
|
-
"generate-tests": "TappsCodingAgents Testing Agent",
|
|
258
|
-
"full-review": "TappsCodingAgents Quality Analyzer",
|
|
259
|
-
"security-scan": "TappsCodingAgents Security Agent",
|
|
260
|
-
"documentation-generation": "TappsCodingAgents Documentation Agent",
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
task_lower = task_name.lower()
|
|
264
|
-
for task_key, agent_name in task_mapping.items():
|
|
265
|
-
if task_key in task_lower:
|
|
266
|
-
return agent_name
|
|
267
|
-
|
|
268
|
-
# Default agent
|
|
269
|
-
return "TappsCodingAgents Quality Analyzer"
|
|
270
|
-
|
|
271
|
-
def get_fallback_recommendations(self) -> list[str]:
|
|
272
|
-
"""
|
|
273
|
-
Get recommendations for fallback strategy.
|
|
274
|
-
|
|
275
|
-
Returns:
|
|
276
|
-
List of recommendation strings
|
|
277
|
-
"""
|
|
278
|
-
recommendations = []
|
|
279
|
-
|
|
280
|
-
if not self.resource_monitor:
|
|
281
|
-
recommendations.append("Enable resource monitoring for automatic fallback")
|
|
282
|
-
|
|
283
|
-
# Check current resources
|
|
284
|
-
if self.resource_monitor:
|
|
285
|
-
metrics = self.resource_monitor.get_current_metrics()
|
|
286
|
-
if metrics.is_high_usage():
|
|
287
|
-
recommendations.append(
|
|
288
|
-
"Current resource usage is high - consider using Background Agents"
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
return recommendations
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
def create_fallback_strategy(
|
|
295
|
-
config: ProjectConfig | None = None,
|
|
296
|
-
resource_monitor: ResourceMonitor | None = None,
|
|
297
|
-
force_background: bool = False,
|
|
298
|
-
) -> FallbackStrategy:
|
|
299
|
-
"""
|
|
300
|
-
Convenience function to create a fallback strategy.
|
|
301
|
-
|
|
302
|
-
Args:
|
|
303
|
-
config: Optional ProjectConfig
|
|
304
|
-
resource_monitor: Optional ResourceMonitor
|
|
305
|
-
force_background: Force background mode
|
|
306
|
-
|
|
307
|
-
Returns:
|
|
308
|
-
FallbackStrategy instance
|
|
309
|
-
"""
|
|
310
|
-
return FallbackStrategy(
|
|
311
|
-
config=config,
|
|
312
|
-
resource_monitor=resource_monitor,
|
|
313
|
-
force_background=force_background,
|
|
314
|
-
)
|
|
1
|
+
"""
|
|
2
|
+
Background Agent Fallback Strategy
|
|
3
|
+
|
|
4
|
+
Automatically routes heavy tasks to Background Agents when resources are constrained.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from enum import Enum
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from .config import ProjectConfig
|
|
13
|
+
from .resource_monitor import ResourceMetrics, ResourceMonitor
|
|
14
|
+
from .task_duration import TaskDurationEstimator
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class TaskType(Enum):
|
|
18
|
+
"""Task type classification."""
|
|
19
|
+
|
|
20
|
+
LIGHT = "light" # Quick tasks, can run locally
|
|
21
|
+
MEDIUM = "medium" # Moderate tasks, may need background
|
|
22
|
+
HEAVY = "heavy" # Heavy tasks, should use background agent
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass
|
|
26
|
+
class TaskDecision:
|
|
27
|
+
"""Decision on where to run a task."""
|
|
28
|
+
|
|
29
|
+
task_name: str
|
|
30
|
+
task_type: TaskType
|
|
31
|
+
use_background: bool
|
|
32
|
+
reason: str
|
|
33
|
+
resource_metrics: ResourceMetrics | None = None
|
|
34
|
+
|
|
35
|
+
def to_dict(self) -> dict[str, Any]:
|
|
36
|
+
"""Convert to dictionary."""
|
|
37
|
+
return {
|
|
38
|
+
"task_name": self.task_name,
|
|
39
|
+
"task_type": self.task_type.value,
|
|
40
|
+
"use_background": self.use_background,
|
|
41
|
+
"reason": self.reason,
|
|
42
|
+
"resource_metrics": (
|
|
43
|
+
self.resource_metrics.to_dict() if self.resource_metrics else None
|
|
44
|
+
),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class FallbackStrategy:
|
|
49
|
+
"""Manages fallback strategy for routing tasks to Background Agents."""
|
|
50
|
+
|
|
51
|
+
# Task type mappings
|
|
52
|
+
HEAVY_TASKS = {
|
|
53
|
+
"analyze-project",
|
|
54
|
+
"refactor-large",
|
|
55
|
+
"generate-tests",
|
|
56
|
+
"full-review",
|
|
57
|
+
"security-scan",
|
|
58
|
+
"performance-analysis",
|
|
59
|
+
"documentation-generation",
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
MEDIUM_TASKS = {"review-file", "refactor-file", "generate-code", "optimize-code"}
|
|
63
|
+
|
|
64
|
+
LIGHT_TASKS = {"lint-file", "type-check", "format-code", "quick-review"}
|
|
65
|
+
|
|
66
|
+
def __init__(
|
|
67
|
+
self,
|
|
68
|
+
config: ProjectConfig | None = None,
|
|
69
|
+
resource_monitor: ResourceMonitor | None = None,
|
|
70
|
+
force_background: bool = False,
|
|
71
|
+
):
|
|
72
|
+
"""
|
|
73
|
+
Initialize fallback strategy.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
config: Optional ProjectConfig
|
|
77
|
+
resource_monitor: Optional ResourceMonitor instance
|
|
78
|
+
force_background: If True, always use background agents
|
|
79
|
+
"""
|
|
80
|
+
self.config = config
|
|
81
|
+
self.resource_monitor = resource_monitor
|
|
82
|
+
self.force_background = force_background
|
|
83
|
+
# NUC-specific config removed; empty dict for API compatibility.
|
|
84
|
+
self.nuc_config: dict[str, Any] = {}
|
|
85
|
+
|
|
86
|
+
# Initialize duration estimator
|
|
87
|
+
threshold = (
|
|
88
|
+
config.workflow.duration_threshold_seconds
|
|
89
|
+
if config and config.workflow
|
|
90
|
+
else 30.0
|
|
91
|
+
)
|
|
92
|
+
project_root = Path.cwd()
|
|
93
|
+
self.duration_estimator = TaskDurationEstimator(
|
|
94
|
+
project_root=project_root, default_threshold=threshold
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
def classify_task(self, task_name: str) -> TaskType:
|
|
98
|
+
"""
|
|
99
|
+
Classify a task by type.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
task_name: Name of the task
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
TaskType
|
|
106
|
+
"""
|
|
107
|
+
task_lower = task_name.lower()
|
|
108
|
+
|
|
109
|
+
# Check heavy tasks
|
|
110
|
+
if any(heavy in task_lower for heavy in self.HEAVY_TASKS):
|
|
111
|
+
return TaskType.HEAVY
|
|
112
|
+
|
|
113
|
+
# Check medium tasks
|
|
114
|
+
if any(medium in task_lower for medium in self.MEDIUM_TASKS):
|
|
115
|
+
return TaskType.MEDIUM
|
|
116
|
+
|
|
117
|
+
# Check light tasks
|
|
118
|
+
if any(light in task_lower for light in self.LIGHT_TASKS):
|
|
119
|
+
return TaskType.LIGHT
|
|
120
|
+
|
|
121
|
+
# Default to medium if unknown
|
|
122
|
+
return TaskType.MEDIUM
|
|
123
|
+
|
|
124
|
+
def should_use_background_agent(
|
|
125
|
+
self,
|
|
126
|
+
task_name: str,
|
|
127
|
+
check_resources: bool = True,
|
|
128
|
+
agent_name: str | None = None,
|
|
129
|
+
command: str | None = None,
|
|
130
|
+
file_count: int = 1,
|
|
131
|
+
file_size_kb: float = 0.0,
|
|
132
|
+
) -> TaskDecision:
|
|
133
|
+
"""
|
|
134
|
+
Determine if a task should use Background Agent.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
task_name: Name of the task
|
|
138
|
+
check_resources: If True, check current resource usage
|
|
139
|
+
agent_name: Optional agent name for duration estimation
|
|
140
|
+
command: Optional command name for duration estimation
|
|
141
|
+
file_count: Number of files to process (for duration estimation)
|
|
142
|
+
file_size_kb: Total file size in KB (for duration estimation)
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
TaskDecision
|
|
146
|
+
"""
|
|
147
|
+
# Force background if configured
|
|
148
|
+
if self.force_background:
|
|
149
|
+
return TaskDecision(
|
|
150
|
+
task_name=task_name,
|
|
151
|
+
task_type=TaskType.HEAVY,
|
|
152
|
+
use_background=True,
|
|
153
|
+
reason="Force background mode enabled",
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
# Check NUC config
|
|
157
|
+
nuc_optimization = self.nuc_config.get("optimization", {})
|
|
158
|
+
default_for = nuc_optimization.get("background_agents", {}).get(
|
|
159
|
+
"default_for", []
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
if any(default_task in task_name.lower() for default_task in default_for):
|
|
163
|
+
return TaskDecision(
|
|
164
|
+
task_name=task_name,
|
|
165
|
+
task_type=TaskType.HEAVY,
|
|
166
|
+
use_background=True,
|
|
167
|
+
reason="Task configured for background agent in NUC config",
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
# Check duration estimation if agent/command provided
|
|
171
|
+
if agent_name and command:
|
|
172
|
+
threshold = (
|
|
173
|
+
self.config.workflow.duration_threshold_seconds
|
|
174
|
+
if self.config and self.config.workflow
|
|
175
|
+
else 30.0
|
|
176
|
+
)
|
|
177
|
+
should_use, estimate = self.duration_estimator.should_use_background_agent(
|
|
178
|
+
agent_name=agent_name,
|
|
179
|
+
command=command,
|
|
180
|
+
file_count=file_count,
|
|
181
|
+
file_size_kb=file_size_kb,
|
|
182
|
+
threshold=threshold,
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
if should_use:
|
|
186
|
+
return TaskDecision(
|
|
187
|
+
task_name=task_name,
|
|
188
|
+
task_type=TaskType.HEAVY,
|
|
189
|
+
use_background=True,
|
|
190
|
+
reason=f"Estimated duration {estimate.estimated_seconds:.1f}s >= threshold {threshold}s ({estimate.method})",
|
|
191
|
+
)
|
|
192
|
+
else:
|
|
193
|
+
# Duration-based decision: use direct execution
|
|
194
|
+
return TaskDecision(
|
|
195
|
+
task_name=task_name,
|
|
196
|
+
task_type=TaskType.LIGHT,
|
|
197
|
+
use_background=False,
|
|
198
|
+
reason=f"Estimated duration {estimate.estimated_seconds:.1f}s < threshold {threshold}s ({estimate.method})",
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
# Classify task
|
|
202
|
+
task_type = self.classify_task(task_name)
|
|
203
|
+
|
|
204
|
+
# Heavy tasks always use background
|
|
205
|
+
if task_type == TaskType.HEAVY:
|
|
206
|
+
return TaskDecision(
|
|
207
|
+
task_name=task_name,
|
|
208
|
+
task_type=task_type,
|
|
209
|
+
use_background=True,
|
|
210
|
+
reason="Heavy task type - should use background agent",
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
# Light tasks never use background
|
|
214
|
+
if task_type == TaskType.LIGHT:
|
|
215
|
+
return TaskDecision(
|
|
216
|
+
task_name=task_name,
|
|
217
|
+
task_type=task_type,
|
|
218
|
+
use_background=False,
|
|
219
|
+
reason="Light task type - can run locally",
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
# Medium tasks: check resources
|
|
223
|
+
if check_resources and self.resource_monitor:
|
|
224
|
+
metrics = self.resource_monitor.get_current_metrics()
|
|
225
|
+
|
|
226
|
+
if metrics.is_high_usage():
|
|
227
|
+
return TaskDecision(
|
|
228
|
+
task_name=task_name,
|
|
229
|
+
task_type=task_type,
|
|
230
|
+
use_background=True,
|
|
231
|
+
reason=f"Resource usage high (CPU: {metrics.cpu_percent:.1f}%, Memory: {metrics.memory_percent:.1f}%)",
|
|
232
|
+
resource_metrics=metrics,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
# Default: medium tasks run locally if resources are available
|
|
236
|
+
return TaskDecision(
|
|
237
|
+
task_name=task_name,
|
|
238
|
+
task_type=task_type,
|
|
239
|
+
use_background=False,
|
|
240
|
+
reason="Medium task - resources available for local execution",
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
def get_background_agent_for_task(self, task_name: str) -> str | None:
|
|
244
|
+
"""
|
|
245
|
+
Get the appropriate Background Agent for a task.
|
|
246
|
+
|
|
247
|
+
Args:
|
|
248
|
+
task_name: Name of the task
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
Background Agent name or None
|
|
252
|
+
"""
|
|
253
|
+
# Map tasks to background agents
|
|
254
|
+
task_mapping = {
|
|
255
|
+
"analyze-project": "TappsCodingAgents Quality Analyzer",
|
|
256
|
+
"refactor-large": "TappsCodingAgents Refactoring Agent",
|
|
257
|
+
"generate-tests": "TappsCodingAgents Testing Agent",
|
|
258
|
+
"full-review": "TappsCodingAgents Quality Analyzer",
|
|
259
|
+
"security-scan": "TappsCodingAgents Security Agent",
|
|
260
|
+
"documentation-generation": "TappsCodingAgents Documentation Agent",
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
task_lower = task_name.lower()
|
|
264
|
+
for task_key, agent_name in task_mapping.items():
|
|
265
|
+
if task_key in task_lower:
|
|
266
|
+
return agent_name
|
|
267
|
+
|
|
268
|
+
# Default agent
|
|
269
|
+
return "TappsCodingAgents Quality Analyzer"
|
|
270
|
+
|
|
271
|
+
def get_fallback_recommendations(self) -> list[str]:
|
|
272
|
+
"""
|
|
273
|
+
Get recommendations for fallback strategy.
|
|
274
|
+
|
|
275
|
+
Returns:
|
|
276
|
+
List of recommendation strings
|
|
277
|
+
"""
|
|
278
|
+
recommendations = []
|
|
279
|
+
|
|
280
|
+
if not self.resource_monitor:
|
|
281
|
+
recommendations.append("Enable resource monitoring for automatic fallback")
|
|
282
|
+
|
|
283
|
+
# Check current resources
|
|
284
|
+
if self.resource_monitor:
|
|
285
|
+
metrics = self.resource_monitor.get_current_metrics()
|
|
286
|
+
if metrics.is_high_usage():
|
|
287
|
+
recommendations.append(
|
|
288
|
+
"Current resource usage is high - consider using Background Agents"
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
return recommendations
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def create_fallback_strategy(
|
|
295
|
+
config: ProjectConfig | None = None,
|
|
296
|
+
resource_monitor: ResourceMonitor | None = None,
|
|
297
|
+
force_background: bool = False,
|
|
298
|
+
) -> FallbackStrategy:
|
|
299
|
+
"""
|
|
300
|
+
Convenience function to create a fallback strategy.
|
|
301
|
+
|
|
302
|
+
Args:
|
|
303
|
+
config: Optional ProjectConfig
|
|
304
|
+
resource_monitor: Optional ResourceMonitor
|
|
305
|
+
force_background: Force background mode
|
|
306
|
+
|
|
307
|
+
Returns:
|
|
308
|
+
FallbackStrategy instance
|
|
309
|
+
"""
|
|
310
|
+
return FallbackStrategy(
|
|
311
|
+
config=config,
|
|
312
|
+
resource_monitor=resource_monitor,
|
|
313
|
+
force_background=force_background,
|
|
314
|
+
)
|