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,319 +1,319 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Prompt enhancement middleware for automatic prompt enhancement in CLI commands.
|
|
3
|
-
|
|
4
|
-
This module provides middleware that automatically enhances user prompts
|
|
5
|
-
before they reach individual agents, ensuring high-quality code generation.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
import asyncio
|
|
9
|
-
from argparse import Namespace
|
|
10
|
-
from typing import Any
|
|
11
|
-
|
|
12
|
-
from ...agents.enhancer.agent import EnhancerAgent
|
|
13
|
-
from ...core.config import AutoEnhancementConfig, load_config
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# Mapping of agent.command -> prompt argument name. Value None means do not enhance.
|
|
17
|
-
# Intentional exclusions: (debugger, debug) — error text must stay exact;
|
|
18
|
-
# (implementer, refactor) — instructions are usually narrow; improver improve — not added.
|
|
19
|
-
# architect and designer default to enabled: False in AutoEnhancementConfig.commands.
|
|
20
|
-
PROMPT_ARGUMENT_MAP: dict[tuple[str, str], str] = {
|
|
21
|
-
("implementer", "implement"): "specification",
|
|
22
|
-
("implementer", "generate-code"): "specification",
|
|
23
|
-
("planner", "plan"): "description",
|
|
24
|
-
("planner", "create-story"): "description",
|
|
25
|
-
("architect", "design-system"): "requirements",
|
|
26
|
-
("designer", "design-api"): "requirements",
|
|
27
|
-
("designer", "design-data-model"): "requirements",
|
|
28
|
-
("designer", "design-system"): "project_description",
|
|
29
|
-
("designer", "define-design-system"): "project_description",
|
|
30
|
-
("analyst", "gather-requirements"): "description",
|
|
31
|
-
# Skip enhancement: error text and narrow refactor instructions
|
|
32
|
-
("debugger", "debug"): None,
|
|
33
|
-
("implementer", "refactor"): None,
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def detect_prompt_argument(args: Namespace) -> tuple[str, str] | None:
|
|
38
|
-
"""
|
|
39
|
-
Detect prompt argument in CLI command arguments.
|
|
40
|
-
|
|
41
|
-
Args:
|
|
42
|
-
args: Parsed command-line arguments
|
|
43
|
-
|
|
44
|
-
Returns:
|
|
45
|
-
Tuple of (argument_name, argument_value) if found, None otherwise
|
|
46
|
-
"""
|
|
47
|
-
agent = getattr(args, "agent", None)
|
|
48
|
-
command = getattr(args, "command", None)
|
|
49
|
-
|
|
50
|
-
if not agent or not command:
|
|
51
|
-
return None
|
|
52
|
-
|
|
53
|
-
# Normalize command (remove * prefix if present)
|
|
54
|
-
if command.startswith("*"):
|
|
55
|
-
command = command[1:]
|
|
56
|
-
|
|
57
|
-
# Look up prompt argument name
|
|
58
|
-
prompt_arg_name = PROMPT_ARGUMENT_MAP.get((agent, command))
|
|
59
|
-
if prompt_arg_name is None:
|
|
60
|
-
return None
|
|
61
|
-
|
|
62
|
-
# Get prompt value
|
|
63
|
-
prompt_value = getattr(args, prompt_arg_name, None)
|
|
64
|
-
if not prompt_value or not isinstance(prompt_value, str):
|
|
65
|
-
return None
|
|
66
|
-
|
|
67
|
-
return (prompt_arg_name, prompt_value)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
def assess_prompt_quality(prompt: str, config: AutoEnhancementConfig) -> float:
|
|
71
|
-
"""
|
|
72
|
-
Assess prompt quality and return a score (0-100).
|
|
73
|
-
|
|
74
|
-
Higher scores indicate better quality prompts that may not need enhancement.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
prompt: The prompt to assess
|
|
78
|
-
config: Auto-enhancement configuration
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
Quality score from 0-100
|
|
82
|
-
"""
|
|
83
|
-
if not prompt or len(prompt.strip()) < config.min_prompt_length:
|
|
84
|
-
return 0.0
|
|
85
|
-
|
|
86
|
-
score = 50.0 # Base score
|
|
87
|
-
|
|
88
|
-
# Length factor (longer prompts often more detailed)
|
|
89
|
-
length_factor = min(len(prompt) / 200, 1.0) * 20 # Up to 20 points
|
|
90
|
-
score += length_factor
|
|
91
|
-
|
|
92
|
-
# Keyword indicators of quality
|
|
93
|
-
quality_keywords = [
|
|
94
|
-
"requirements",
|
|
95
|
-
"specification",
|
|
96
|
-
"architecture",
|
|
97
|
-
"design",
|
|
98
|
-
"implementation",
|
|
99
|
-
"test",
|
|
100
|
-
"error handling",
|
|
101
|
-
"validation",
|
|
102
|
-
"security",
|
|
103
|
-
"performance",
|
|
104
|
-
]
|
|
105
|
-
keyword_count = sum(1 for keyword in quality_keywords if keyword.lower() in prompt.lower())
|
|
106
|
-
keyword_factor = min(keyword_count / 5, 1.0) * 15 # Up to 15 points
|
|
107
|
-
score += keyword_factor
|
|
108
|
-
|
|
109
|
-
# Structure indicators (sentences, paragraphs)
|
|
110
|
-
sentence_count = prompt.count(".") + prompt.count("!") + prompt.count("?")
|
|
111
|
-
if sentence_count > 3:
|
|
112
|
-
score += 10 # Multiple sentences indicate detail
|
|
113
|
-
|
|
114
|
-
# Technical terms (indicates domain knowledge)
|
|
115
|
-
technical_terms = [
|
|
116
|
-
"api",
|
|
117
|
-
"endpoint",
|
|
118
|
-
"database",
|
|
119
|
-
"model",
|
|
120
|
-
"service",
|
|
121
|
-
"controller",
|
|
122
|
-
"middleware",
|
|
123
|
-
"authentication",
|
|
124
|
-
"authorization",
|
|
125
|
-
]
|
|
126
|
-
tech_count = sum(1 for term in technical_terms if term.lower() in prompt.lower())
|
|
127
|
-
tech_factor = min(tech_count / 3, 1.0) * 5 # Up to 5 points
|
|
128
|
-
score += tech_factor
|
|
129
|
-
|
|
130
|
-
# "Already a spec" heuristics: structured prompts often need no enhancement
|
|
131
|
-
pl = prompt.lower()
|
|
132
|
-
spec_indicators = 0
|
|
133
|
-
if any(c in prompt for c in ("- ", "* ", "• ")) or (
|
|
134
|
-
len([s for s in prompt.split() if s and s[0].isdigit() and "." in s[:3]]) >= 2
|
|
135
|
-
):
|
|
136
|
-
spec_indicators += 2 # bullets or numbered list
|
|
137
|
-
if "acceptance criteria" in pl or "acceptance criterion" in pl:
|
|
138
|
-
spec_indicators += 2
|
|
139
|
-
if "user story" in pl or "as a " in pl and " i want " in pl:
|
|
140
|
-
spec_indicators += 2
|
|
141
|
-
if any(w in pl for w in (" shall ", " must ", " should ")):
|
|
142
|
-
spec_indicators += 2
|
|
143
|
-
spec_factor = min(spec_indicators / 4, 1.0) * 20 # Up to 20 points
|
|
144
|
-
score += spec_factor
|
|
145
|
-
|
|
146
|
-
return min(score, 100.0)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def should_enhance_prompt(
|
|
150
|
-
prompt: str, agent: str, command: str, config: AutoEnhancementConfig
|
|
151
|
-
) -> bool:
|
|
152
|
-
"""
|
|
153
|
-
Determine if a prompt should be enhanced.
|
|
154
|
-
|
|
155
|
-
Args:
|
|
156
|
-
prompt: The prompt to check
|
|
157
|
-
agent: Agent name
|
|
158
|
-
command: Command name
|
|
159
|
-
config: Auto-enhancement configuration
|
|
160
|
-
|
|
161
|
-
Returns:
|
|
162
|
-
True if prompt should be enhanced, False otherwise
|
|
163
|
-
"""
|
|
164
|
-
if not config.enabled:
|
|
165
|
-
return False
|
|
166
|
-
|
|
167
|
-
# Check per-command settings
|
|
168
|
-
command_config = config.commands.get(agent, {})
|
|
169
|
-
if not command_config.get("enabled", True):
|
|
170
|
-
return False
|
|
171
|
-
|
|
172
|
-
# Assess quality
|
|
173
|
-
quality_score = assess_prompt_quality(prompt, config)
|
|
174
|
-
return quality_score < config.quality_threshold
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
async def enhance_prompt(
|
|
178
|
-
prompt: str,
|
|
179
|
-
agent: str,
|
|
180
|
-
command: str,
|
|
181
|
-
config: AutoEnhancementConfig,
|
|
182
|
-
enhance_mode: str | None = None,
|
|
183
|
-
) -> str:
|
|
184
|
-
"""
|
|
185
|
-
Enhance a prompt using the Enhancer Agent.
|
|
186
|
-
|
|
187
|
-
Args:
|
|
188
|
-
prompt: Original prompt
|
|
189
|
-
agent: Target agent name
|
|
190
|
-
command: Target command name
|
|
191
|
-
config: Auto-enhancement configuration
|
|
192
|
-
enhance_mode: Override enhancement mode (quick/full), or None to use config
|
|
193
|
-
|
|
194
|
-
Returns:
|
|
195
|
-
Enhanced prompt string
|
|
196
|
-
"""
|
|
197
|
-
# Get synthesis mode from override, command config, or default
|
|
198
|
-
if enhance_mode:
|
|
199
|
-
synthesis_mode = enhance_mode
|
|
200
|
-
else:
|
|
201
|
-
command_config = config.commands.get(agent, {})
|
|
202
|
-
synthesis_mode = command_config.get("synthesis_mode", "quick")
|
|
203
|
-
|
|
204
|
-
enhancer = EnhancerAgent()
|
|
205
|
-
try:
|
|
206
|
-
await enhancer.activate()
|
|
207
|
-
|
|
208
|
-
if synthesis_mode == "full":
|
|
209
|
-
result = await enhancer.run(
|
|
210
|
-
"enhance",
|
|
211
|
-
prompt=prompt,
|
|
212
|
-
output_format="markdown",
|
|
213
|
-
)
|
|
214
|
-
else:
|
|
215
|
-
result = await enhancer.run(
|
|
216
|
-
"enhance-quick",
|
|
217
|
-
prompt=prompt,
|
|
218
|
-
output_format="markdown",
|
|
219
|
-
)
|
|
220
|
-
|
|
221
|
-
# Extract enhanced prompt from result
|
|
222
|
-
if result.get("success"):
|
|
223
|
-
enhanced_prompt = result.get("enhanced_prompt")
|
|
224
|
-
|
|
225
|
-
# Check if this is Cursor mode (structured data with instruction)
|
|
226
|
-
if isinstance(enhanced_prompt, dict):
|
|
227
|
-
synthesis_data = enhanced_prompt.get("synthesis_data")
|
|
228
|
-
if synthesis_data and isinstance(synthesis_data, dict):
|
|
229
|
-
# Use instruction when present (Cursor/structured path)
|
|
230
|
-
instruction = synthesis_data.get("instruction") or synthesis_data.get("enhanced_prompt")
|
|
231
|
-
if isinstance(instruction, str) and instruction.strip():
|
|
232
|
-
return instruction.strip()
|
|
233
|
-
# No usable instruction: enhancement handled by Cursor; return original
|
|
234
|
-
return prompt
|
|
235
|
-
# Otherwise, try to extract enhanced_prompt from dict
|
|
236
|
-
if "enhanced_prompt" in enhanced_prompt:
|
|
237
|
-
enhanced = enhanced_prompt["enhanced_prompt"]
|
|
238
|
-
if isinstance(enhanced, str):
|
|
239
|
-
return enhanced
|
|
240
|
-
# If it's still a dict, fall back to original
|
|
241
|
-
return prompt
|
|
242
|
-
# No enhanced_prompt in dict, return original
|
|
243
|
-
return prompt
|
|
244
|
-
|
|
245
|
-
# String result (markdown format)
|
|
246
|
-
if isinstance(enhanced_prompt, str):
|
|
247
|
-
return enhanced_prompt
|
|
248
|
-
|
|
249
|
-
# Unexpected format, return original
|
|
250
|
-
return prompt
|
|
251
|
-
else:
|
|
252
|
-
# Enhancement failed, return original
|
|
253
|
-
return prompt
|
|
254
|
-
except Exception:
|
|
255
|
-
# On any error, return original prompt
|
|
256
|
-
return prompt
|
|
257
|
-
finally:
|
|
258
|
-
from ..utils.agent_lifecycle import safe_close_agent_sync
|
|
259
|
-
|
|
260
|
-
safe_close_agent_sync(enhancer)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
def enhance_prompt_if_needed(
|
|
264
|
-
args: Namespace, config: AutoEnhancementConfig | None = None
|
|
265
|
-
) -> Namespace:
|
|
266
|
-
"""
|
|
267
|
-
Enhance prompt in CLI arguments if needed.
|
|
268
|
-
|
|
269
|
-
This is the main entry point for the middleware.
|
|
270
|
-
|
|
271
|
-
Args:
|
|
272
|
-
args: Parsed command-line arguments
|
|
273
|
-
config: Auto-enhancement configuration (loads from file if None)
|
|
274
|
-
|
|
275
|
-
Returns:
|
|
276
|
-
Modified args with enhanced prompt (if enhancement occurred)
|
|
277
|
-
"""
|
|
278
|
-
if config is None:
|
|
279
|
-
project_config = load_config()
|
|
280
|
-
config = project_config.auto_enhancement
|
|
281
|
-
|
|
282
|
-
# Check if enhancement is disabled via flag
|
|
283
|
-
if getattr(args, "no_enhance", False):
|
|
284
|
-
return args
|
|
285
|
-
|
|
286
|
-
# Detect prompt argument
|
|
287
|
-
prompt_info = detect_prompt_argument(args)
|
|
288
|
-
if not prompt_info:
|
|
289
|
-
return args
|
|
290
|
-
|
|
291
|
-
arg_name, prompt_value = prompt_info
|
|
292
|
-
|
|
293
|
-
# Check if we should enhance
|
|
294
|
-
agent = getattr(args, "agent", None)
|
|
295
|
-
command = getattr(args, "command", None)
|
|
296
|
-
if not agent or not command:
|
|
297
|
-
return args
|
|
298
|
-
|
|
299
|
-
# Normalize command
|
|
300
|
-
if command.startswith("*"):
|
|
301
|
-
command = command[1:]
|
|
302
|
-
|
|
303
|
-
# Check if forced enhancement
|
|
304
|
-
force_enhance = getattr(args, "enhance", False)
|
|
305
|
-
enhance_mode_override = getattr(args, "enhance_mode", None)
|
|
306
|
-
|
|
307
|
-
if not force_enhance and not should_enhance_prompt(prompt_value, agent, command, config):
|
|
308
|
-
return args
|
|
309
|
-
|
|
310
|
-
# Enhance the prompt
|
|
311
|
-
enhanced = asyncio.run(
|
|
312
|
-
enhance_prompt(prompt_value, agent, command, config, enhance_mode_override)
|
|
313
|
-
)
|
|
314
|
-
|
|
315
|
-
# Update args with enhanced prompt
|
|
316
|
-
setattr(args, arg_name, enhanced)
|
|
317
|
-
|
|
318
|
-
return args
|
|
319
|
-
|
|
1
|
+
"""
|
|
2
|
+
Prompt enhancement middleware for automatic prompt enhancement in CLI commands.
|
|
3
|
+
|
|
4
|
+
This module provides middleware that automatically enhances user prompts
|
|
5
|
+
before they reach individual agents, ensuring high-quality code generation.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
from argparse import Namespace
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from ...agents.enhancer.agent import EnhancerAgent
|
|
13
|
+
from ...core.config import AutoEnhancementConfig, load_config
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Mapping of agent.command -> prompt argument name. Value None means do not enhance.
|
|
17
|
+
# Intentional exclusions: (debugger, debug) — error text must stay exact;
|
|
18
|
+
# (implementer, refactor) — instructions are usually narrow; improver improve — not added.
|
|
19
|
+
# architect and designer default to enabled: False in AutoEnhancementConfig.commands.
|
|
20
|
+
PROMPT_ARGUMENT_MAP: dict[tuple[str, str], str] = {
|
|
21
|
+
("implementer", "implement"): "specification",
|
|
22
|
+
("implementer", "generate-code"): "specification",
|
|
23
|
+
("planner", "plan"): "description",
|
|
24
|
+
("planner", "create-story"): "description",
|
|
25
|
+
("architect", "design-system"): "requirements",
|
|
26
|
+
("designer", "design-api"): "requirements",
|
|
27
|
+
("designer", "design-data-model"): "requirements",
|
|
28
|
+
("designer", "design-system"): "project_description",
|
|
29
|
+
("designer", "define-design-system"): "project_description",
|
|
30
|
+
("analyst", "gather-requirements"): "description",
|
|
31
|
+
# Skip enhancement: error text and narrow refactor instructions
|
|
32
|
+
("debugger", "debug"): None,
|
|
33
|
+
("implementer", "refactor"): None,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def detect_prompt_argument(args: Namespace) -> tuple[str, str] | None:
|
|
38
|
+
"""
|
|
39
|
+
Detect prompt argument in CLI command arguments.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
args: Parsed command-line arguments
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
Tuple of (argument_name, argument_value) if found, None otherwise
|
|
46
|
+
"""
|
|
47
|
+
agent = getattr(args, "agent", None)
|
|
48
|
+
command = getattr(args, "command", None)
|
|
49
|
+
|
|
50
|
+
if not agent or not command:
|
|
51
|
+
return None
|
|
52
|
+
|
|
53
|
+
# Normalize command (remove * prefix if present)
|
|
54
|
+
if command.startswith("*"):
|
|
55
|
+
command = command[1:]
|
|
56
|
+
|
|
57
|
+
# Look up prompt argument name
|
|
58
|
+
prompt_arg_name = PROMPT_ARGUMENT_MAP.get((agent, command))
|
|
59
|
+
if prompt_arg_name is None:
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
# Get prompt value
|
|
63
|
+
prompt_value = getattr(args, prompt_arg_name, None)
|
|
64
|
+
if not prompt_value or not isinstance(prompt_value, str):
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
return (prompt_arg_name, prompt_value)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def assess_prompt_quality(prompt: str, config: AutoEnhancementConfig) -> float:
|
|
71
|
+
"""
|
|
72
|
+
Assess prompt quality and return a score (0-100).
|
|
73
|
+
|
|
74
|
+
Higher scores indicate better quality prompts that may not need enhancement.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
prompt: The prompt to assess
|
|
78
|
+
config: Auto-enhancement configuration
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
Quality score from 0-100
|
|
82
|
+
"""
|
|
83
|
+
if not prompt or len(prompt.strip()) < config.min_prompt_length:
|
|
84
|
+
return 0.0
|
|
85
|
+
|
|
86
|
+
score = 50.0 # Base score
|
|
87
|
+
|
|
88
|
+
# Length factor (longer prompts often more detailed)
|
|
89
|
+
length_factor = min(len(prompt) / 200, 1.0) * 20 # Up to 20 points
|
|
90
|
+
score += length_factor
|
|
91
|
+
|
|
92
|
+
# Keyword indicators of quality
|
|
93
|
+
quality_keywords = [
|
|
94
|
+
"requirements",
|
|
95
|
+
"specification",
|
|
96
|
+
"architecture",
|
|
97
|
+
"design",
|
|
98
|
+
"implementation",
|
|
99
|
+
"test",
|
|
100
|
+
"error handling",
|
|
101
|
+
"validation",
|
|
102
|
+
"security",
|
|
103
|
+
"performance",
|
|
104
|
+
]
|
|
105
|
+
keyword_count = sum(1 for keyword in quality_keywords if keyword.lower() in prompt.lower())
|
|
106
|
+
keyword_factor = min(keyword_count / 5, 1.0) * 15 # Up to 15 points
|
|
107
|
+
score += keyword_factor
|
|
108
|
+
|
|
109
|
+
# Structure indicators (sentences, paragraphs)
|
|
110
|
+
sentence_count = prompt.count(".") + prompt.count("!") + prompt.count("?")
|
|
111
|
+
if sentence_count > 3:
|
|
112
|
+
score += 10 # Multiple sentences indicate detail
|
|
113
|
+
|
|
114
|
+
# Technical terms (indicates domain knowledge)
|
|
115
|
+
technical_terms = [
|
|
116
|
+
"api",
|
|
117
|
+
"endpoint",
|
|
118
|
+
"database",
|
|
119
|
+
"model",
|
|
120
|
+
"service",
|
|
121
|
+
"controller",
|
|
122
|
+
"middleware",
|
|
123
|
+
"authentication",
|
|
124
|
+
"authorization",
|
|
125
|
+
]
|
|
126
|
+
tech_count = sum(1 for term in technical_terms if term.lower() in prompt.lower())
|
|
127
|
+
tech_factor = min(tech_count / 3, 1.0) * 5 # Up to 5 points
|
|
128
|
+
score += tech_factor
|
|
129
|
+
|
|
130
|
+
# "Already a spec" heuristics: structured prompts often need no enhancement
|
|
131
|
+
pl = prompt.lower()
|
|
132
|
+
spec_indicators = 0
|
|
133
|
+
if any(c in prompt for c in ("- ", "* ", "• ")) or (
|
|
134
|
+
len([s for s in prompt.split() if s and s[0].isdigit() and "." in s[:3]]) >= 2
|
|
135
|
+
):
|
|
136
|
+
spec_indicators += 2 # bullets or numbered list
|
|
137
|
+
if "acceptance criteria" in pl or "acceptance criterion" in pl:
|
|
138
|
+
spec_indicators += 2
|
|
139
|
+
if "user story" in pl or "as a " in pl and " i want " in pl:
|
|
140
|
+
spec_indicators += 2
|
|
141
|
+
if any(w in pl for w in (" shall ", " must ", " should ")):
|
|
142
|
+
spec_indicators += 2
|
|
143
|
+
spec_factor = min(spec_indicators / 4, 1.0) * 20 # Up to 20 points
|
|
144
|
+
score += spec_factor
|
|
145
|
+
|
|
146
|
+
return min(score, 100.0)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def should_enhance_prompt(
|
|
150
|
+
prompt: str, agent: str, command: str, config: AutoEnhancementConfig
|
|
151
|
+
) -> bool:
|
|
152
|
+
"""
|
|
153
|
+
Determine if a prompt should be enhanced.
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
prompt: The prompt to check
|
|
157
|
+
agent: Agent name
|
|
158
|
+
command: Command name
|
|
159
|
+
config: Auto-enhancement configuration
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
True if prompt should be enhanced, False otherwise
|
|
163
|
+
"""
|
|
164
|
+
if not config.enabled:
|
|
165
|
+
return False
|
|
166
|
+
|
|
167
|
+
# Check per-command settings
|
|
168
|
+
command_config = config.commands.get(agent, {})
|
|
169
|
+
if not command_config.get("enabled", True):
|
|
170
|
+
return False
|
|
171
|
+
|
|
172
|
+
# Assess quality
|
|
173
|
+
quality_score = assess_prompt_quality(prompt, config)
|
|
174
|
+
return quality_score < config.quality_threshold
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
async def enhance_prompt(
|
|
178
|
+
prompt: str,
|
|
179
|
+
agent: str,
|
|
180
|
+
command: str,
|
|
181
|
+
config: AutoEnhancementConfig,
|
|
182
|
+
enhance_mode: str | None = None,
|
|
183
|
+
) -> str:
|
|
184
|
+
"""
|
|
185
|
+
Enhance a prompt using the Enhancer Agent.
|
|
186
|
+
|
|
187
|
+
Args:
|
|
188
|
+
prompt: Original prompt
|
|
189
|
+
agent: Target agent name
|
|
190
|
+
command: Target command name
|
|
191
|
+
config: Auto-enhancement configuration
|
|
192
|
+
enhance_mode: Override enhancement mode (quick/full), or None to use config
|
|
193
|
+
|
|
194
|
+
Returns:
|
|
195
|
+
Enhanced prompt string
|
|
196
|
+
"""
|
|
197
|
+
# Get synthesis mode from override, command config, or default
|
|
198
|
+
if enhance_mode:
|
|
199
|
+
synthesis_mode = enhance_mode
|
|
200
|
+
else:
|
|
201
|
+
command_config = config.commands.get(agent, {})
|
|
202
|
+
synthesis_mode = command_config.get("synthesis_mode", "quick")
|
|
203
|
+
|
|
204
|
+
enhancer = EnhancerAgent()
|
|
205
|
+
try:
|
|
206
|
+
await enhancer.activate()
|
|
207
|
+
|
|
208
|
+
if synthesis_mode == "full":
|
|
209
|
+
result = await enhancer.run(
|
|
210
|
+
"enhance",
|
|
211
|
+
prompt=prompt,
|
|
212
|
+
output_format="markdown",
|
|
213
|
+
)
|
|
214
|
+
else:
|
|
215
|
+
result = await enhancer.run(
|
|
216
|
+
"enhance-quick",
|
|
217
|
+
prompt=prompt,
|
|
218
|
+
output_format="markdown",
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
# Extract enhanced prompt from result
|
|
222
|
+
if result.get("success"):
|
|
223
|
+
enhanced_prompt = result.get("enhanced_prompt")
|
|
224
|
+
|
|
225
|
+
# Check if this is Cursor mode (structured data with instruction)
|
|
226
|
+
if isinstance(enhanced_prompt, dict):
|
|
227
|
+
synthesis_data = enhanced_prompt.get("synthesis_data")
|
|
228
|
+
if synthesis_data and isinstance(synthesis_data, dict):
|
|
229
|
+
# Use instruction when present (Cursor/structured path)
|
|
230
|
+
instruction = synthesis_data.get("instruction") or synthesis_data.get("enhanced_prompt")
|
|
231
|
+
if isinstance(instruction, str) and instruction.strip():
|
|
232
|
+
return instruction.strip()
|
|
233
|
+
# No usable instruction: enhancement handled by Cursor; return original
|
|
234
|
+
return prompt
|
|
235
|
+
# Otherwise, try to extract enhanced_prompt from dict
|
|
236
|
+
if "enhanced_prompt" in enhanced_prompt:
|
|
237
|
+
enhanced = enhanced_prompt["enhanced_prompt"]
|
|
238
|
+
if isinstance(enhanced, str):
|
|
239
|
+
return enhanced
|
|
240
|
+
# If it's still a dict, fall back to original
|
|
241
|
+
return prompt
|
|
242
|
+
# No enhanced_prompt in dict, return original
|
|
243
|
+
return prompt
|
|
244
|
+
|
|
245
|
+
# String result (markdown format)
|
|
246
|
+
if isinstance(enhanced_prompt, str):
|
|
247
|
+
return enhanced_prompt
|
|
248
|
+
|
|
249
|
+
# Unexpected format, return original
|
|
250
|
+
return prompt
|
|
251
|
+
else:
|
|
252
|
+
# Enhancement failed, return original
|
|
253
|
+
return prompt
|
|
254
|
+
except Exception:
|
|
255
|
+
# On any error, return original prompt
|
|
256
|
+
return prompt
|
|
257
|
+
finally:
|
|
258
|
+
from ..utils.agent_lifecycle import safe_close_agent_sync
|
|
259
|
+
|
|
260
|
+
safe_close_agent_sync(enhancer)
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def enhance_prompt_if_needed(
|
|
264
|
+
args: Namespace, config: AutoEnhancementConfig | None = None
|
|
265
|
+
) -> Namespace:
|
|
266
|
+
"""
|
|
267
|
+
Enhance prompt in CLI arguments if needed.
|
|
268
|
+
|
|
269
|
+
This is the main entry point for the middleware.
|
|
270
|
+
|
|
271
|
+
Args:
|
|
272
|
+
args: Parsed command-line arguments
|
|
273
|
+
config: Auto-enhancement configuration (loads from file if None)
|
|
274
|
+
|
|
275
|
+
Returns:
|
|
276
|
+
Modified args with enhanced prompt (if enhancement occurred)
|
|
277
|
+
"""
|
|
278
|
+
if config is None:
|
|
279
|
+
project_config = load_config()
|
|
280
|
+
config = project_config.auto_enhancement
|
|
281
|
+
|
|
282
|
+
# Check if enhancement is disabled via flag
|
|
283
|
+
if getattr(args, "no_enhance", False):
|
|
284
|
+
return args
|
|
285
|
+
|
|
286
|
+
# Detect prompt argument
|
|
287
|
+
prompt_info = detect_prompt_argument(args)
|
|
288
|
+
if not prompt_info:
|
|
289
|
+
return args
|
|
290
|
+
|
|
291
|
+
arg_name, prompt_value = prompt_info
|
|
292
|
+
|
|
293
|
+
# Check if we should enhance
|
|
294
|
+
agent = getattr(args, "agent", None)
|
|
295
|
+
command = getattr(args, "command", None)
|
|
296
|
+
if not agent or not command:
|
|
297
|
+
return args
|
|
298
|
+
|
|
299
|
+
# Normalize command
|
|
300
|
+
if command.startswith("*"):
|
|
301
|
+
command = command[1:]
|
|
302
|
+
|
|
303
|
+
# Check if forced enhancement
|
|
304
|
+
force_enhance = getattr(args, "enhance", False)
|
|
305
|
+
enhance_mode_override = getattr(args, "enhance_mode", None)
|
|
306
|
+
|
|
307
|
+
if not force_enhance and not should_enhance_prompt(prompt_value, agent, command, config):
|
|
308
|
+
return args
|
|
309
|
+
|
|
310
|
+
# Enhance the prompt
|
|
311
|
+
enhanced = asyncio.run(
|
|
312
|
+
enhance_prompt(prompt_value, agent, command, config, enhance_mode_override)
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
# Update args with enhanced prompt
|
|
316
|
+
setattr(args, arg_name, enhanced)
|
|
317
|
+
|
|
318
|
+
return args
|
|
319
|
+
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"""
|
|
2
|
-
CLI command validators.
|
|
3
|
-
|
|
4
|
-
Provides validation utilities for CLI commands to ensure arguments are valid before execution.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from .command_validator import CommandValidator, ValidationResult
|
|
8
|
-
|
|
9
|
-
__all__ = ["CommandValidator", "ValidationResult"]
|
|
1
|
+
"""
|
|
2
|
+
CLI command validators.
|
|
3
|
+
|
|
4
|
+
Provides validation utilities for CLI commands to ensure arguments are valid before execution.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from .command_validator import CommandValidator, ValidationResult
|
|
8
|
+
|
|
9
|
+
__all__ = ["CommandValidator", "ValidationResult"]
|