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,301 +1,301 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Implementer agent command handlers
|
|
3
|
-
"""
|
|
4
|
-
import asyncio
|
|
5
|
-
|
|
6
|
-
from ...agents.implementer.agent import ImplementerAgent
|
|
7
|
-
from ...core.network_errors import NetworkRequiredError
|
|
8
|
-
from ..base import handle_network_error, normalize_command
|
|
9
|
-
from ..command_classifier import CommandClassifier, CommandNetworkRequirement
|
|
10
|
-
from ..feedback import get_feedback
|
|
11
|
-
from ..help.static_help import get_static_help
|
|
12
|
-
from ..network_detection import NetworkDetector
|
|
13
|
-
from .common import check_result_error, format_json_output
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
async def implement_command(
|
|
17
|
-
specification: str,
|
|
18
|
-
file_path: str,
|
|
19
|
-
context: str | None = None,
|
|
20
|
-
language: str = "python",
|
|
21
|
-
output_format: str = "json",
|
|
22
|
-
):
|
|
23
|
-
"""Generate and write code to file (with review)"""
|
|
24
|
-
from ..feedback import suggest_simple_mode
|
|
25
|
-
|
|
26
|
-
# Suggest using @simple-mode for better outcomes
|
|
27
|
-
suggest_simple_mode("implement", description=specification[:50], file_path=file_path)
|
|
28
|
-
|
|
29
|
-
feedback = get_feedback()
|
|
30
|
-
feedback.format_type = output_format
|
|
31
|
-
|
|
32
|
-
# Check network requirement - implement requires network
|
|
33
|
-
requirement = CommandClassifier.get_network_requirement("implementer", "implement")
|
|
34
|
-
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
35
|
-
try:
|
|
36
|
-
raise NetworkRequiredError(
|
|
37
|
-
operation_name="implementer implement",
|
|
38
|
-
message="Network is required for this command"
|
|
39
|
-
)
|
|
40
|
-
except NetworkRequiredError as e:
|
|
41
|
-
handle_network_error(e, format_type=output_format)
|
|
42
|
-
return
|
|
43
|
-
|
|
44
|
-
spec_preview = specification[:50] + "..." if len(specification) > 50 else specification
|
|
45
|
-
feedback.start_operation("Code Implementation", f"Implementing: {spec_preview} in {file_path}")
|
|
46
|
-
feedback.running("Analyzing specification...", step=1, total_steps=4)
|
|
47
|
-
|
|
48
|
-
implementer = ImplementerAgent()
|
|
49
|
-
try:
|
|
50
|
-
await implementer.activate(offline_mode=False)
|
|
51
|
-
feedback.running("Generating code structure...", step=2, total_steps=4)
|
|
52
|
-
result = await implementer.run(
|
|
53
|
-
"implement",
|
|
54
|
-
specification=specification,
|
|
55
|
-
file_path=file_path,
|
|
56
|
-
context=context,
|
|
57
|
-
language=language,
|
|
58
|
-
)
|
|
59
|
-
feedback.running("Reviewing code quality...", step=3, total_steps=4)
|
|
60
|
-
feedback.running("Preparing implementation...", step=4, total_steps=4)
|
|
61
|
-
|
|
62
|
-
check_result_error(result)
|
|
63
|
-
feedback.clear_progress()
|
|
64
|
-
|
|
65
|
-
# Note: Implementer returns instructions for Cursor Skills execution
|
|
66
|
-
# The actual code generation happens via Cursor Skills, not directly in CLI
|
|
67
|
-
summary = {}
|
|
68
|
-
if isinstance(result, dict):
|
|
69
|
-
if "file" in result:
|
|
70
|
-
summary["target_file"] = result["file"]
|
|
71
|
-
if "file_existed" in result:
|
|
72
|
-
summary["file_existed"] = result["file_existed"]
|
|
73
|
-
if "instruction" in result:
|
|
74
|
-
summary["instruction_prepared"] = True
|
|
75
|
-
|
|
76
|
-
# Merge summary into result
|
|
77
|
-
if summary:
|
|
78
|
-
result = {**result, "summary": summary}
|
|
79
|
-
|
|
80
|
-
if output_format == "json":
|
|
81
|
-
feedback.output_result(result, message="Code implementation instruction prepared successfully")
|
|
82
|
-
# Add prominent note about Cursor Skills execution
|
|
83
|
-
if "instruction" in result:
|
|
84
|
-
feedback.warning(
|
|
85
|
-
"⚠️ IMPORTANT: This command returns an instruction object, not actual code.\n"
|
|
86
|
-
" The file will NOT be created by this CLI command.\n"
|
|
87
|
-
" To actually generate and write code, use one of these methods:\n"
|
|
88
|
-
" 1. Use the skill_command in Cursor IDE: @implementer *implement ...\n"
|
|
89
|
-
" 2. Copy the skill_command from the result and run it in Cursor chat\n"
|
|
90
|
-
" 3. Use Simple Mode: @simple-mode *build \"your description\""
|
|
91
|
-
)
|
|
92
|
-
else:
|
|
93
|
-
feedback.success("Code implementation instruction prepared successfully")
|
|
94
|
-
print(f"\n{'='*60}")
|
|
95
|
-
print("⚠️ IMPORTANT: This command returns an instruction, not actual code.")
|
|
96
|
-
print(" The file will NOT be created by this CLI command.")
|
|
97
|
-
print(f"{'='*60}")
|
|
98
|
-
print(f"\nInstruction prepared for: {result.get('file', 'N/A')}")
|
|
99
|
-
if "skill_command" in result:
|
|
100
|
-
print(f"\n📋 To execute in Cursor IDE, use:")
|
|
101
|
-
print(f" {result['skill_command']}")
|
|
102
|
-
print(f"\n Or use Simple Mode:")
|
|
103
|
-
print(f" @simple-mode *build \"{specification[:50]}...\"")
|
|
104
|
-
if result.get("file_existed"):
|
|
105
|
-
print(f"\nFile existed: {result['file_existed']}")
|
|
106
|
-
finally:
|
|
107
|
-
await implementer.close()
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
async def generate_code_command(
|
|
111
|
-
specification: str,
|
|
112
|
-
file_path: str | None = None,
|
|
113
|
-
context: str | None = None,
|
|
114
|
-
language: str = "python",
|
|
115
|
-
output_format: str = "json",
|
|
116
|
-
):
|
|
117
|
-
"""Generate code from specification (no file write)"""
|
|
118
|
-
|
|
119
|
-
feedback = get_feedback()
|
|
120
|
-
feedback.format_type = output_format
|
|
121
|
-
|
|
122
|
-
# Check network requirement - generate-code requires network
|
|
123
|
-
requirement = CommandClassifier.get_network_requirement("implementer", "generate-code")
|
|
124
|
-
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
125
|
-
try:
|
|
126
|
-
raise NetworkRequiredError(
|
|
127
|
-
operation_name="implementer generate-code",
|
|
128
|
-
message="Network is required for this command"
|
|
129
|
-
)
|
|
130
|
-
except NetworkRequiredError as e:
|
|
131
|
-
handle_network_error(e, format_type=output_format)
|
|
132
|
-
return
|
|
133
|
-
|
|
134
|
-
spec_preview = specification[:50] + "..." if len(specification) > 50 else specification
|
|
135
|
-
target_desc = f" for {file_path}" if file_path else ""
|
|
136
|
-
feedback.start_operation("Code Generation", f"Generating code{target_desc}: {spec_preview}")
|
|
137
|
-
feedback.running("Analyzing specification...", step=1, total_steps=3)
|
|
138
|
-
|
|
139
|
-
implementer = ImplementerAgent()
|
|
140
|
-
try:
|
|
141
|
-
await implementer.activate(offline_mode=False)
|
|
142
|
-
feedback.running("Generating code...", step=2, total_steps=3)
|
|
143
|
-
result = await implementer.run(
|
|
144
|
-
"generate-code",
|
|
145
|
-
specification=specification,
|
|
146
|
-
file_path=file_path,
|
|
147
|
-
context=context,
|
|
148
|
-
language=language,
|
|
149
|
-
)
|
|
150
|
-
feedback.running("Preparing code output...", step=3, total_steps=3)
|
|
151
|
-
|
|
152
|
-
check_result_error(result)
|
|
153
|
-
feedback.clear_progress()
|
|
154
|
-
|
|
155
|
-
summary = {}
|
|
156
|
-
if isinstance(result, dict):
|
|
157
|
-
if "file" in result:
|
|
158
|
-
summary["target_file"] = result["file"]
|
|
159
|
-
if "instruction" in result:
|
|
160
|
-
summary["instruction_prepared"] = True
|
|
161
|
-
|
|
162
|
-
# Merge summary into result
|
|
163
|
-
if summary:
|
|
164
|
-
result = {**result, "summary": summary}
|
|
165
|
-
|
|
166
|
-
if output_format == "json":
|
|
167
|
-
feedback.output_result(result, message="Code generation instruction prepared")
|
|
168
|
-
# Add note about instruction-based execution
|
|
169
|
-
if "instruction" in result:
|
|
170
|
-
feedback.warning(
|
|
171
|
-
"⚠️ Note: This command returns an instruction object.\n"
|
|
172
|
-
" To see actual generated code, use @implementer in Cursor IDE."
|
|
173
|
-
)
|
|
174
|
-
else:
|
|
175
|
-
feedback.success("Code generation instruction prepared")
|
|
176
|
-
print("⚠️ Note: This command returns an instruction object, not actual code.")
|
|
177
|
-
print(" To see generated code, use @implementer in Cursor IDE.")
|
|
178
|
-
if "skill_command" in result:
|
|
179
|
-
print(f"\n Execute in Cursor: {result['skill_command']}")
|
|
180
|
-
print("\nInstruction Details:")
|
|
181
|
-
print("-" * 40)
|
|
182
|
-
if "instruction" in result:
|
|
183
|
-
print(f"Specification: {result['instruction'].get('specification', 'N/A')[:100]}...")
|
|
184
|
-
finally:
|
|
185
|
-
await implementer.close()
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
async def refactor_command(
|
|
189
|
-
file_path: str, instruction: str, output_format: str = "json", output_file: str | None = None
|
|
190
|
-
):
|
|
191
|
-
"""Refactor existing code file"""
|
|
192
|
-
from ..utils.output_handler import write_output
|
|
193
|
-
from ..feedback import suggest_simple_mode
|
|
194
|
-
|
|
195
|
-
# Suggest using @simple-mode for better outcomes
|
|
196
|
-
suggest_simple_mode("refactor", description=instruction[:50], file_path=file_path)
|
|
197
|
-
|
|
198
|
-
feedback = get_feedback()
|
|
199
|
-
feedback.format_type = output_format
|
|
200
|
-
|
|
201
|
-
# Check network requirement - refactor requires network
|
|
202
|
-
requirement = CommandClassifier.get_network_requirement("implementer", "refactor")
|
|
203
|
-
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
204
|
-
try:
|
|
205
|
-
raise NetworkRequiredError(
|
|
206
|
-
operation_name="implementer refactor",
|
|
207
|
-
message="Network is required for this command"
|
|
208
|
-
)
|
|
209
|
-
except NetworkRequiredError as e:
|
|
210
|
-
handle_network_error(e, format_type=output_format)
|
|
211
|
-
return
|
|
212
|
-
inst_preview = instruction[:50] + "..." if len(instruction) > 50 else instruction
|
|
213
|
-
feedback.start_operation("Code Refactoring", f"Refactoring {file_path}: {inst_preview}")
|
|
214
|
-
feedback.running("Analyzing source file...", step=1, total_steps=3)
|
|
215
|
-
|
|
216
|
-
implementer = ImplementerAgent()
|
|
217
|
-
try:
|
|
218
|
-
await implementer.activate(offline_mode=False)
|
|
219
|
-
feedback.running("Applying refactoring...", step=2, total_steps=3)
|
|
220
|
-
result = await implementer.run(
|
|
221
|
-
"refactor", file_path=file_path, instruction=instruction
|
|
222
|
-
)
|
|
223
|
-
feedback.running("Preparing refactored code...", step=3, total_steps=3)
|
|
224
|
-
|
|
225
|
-
check_result_error(result)
|
|
226
|
-
feedback.clear_progress()
|
|
227
|
-
|
|
228
|
-
summary = {}
|
|
229
|
-
if isinstance(result, dict):
|
|
230
|
-
if "file" in result:
|
|
231
|
-
summary["source_file"] = result["file"]
|
|
232
|
-
if "instruction" in result:
|
|
233
|
-
summary["instruction_prepared"] = True
|
|
234
|
-
|
|
235
|
-
# Merge summary into result
|
|
236
|
-
if summary:
|
|
237
|
-
result = {**result, "summary": summary}
|
|
238
|
-
|
|
239
|
-
# Use output handler utility for consistent output
|
|
240
|
-
if output_file or output_format != "json":
|
|
241
|
-
write_output(result, output_file=output_file, format_type=output_format, default_format="json")
|
|
242
|
-
else:
|
|
243
|
-
feedback.output_result(result, message="Refactoring instruction prepared")
|
|
244
|
-
|
|
245
|
-
# Note: Actual file writing with refactored code would happen here
|
|
246
|
-
# Currently, refactor returns instructions, not actual refactored code
|
|
247
|
-
# File writing would need actual code generation to be implemented
|
|
248
|
-
finally:
|
|
249
|
-
await implementer.close()
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
def handle_implementer_command(args: object) -> None:
|
|
253
|
-
"""Handle implementer agent commands"""
|
|
254
|
-
command = normalize_command(getattr(args, "command", None))
|
|
255
|
-
feedback = get_feedback()
|
|
256
|
-
|
|
257
|
-
# Help commands first - no activation needed
|
|
258
|
-
if command == "help" or command is None:
|
|
259
|
-
help_text = get_static_help("implementer")
|
|
260
|
-
feedback.output_result(help_text)
|
|
261
|
-
return
|
|
262
|
-
|
|
263
|
-
implementer = ImplementerAgent()
|
|
264
|
-
try:
|
|
265
|
-
if command == "implement":
|
|
266
|
-
asyncio.run(
|
|
267
|
-
implement_command(
|
|
268
|
-
args.specification,
|
|
269
|
-
args.file_path,
|
|
270
|
-
context=getattr(args, "context", None),
|
|
271
|
-
language=getattr(args, "language", "python"),
|
|
272
|
-
output_format=getattr(args, "format", "json"),
|
|
273
|
-
)
|
|
274
|
-
)
|
|
275
|
-
elif command == "generate-code":
|
|
276
|
-
asyncio.run(
|
|
277
|
-
generate_code_command(
|
|
278
|
-
args.specification,
|
|
279
|
-
file_path=getattr(args, "file", None),
|
|
280
|
-
context=getattr(args, "context", None),
|
|
281
|
-
language=getattr(args, "language", "python"),
|
|
282
|
-
output_format=getattr(args, "format", "json"),
|
|
283
|
-
)
|
|
284
|
-
)
|
|
285
|
-
elif command == "refactor":
|
|
286
|
-
asyncio.run(
|
|
287
|
-
refactor_command(
|
|
288
|
-
args.file_path,
|
|
289
|
-
args.instruction,
|
|
290
|
-
output_format=getattr(args, "format", "json"),
|
|
291
|
-
output_file=getattr(args, "output", None),
|
|
292
|
-
)
|
|
293
|
-
)
|
|
294
|
-
else:
|
|
295
|
-
# Invalid command - show help without activation
|
|
296
|
-
help_text = get_static_help("implementer")
|
|
297
|
-
feedback.output_result(help_text)
|
|
298
|
-
finally:
|
|
299
|
-
from ..utils.agent_lifecycle import safe_close_agent_sync
|
|
300
|
-
safe_close_agent_sync(implementer)
|
|
301
|
-
|
|
1
|
+
"""
|
|
2
|
+
Implementer agent command handlers
|
|
3
|
+
"""
|
|
4
|
+
import asyncio
|
|
5
|
+
|
|
6
|
+
from ...agents.implementer.agent import ImplementerAgent
|
|
7
|
+
from ...core.network_errors import NetworkRequiredError
|
|
8
|
+
from ..base import handle_network_error, normalize_command
|
|
9
|
+
from ..command_classifier import CommandClassifier, CommandNetworkRequirement
|
|
10
|
+
from ..feedback import get_feedback
|
|
11
|
+
from ..help.static_help import get_static_help
|
|
12
|
+
from ..network_detection import NetworkDetector
|
|
13
|
+
from .common import check_result_error, format_json_output
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def implement_command(
|
|
17
|
+
specification: str,
|
|
18
|
+
file_path: str,
|
|
19
|
+
context: str | None = None,
|
|
20
|
+
language: str = "python",
|
|
21
|
+
output_format: str = "json",
|
|
22
|
+
):
|
|
23
|
+
"""Generate and write code to file (with review)"""
|
|
24
|
+
from ..feedback import suggest_simple_mode
|
|
25
|
+
|
|
26
|
+
# Suggest using @simple-mode for better outcomes
|
|
27
|
+
suggest_simple_mode("implement", description=specification[:50], file_path=file_path)
|
|
28
|
+
|
|
29
|
+
feedback = get_feedback()
|
|
30
|
+
feedback.format_type = output_format
|
|
31
|
+
|
|
32
|
+
# Check network requirement - implement requires network
|
|
33
|
+
requirement = CommandClassifier.get_network_requirement("implementer", "implement")
|
|
34
|
+
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
35
|
+
try:
|
|
36
|
+
raise NetworkRequiredError(
|
|
37
|
+
operation_name="implementer implement",
|
|
38
|
+
message="Network is required for this command"
|
|
39
|
+
)
|
|
40
|
+
except NetworkRequiredError as e:
|
|
41
|
+
handle_network_error(e, format_type=output_format)
|
|
42
|
+
return
|
|
43
|
+
|
|
44
|
+
spec_preview = specification[:50] + "..." if len(specification) > 50 else specification
|
|
45
|
+
feedback.start_operation("Code Implementation", f"Implementing: {spec_preview} in {file_path}")
|
|
46
|
+
feedback.running("Analyzing specification...", step=1, total_steps=4)
|
|
47
|
+
|
|
48
|
+
implementer = ImplementerAgent()
|
|
49
|
+
try:
|
|
50
|
+
await implementer.activate(offline_mode=False)
|
|
51
|
+
feedback.running("Generating code structure...", step=2, total_steps=4)
|
|
52
|
+
result = await implementer.run(
|
|
53
|
+
"implement",
|
|
54
|
+
specification=specification,
|
|
55
|
+
file_path=file_path,
|
|
56
|
+
context=context,
|
|
57
|
+
language=language,
|
|
58
|
+
)
|
|
59
|
+
feedback.running("Reviewing code quality...", step=3, total_steps=4)
|
|
60
|
+
feedback.running("Preparing implementation...", step=4, total_steps=4)
|
|
61
|
+
|
|
62
|
+
check_result_error(result)
|
|
63
|
+
feedback.clear_progress()
|
|
64
|
+
|
|
65
|
+
# Note: Implementer returns instructions for Cursor Skills execution
|
|
66
|
+
# The actual code generation happens via Cursor Skills, not directly in CLI
|
|
67
|
+
summary = {}
|
|
68
|
+
if isinstance(result, dict):
|
|
69
|
+
if "file" in result:
|
|
70
|
+
summary["target_file"] = result["file"]
|
|
71
|
+
if "file_existed" in result:
|
|
72
|
+
summary["file_existed"] = result["file_existed"]
|
|
73
|
+
if "instruction" in result:
|
|
74
|
+
summary["instruction_prepared"] = True
|
|
75
|
+
|
|
76
|
+
# Merge summary into result
|
|
77
|
+
if summary:
|
|
78
|
+
result = {**result, "summary": summary}
|
|
79
|
+
|
|
80
|
+
if output_format == "json":
|
|
81
|
+
feedback.output_result(result, message="Code implementation instruction prepared successfully")
|
|
82
|
+
# Add prominent note about Cursor Skills execution
|
|
83
|
+
if "instruction" in result:
|
|
84
|
+
feedback.warning(
|
|
85
|
+
"⚠️ IMPORTANT: This command returns an instruction object, not actual code.\n"
|
|
86
|
+
" The file will NOT be created by this CLI command.\n"
|
|
87
|
+
" To actually generate and write code, use one of these methods:\n"
|
|
88
|
+
" 1. Use the skill_command in Cursor IDE: @implementer *implement ...\n"
|
|
89
|
+
" 2. Copy the skill_command from the result and run it in Cursor chat\n"
|
|
90
|
+
" 3. Use Simple Mode: @simple-mode *build \"your description\""
|
|
91
|
+
)
|
|
92
|
+
else:
|
|
93
|
+
feedback.success("Code implementation instruction prepared successfully")
|
|
94
|
+
print(f"\n{'='*60}")
|
|
95
|
+
print("⚠️ IMPORTANT: This command returns an instruction, not actual code.")
|
|
96
|
+
print(" The file will NOT be created by this CLI command.")
|
|
97
|
+
print(f"{'='*60}")
|
|
98
|
+
print(f"\nInstruction prepared for: {result.get('file', 'N/A')}")
|
|
99
|
+
if "skill_command" in result:
|
|
100
|
+
print(f"\n📋 To execute in Cursor IDE, use:")
|
|
101
|
+
print(f" {result['skill_command']}")
|
|
102
|
+
print(f"\n Or use Simple Mode:")
|
|
103
|
+
print(f" @simple-mode *build \"{specification[:50]}...\"")
|
|
104
|
+
if result.get("file_existed"):
|
|
105
|
+
print(f"\nFile existed: {result['file_existed']}")
|
|
106
|
+
finally:
|
|
107
|
+
await implementer.close()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
async def generate_code_command(
|
|
111
|
+
specification: str,
|
|
112
|
+
file_path: str | None = None,
|
|
113
|
+
context: str | None = None,
|
|
114
|
+
language: str = "python",
|
|
115
|
+
output_format: str = "json",
|
|
116
|
+
):
|
|
117
|
+
"""Generate code from specification (no file write)"""
|
|
118
|
+
|
|
119
|
+
feedback = get_feedback()
|
|
120
|
+
feedback.format_type = output_format
|
|
121
|
+
|
|
122
|
+
# Check network requirement - generate-code requires network
|
|
123
|
+
requirement = CommandClassifier.get_network_requirement("implementer", "generate-code")
|
|
124
|
+
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
125
|
+
try:
|
|
126
|
+
raise NetworkRequiredError(
|
|
127
|
+
operation_name="implementer generate-code",
|
|
128
|
+
message="Network is required for this command"
|
|
129
|
+
)
|
|
130
|
+
except NetworkRequiredError as e:
|
|
131
|
+
handle_network_error(e, format_type=output_format)
|
|
132
|
+
return
|
|
133
|
+
|
|
134
|
+
spec_preview = specification[:50] + "..." if len(specification) > 50 else specification
|
|
135
|
+
target_desc = f" for {file_path}" if file_path else ""
|
|
136
|
+
feedback.start_operation("Code Generation", f"Generating code{target_desc}: {spec_preview}")
|
|
137
|
+
feedback.running("Analyzing specification...", step=1, total_steps=3)
|
|
138
|
+
|
|
139
|
+
implementer = ImplementerAgent()
|
|
140
|
+
try:
|
|
141
|
+
await implementer.activate(offline_mode=False)
|
|
142
|
+
feedback.running("Generating code...", step=2, total_steps=3)
|
|
143
|
+
result = await implementer.run(
|
|
144
|
+
"generate-code",
|
|
145
|
+
specification=specification,
|
|
146
|
+
file_path=file_path,
|
|
147
|
+
context=context,
|
|
148
|
+
language=language,
|
|
149
|
+
)
|
|
150
|
+
feedback.running("Preparing code output...", step=3, total_steps=3)
|
|
151
|
+
|
|
152
|
+
check_result_error(result)
|
|
153
|
+
feedback.clear_progress()
|
|
154
|
+
|
|
155
|
+
summary = {}
|
|
156
|
+
if isinstance(result, dict):
|
|
157
|
+
if "file" in result:
|
|
158
|
+
summary["target_file"] = result["file"]
|
|
159
|
+
if "instruction" in result:
|
|
160
|
+
summary["instruction_prepared"] = True
|
|
161
|
+
|
|
162
|
+
# Merge summary into result
|
|
163
|
+
if summary:
|
|
164
|
+
result = {**result, "summary": summary}
|
|
165
|
+
|
|
166
|
+
if output_format == "json":
|
|
167
|
+
feedback.output_result(result, message="Code generation instruction prepared")
|
|
168
|
+
# Add note about instruction-based execution
|
|
169
|
+
if "instruction" in result:
|
|
170
|
+
feedback.warning(
|
|
171
|
+
"⚠️ Note: This command returns an instruction object.\n"
|
|
172
|
+
" To see actual generated code, use @implementer in Cursor IDE."
|
|
173
|
+
)
|
|
174
|
+
else:
|
|
175
|
+
feedback.success("Code generation instruction prepared")
|
|
176
|
+
print("⚠️ Note: This command returns an instruction object, not actual code.")
|
|
177
|
+
print(" To see generated code, use @implementer in Cursor IDE.")
|
|
178
|
+
if "skill_command" in result:
|
|
179
|
+
print(f"\n Execute in Cursor: {result['skill_command']}")
|
|
180
|
+
print("\nInstruction Details:")
|
|
181
|
+
print("-" * 40)
|
|
182
|
+
if "instruction" in result:
|
|
183
|
+
print(f"Specification: {result['instruction'].get('specification', 'N/A')[:100]}...")
|
|
184
|
+
finally:
|
|
185
|
+
await implementer.close()
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
async def refactor_command(
|
|
189
|
+
file_path: str, instruction: str, output_format: str = "json", output_file: str | None = None
|
|
190
|
+
):
|
|
191
|
+
"""Refactor existing code file"""
|
|
192
|
+
from ..utils.output_handler import write_output
|
|
193
|
+
from ..feedback import suggest_simple_mode
|
|
194
|
+
|
|
195
|
+
# Suggest using @simple-mode for better outcomes
|
|
196
|
+
suggest_simple_mode("refactor", description=instruction[:50], file_path=file_path)
|
|
197
|
+
|
|
198
|
+
feedback = get_feedback()
|
|
199
|
+
feedback.format_type = output_format
|
|
200
|
+
|
|
201
|
+
# Check network requirement - refactor requires network
|
|
202
|
+
requirement = CommandClassifier.get_network_requirement("implementer", "refactor")
|
|
203
|
+
if requirement == CommandNetworkRequirement.REQUIRED and not NetworkDetector.is_network_available():
|
|
204
|
+
try:
|
|
205
|
+
raise NetworkRequiredError(
|
|
206
|
+
operation_name="implementer refactor",
|
|
207
|
+
message="Network is required for this command"
|
|
208
|
+
)
|
|
209
|
+
except NetworkRequiredError as e:
|
|
210
|
+
handle_network_error(e, format_type=output_format)
|
|
211
|
+
return
|
|
212
|
+
inst_preview = instruction[:50] + "..." if len(instruction) > 50 else instruction
|
|
213
|
+
feedback.start_operation("Code Refactoring", f"Refactoring {file_path}: {inst_preview}")
|
|
214
|
+
feedback.running("Analyzing source file...", step=1, total_steps=3)
|
|
215
|
+
|
|
216
|
+
implementer = ImplementerAgent()
|
|
217
|
+
try:
|
|
218
|
+
await implementer.activate(offline_mode=False)
|
|
219
|
+
feedback.running("Applying refactoring...", step=2, total_steps=3)
|
|
220
|
+
result = await implementer.run(
|
|
221
|
+
"refactor", file_path=file_path, instruction=instruction
|
|
222
|
+
)
|
|
223
|
+
feedback.running("Preparing refactored code...", step=3, total_steps=3)
|
|
224
|
+
|
|
225
|
+
check_result_error(result)
|
|
226
|
+
feedback.clear_progress()
|
|
227
|
+
|
|
228
|
+
summary = {}
|
|
229
|
+
if isinstance(result, dict):
|
|
230
|
+
if "file" in result:
|
|
231
|
+
summary["source_file"] = result["file"]
|
|
232
|
+
if "instruction" in result:
|
|
233
|
+
summary["instruction_prepared"] = True
|
|
234
|
+
|
|
235
|
+
# Merge summary into result
|
|
236
|
+
if summary:
|
|
237
|
+
result = {**result, "summary": summary}
|
|
238
|
+
|
|
239
|
+
# Use output handler utility for consistent output
|
|
240
|
+
if output_file or output_format != "json":
|
|
241
|
+
write_output(result, output_file=output_file, format_type=output_format, default_format="json")
|
|
242
|
+
else:
|
|
243
|
+
feedback.output_result(result, message="Refactoring instruction prepared")
|
|
244
|
+
|
|
245
|
+
# Note: Actual file writing with refactored code would happen here
|
|
246
|
+
# Currently, refactor returns instructions, not actual refactored code
|
|
247
|
+
# File writing would need actual code generation to be implemented
|
|
248
|
+
finally:
|
|
249
|
+
await implementer.close()
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def handle_implementer_command(args: object) -> None:
|
|
253
|
+
"""Handle implementer agent commands"""
|
|
254
|
+
command = normalize_command(getattr(args, "command", None))
|
|
255
|
+
feedback = get_feedback()
|
|
256
|
+
|
|
257
|
+
# Help commands first - no activation needed
|
|
258
|
+
if command == "help" or command is None:
|
|
259
|
+
help_text = get_static_help("implementer")
|
|
260
|
+
feedback.output_result(help_text)
|
|
261
|
+
return
|
|
262
|
+
|
|
263
|
+
implementer = ImplementerAgent()
|
|
264
|
+
try:
|
|
265
|
+
if command == "implement":
|
|
266
|
+
asyncio.run(
|
|
267
|
+
implement_command(
|
|
268
|
+
args.specification,
|
|
269
|
+
args.file_path,
|
|
270
|
+
context=getattr(args, "context", None),
|
|
271
|
+
language=getattr(args, "language", "python"),
|
|
272
|
+
output_format=getattr(args, "format", "json"),
|
|
273
|
+
)
|
|
274
|
+
)
|
|
275
|
+
elif command == "generate-code":
|
|
276
|
+
asyncio.run(
|
|
277
|
+
generate_code_command(
|
|
278
|
+
args.specification,
|
|
279
|
+
file_path=getattr(args, "file", None),
|
|
280
|
+
context=getattr(args, "context", None),
|
|
281
|
+
language=getattr(args, "language", "python"),
|
|
282
|
+
output_format=getattr(args, "format", "json"),
|
|
283
|
+
)
|
|
284
|
+
)
|
|
285
|
+
elif command == "refactor":
|
|
286
|
+
asyncio.run(
|
|
287
|
+
refactor_command(
|
|
288
|
+
args.file_path,
|
|
289
|
+
args.instruction,
|
|
290
|
+
output_format=getattr(args, "format", "json"),
|
|
291
|
+
output_file=getattr(args, "output", None),
|
|
292
|
+
)
|
|
293
|
+
)
|
|
294
|
+
else:
|
|
295
|
+
# Invalid command - show help without activation
|
|
296
|
+
help_text = get_static_help("implementer")
|
|
297
|
+
feedback.output_result(help_text)
|
|
298
|
+
finally:
|
|
299
|
+
from ..utils.agent_lifecycle import safe_close_agent_sync
|
|
300
|
+
safe_close_agent_sync(implementer)
|
|
301
|
+
|