tapps-agents 3.6.0__py3-none-any.whl → 3.6.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tapps_agents/__init__.py +2 -2
- tapps_agents/agents/__init__.py +22 -22
- tapps_agents/agents/analyst/__init__.py +5 -5
- tapps_agents/agents/architect/__init__.py +5 -5
- tapps_agents/agents/architect/agent.py +1033 -1033
- tapps_agents/agents/architect/pattern_detector.py +75 -75
- tapps_agents/agents/cleanup/__init__.py +7 -7
- tapps_agents/agents/cleanup/agent.py +445 -445
- tapps_agents/agents/debugger/__init__.py +7 -7
- tapps_agents/agents/debugger/agent.py +310 -310
- tapps_agents/agents/debugger/error_analyzer.py +437 -437
- tapps_agents/agents/designer/__init__.py +5 -5
- tapps_agents/agents/designer/agent.py +786 -786
- tapps_agents/agents/designer/visual_designer.py +638 -638
- tapps_agents/agents/documenter/__init__.py +7 -7
- tapps_agents/agents/documenter/agent.py +531 -531
- tapps_agents/agents/documenter/doc_generator.py +472 -472
- tapps_agents/agents/documenter/doc_validator.py +393 -393
- tapps_agents/agents/documenter/framework_doc_updater.py +493 -493
- tapps_agents/agents/enhancer/__init__.py +7 -7
- tapps_agents/agents/evaluator/__init__.py +7 -7
- tapps_agents/agents/evaluator/agent.py +443 -443
- tapps_agents/agents/evaluator/priority_evaluator.py +641 -641
- tapps_agents/agents/evaluator/quality_analyzer.py +147 -147
- tapps_agents/agents/evaluator/report_generator.py +344 -344
- tapps_agents/agents/evaluator/usage_analyzer.py +192 -192
- tapps_agents/agents/evaluator/workflow_analyzer.py +189 -189
- tapps_agents/agents/implementer/__init__.py +7 -7
- tapps_agents/agents/implementer/agent.py +798 -798
- tapps_agents/agents/implementer/auto_fix.py +1119 -1119
- tapps_agents/agents/implementer/code_generator.py +73 -73
- tapps_agents/agents/improver/__init__.py +1 -1
- tapps_agents/agents/improver/agent.py +753 -753
- tapps_agents/agents/ops/__init__.py +1 -1
- tapps_agents/agents/ops/agent.py +619 -619
- tapps_agents/agents/ops/dependency_analyzer.py +600 -600
- tapps_agents/agents/orchestrator/__init__.py +5 -5
- tapps_agents/agents/orchestrator/agent.py +522 -522
- tapps_agents/agents/planner/__init__.py +7 -7
- tapps_agents/agents/planner/agent.py +1127 -1127
- tapps_agents/agents/reviewer/__init__.py +24 -24
- tapps_agents/agents/reviewer/agent.py +3513 -3513
- tapps_agents/agents/reviewer/aggregator.py +213 -213
- tapps_agents/agents/reviewer/batch_review.py +448 -448
- tapps_agents/agents/reviewer/cache.py +443 -443
- tapps_agents/agents/reviewer/context7_enhancer.py +630 -630
- tapps_agents/agents/reviewer/context_detector.py +203 -203
- tapps_agents/agents/reviewer/docker_compose_validator.py +158 -158
- tapps_agents/agents/reviewer/dockerfile_validator.py +176 -176
- tapps_agents/agents/reviewer/error_handling.py +126 -126
- tapps_agents/agents/reviewer/feedback_generator.py +490 -490
- tapps_agents/agents/reviewer/influxdb_validator.py +316 -316
- tapps_agents/agents/reviewer/issue_tracking.py +169 -169
- tapps_agents/agents/reviewer/library_detector.py +295 -295
- tapps_agents/agents/reviewer/library_patterns.py +268 -268
- tapps_agents/agents/reviewer/maintainability_scorer.py +593 -593
- tapps_agents/agents/reviewer/metric_strategies.py +276 -276
- tapps_agents/agents/reviewer/mqtt_validator.py +160 -160
- tapps_agents/agents/reviewer/output_enhancer.py +105 -105
- tapps_agents/agents/reviewer/pattern_detector.py +241 -241
- tapps_agents/agents/reviewer/performance_scorer.py +357 -357
- tapps_agents/agents/reviewer/phased_review.py +516 -516
- tapps_agents/agents/reviewer/progressive_review.py +435 -435
- tapps_agents/agents/reviewer/react_scorer.py +331 -331
- tapps_agents/agents/reviewer/score_constants.py +228 -228
- tapps_agents/agents/reviewer/score_validator.py +507 -507
- tapps_agents/agents/reviewer/scorer_registry.py +373 -373
- tapps_agents/agents/reviewer/service_discovery.py +534 -534
- tapps_agents/agents/reviewer/tools/parallel_executor.py +581 -581
- tapps_agents/agents/reviewer/tools/ruff_grouping.py +250 -250
- tapps_agents/agents/reviewer/tools/scoped_mypy.py +284 -284
- tapps_agents/agents/reviewer/typescript_scorer.py +1142 -1142
- tapps_agents/agents/reviewer/validation.py +208 -208
- tapps_agents/agents/reviewer/websocket_validator.py +132 -132
- tapps_agents/agents/tester/__init__.py +7 -7
- tapps_agents/agents/tester/accessibility_auditor.py +309 -309
- tapps_agents/agents/tester/agent.py +1080 -1080
- tapps_agents/agents/tester/batch_generator.py +54 -54
- tapps_agents/agents/tester/context_learner.py +51 -51
- tapps_agents/agents/tester/coverage_analyzer.py +386 -386
- tapps_agents/agents/tester/coverage_test_generator.py +290 -290
- tapps_agents/agents/tester/debug_enhancer.py +238 -238
- tapps_agents/agents/tester/device_emulator.py +241 -241
- tapps_agents/agents/tester/integration_generator.py +62 -62
- tapps_agents/agents/tester/network_recorder.py +300 -300
- tapps_agents/agents/tester/performance_monitor.py +320 -320
- tapps_agents/agents/tester/test_fixer.py +316 -316
- tapps_agents/agents/tester/test_generator.py +632 -632
- tapps_agents/agents/tester/trace_manager.py +234 -234
- tapps_agents/agents/tester/visual_regression.py +291 -291
- tapps_agents/analysis/pattern_detector.py +36 -36
- tapps_agents/beads/hydration.py +213 -213
- tapps_agents/beads/parse.py +32 -32
- tapps_agents/beads/specs.py +206 -206
- tapps_agents/cli/__init__.py +9 -9
- tapps_agents/cli/__main__.py +8 -8
- tapps_agents/cli/base.py +478 -478
- tapps_agents/cli/command_classifier.py +72 -72
- tapps_agents/cli/commands/__init__.py +2 -2
- tapps_agents/cli/commands/analyst.py +173 -173
- tapps_agents/cli/commands/architect.py +109 -109
- tapps_agents/cli/commands/cleanup_agent.py +92 -92
- tapps_agents/cli/commands/common.py +126 -126
- tapps_agents/cli/commands/debugger.py +90 -90
- tapps_agents/cli/commands/designer.py +112 -112
- tapps_agents/cli/commands/documenter.py +136 -136
- tapps_agents/cli/commands/enhancer.py +110 -110
- tapps_agents/cli/commands/evaluator.py +255 -255
- tapps_agents/cli/commands/implementer.py +301 -301
- tapps_agents/cli/commands/improver.py +91 -91
- tapps_agents/cli/commands/knowledge.py +111 -111
- tapps_agents/cli/commands/learning.py +172 -172
- tapps_agents/cli/commands/observability.py +283 -283
- tapps_agents/cli/commands/ops.py +135 -135
- tapps_agents/cli/commands/orchestrator.py +116 -116
- tapps_agents/cli/commands/planner.py +237 -237
- tapps_agents/cli/commands/reviewer.py +1872 -1872
- tapps_agents/cli/commands/status.py +285 -285
- tapps_agents/cli/commands/task.py +227 -227
- tapps_agents/cli/commands/tester.py +191 -191
- tapps_agents/cli/feedback.py +936 -936
- tapps_agents/cli/formatters.py +608 -608
- tapps_agents/cli/help/__init__.py +7 -7
- tapps_agents/cli/help/static_help.py +425 -425
- tapps_agents/cli/network_detection.py +110 -110
- tapps_agents/cli/output_compactor.py +274 -274
- tapps_agents/cli/parsers/__init__.py +2 -2
- tapps_agents/cli/parsers/analyst.py +186 -186
- tapps_agents/cli/parsers/architect.py +167 -167
- tapps_agents/cli/parsers/cleanup_agent.py +228 -228
- tapps_agents/cli/parsers/debugger.py +116 -116
- tapps_agents/cli/parsers/designer.py +182 -182
- tapps_agents/cli/parsers/documenter.py +134 -134
- tapps_agents/cli/parsers/enhancer.py +113 -113
- tapps_agents/cli/parsers/evaluator.py +213 -213
- tapps_agents/cli/parsers/implementer.py +168 -168
- tapps_agents/cli/parsers/improver.py +132 -132
- tapps_agents/cli/parsers/ops.py +159 -159
- tapps_agents/cli/parsers/orchestrator.py +98 -98
- tapps_agents/cli/parsers/planner.py +145 -145
- tapps_agents/cli/parsers/reviewer.py +462 -462
- tapps_agents/cli/parsers/tester.py +124 -124
- tapps_agents/cli/progress_heartbeat.py +254 -254
- tapps_agents/cli/streaming_progress.py +336 -336
- tapps_agents/cli/utils/__init__.py +6 -6
- tapps_agents/cli/utils/agent_lifecycle.py +48 -48
- tapps_agents/cli/utils/error_formatter.py +82 -82
- tapps_agents/cli/utils/error_recovery.py +188 -188
- tapps_agents/cli/utils/output_handler.py +59 -59
- tapps_agents/cli/utils/prompt_enhancer.py +319 -319
- tapps_agents/cli/validators/__init__.py +9 -9
- tapps_agents/cli/validators/command_validator.py +81 -81
- tapps_agents/context7/__init__.py +112 -112
- tapps_agents/context7/agent_integration.py +869 -869
- tapps_agents/context7/analytics.py +382 -382
- tapps_agents/context7/analytics_dashboard.py +299 -299
- tapps_agents/context7/async_cache.py +681 -681
- tapps_agents/context7/backup_client.py +958 -958
- tapps_agents/context7/cache_locking.py +194 -194
- tapps_agents/context7/cache_metadata.py +214 -214
- tapps_agents/context7/cache_prewarm.py +488 -488
- tapps_agents/context7/cache_structure.py +168 -168
- tapps_agents/context7/cache_warming.py +604 -604
- tapps_agents/context7/circuit_breaker.py +376 -376
- tapps_agents/context7/cleanup.py +461 -461
- tapps_agents/context7/commands.py +858 -858
- tapps_agents/context7/credential_validation.py +276 -276
- tapps_agents/context7/cross_reference_resolver.py +168 -168
- tapps_agents/context7/cross_references.py +424 -424
- tapps_agents/context7/doc_manager.py +225 -225
- tapps_agents/context7/fuzzy_matcher.py +369 -369
- tapps_agents/context7/kb_cache.py +404 -404
- tapps_agents/context7/language_detector.py +219 -219
- tapps_agents/context7/library_detector.py +725 -725
- tapps_agents/context7/lookup.py +738 -738
- tapps_agents/context7/metadata.py +258 -258
- tapps_agents/context7/refresh_queue.py +300 -300
- tapps_agents/context7/security.py +373 -373
- tapps_agents/context7/staleness_policies.py +278 -278
- tapps_agents/context7/tiles_integration.py +47 -47
- tapps_agents/continuous_bug_fix/__init__.py +20 -20
- tapps_agents/continuous_bug_fix/bug_finder.py +306 -306
- tapps_agents/continuous_bug_fix/bug_fix_coordinator.py +177 -177
- tapps_agents/continuous_bug_fix/commit_manager.py +178 -178
- tapps_agents/continuous_bug_fix/continuous_bug_fixer.py +322 -322
- tapps_agents/continuous_bug_fix/proactive_bug_finder.py +285 -285
- tapps_agents/core/__init__.py +298 -298
- tapps_agents/core/adaptive_cache_config.py +432 -432
- tapps_agents/core/agent_base.py +647 -647
- tapps_agents/core/agent_cache.py +466 -466
- tapps_agents/core/agent_learning.py +1865 -1865
- tapps_agents/core/analytics_dashboard.py +563 -563
- tapps_agents/core/analytics_enhancements.py +597 -597
- tapps_agents/core/anonymization.py +274 -274
- tapps_agents/core/ast_parser.py +228 -228
- tapps_agents/core/async_file_ops.py +402 -402
- tapps_agents/core/best_practice_consultant.py +299 -299
- tapps_agents/core/brownfield_analyzer.py +299 -299
- tapps_agents/core/brownfield_review.py +541 -541
- tapps_agents/core/browser_controller.py +513 -513
- tapps_agents/core/capability_registry.py +418 -418
- tapps_agents/core/change_impact_analyzer.py +190 -190
- tapps_agents/core/checkpoint_manager.py +377 -377
- tapps_agents/core/code_generator.py +329 -329
- tapps_agents/core/code_validator.py +276 -276
- tapps_agents/core/command_registry.py +327 -327
- tapps_agents/core/context_gathering/__init__.py +2 -2
- tapps_agents/core/context_gathering/repository_explorer.py +28 -28
- tapps_agents/core/context_intelligence/__init__.py +2 -2
- tapps_agents/core/context_intelligence/relevance_scorer.py +24 -24
- tapps_agents/core/context_intelligence/token_budget_manager.py +27 -27
- tapps_agents/core/context_manager.py +240 -240
- tapps_agents/core/cursor_feedback_monitor.py +146 -146
- tapps_agents/core/cursor_verification.py +290 -290
- tapps_agents/core/customization_loader.py +280 -280
- tapps_agents/core/customization_schema.py +260 -260
- tapps_agents/core/customization_template.py +238 -238
- tapps_agents/core/debug_logger.py +124 -124
- tapps_agents/core/design_validator.py +298 -298
- tapps_agents/core/diagram_generator.py +226 -226
- tapps_agents/core/docker_utils.py +232 -232
- tapps_agents/core/document_generator.py +617 -617
- tapps_agents/core/domain_detector.py +30 -30
- tapps_agents/core/error_envelope.py +454 -454
- tapps_agents/core/error_handler.py +270 -270
- tapps_agents/core/estimation_tracker.py +189 -189
- tapps_agents/core/eval_prompt_engine.py +116 -116
- tapps_agents/core/evaluation_base.py +119 -119
- tapps_agents/core/evaluation_models.py +320 -320
- tapps_agents/core/evaluation_orchestrator.py +225 -225
- tapps_agents/core/evaluators/__init__.py +7 -7
- tapps_agents/core/evaluators/architectural_evaluator.py +205 -205
- tapps_agents/core/evaluators/behavioral_evaluator.py +160 -160
- tapps_agents/core/evaluators/performance_profile_evaluator.py +160 -160
- tapps_agents/core/evaluators/security_posture_evaluator.py +148 -148
- tapps_agents/core/evaluators/spec_compliance_evaluator.py +181 -181
- tapps_agents/core/exceptions.py +107 -107
- tapps_agents/core/expert_config_generator.py +293 -293
- tapps_agents/core/export_schema.py +202 -202
- tapps_agents/core/external_feedback_models.py +102 -102
- tapps_agents/core/external_feedback_storage.py +213 -213
- tapps_agents/core/fallback_strategy.py +314 -314
- tapps_agents/core/feedback_analyzer.py +162 -162
- tapps_agents/core/feedback_collector.py +178 -178
- tapps_agents/core/git_operations.py +445 -445
- tapps_agents/core/hardware_profiler.py +151 -151
- tapps_agents/core/instructions.py +324 -324
- tapps_agents/core/io_guardrails.py +69 -69
- tapps_agents/core/issue_manifest.py +249 -249
- tapps_agents/core/issue_schema.py +139 -139
- tapps_agents/core/json_utils.py +128 -128
- tapps_agents/core/knowledge_graph.py +446 -446
- tapps_agents/core/language_detector.py +296 -296
- tapps_agents/core/learning_confidence.py +242 -242
- tapps_agents/core/learning_dashboard.py +246 -246
- tapps_agents/core/learning_decision.py +384 -384
- tapps_agents/core/learning_explainability.py +578 -578
- tapps_agents/core/learning_export.py +287 -287
- tapps_agents/core/learning_integration.py +228 -228
- tapps_agents/core/llm_behavior.py +232 -232
- tapps_agents/core/long_duration_support.py +786 -786
- tapps_agents/core/mcp_setup.py +106 -106
- tapps_agents/core/memory_integration.py +396 -396
- tapps_agents/core/meta_learning.py +666 -666
- tapps_agents/core/module_path_sanitizer.py +199 -199
- tapps_agents/core/multi_agent_orchestrator.py +382 -382
- tapps_agents/core/network_errors.py +125 -125
- tapps_agents/core/nfr_validator.py +336 -336
- tapps_agents/core/offline_mode.py +158 -158
- tapps_agents/core/output_contracts.py +300 -300
- tapps_agents/core/output_formatter.py +300 -300
- tapps_agents/core/path_normalizer.py +174 -174
- tapps_agents/core/path_validator.py +322 -322
- tapps_agents/core/pattern_library.py +250 -250
- tapps_agents/core/performance_benchmark.py +301 -301
- tapps_agents/core/performance_monitor.py +184 -184
- tapps_agents/core/playwright_mcp_controller.py +771 -771
- tapps_agents/core/policy_loader.py +135 -135
- tapps_agents/core/progress.py +166 -166
- tapps_agents/core/project_profile.py +354 -354
- tapps_agents/core/project_type_detector.py +454 -454
- tapps_agents/core/prompt_base.py +223 -223
- tapps_agents/core/prompt_learning/__init__.py +2 -2
- tapps_agents/core/prompt_learning/learning_loop.py +24 -24
- tapps_agents/core/prompt_learning/project_prompt_store.py +25 -25
- tapps_agents/core/prompt_learning/skills_prompt_analyzer.py +35 -35
- tapps_agents/core/prompt_optimization/__init__.py +6 -6
- tapps_agents/core/prompt_optimization/ab_tester.py +114 -114
- tapps_agents/core/prompt_optimization/correlation_analyzer.py +160 -160
- tapps_agents/core/prompt_optimization/progressive_refiner.py +129 -129
- tapps_agents/core/prompt_optimization/prompt_library.py +37 -37
- tapps_agents/core/requirements_evaluator.py +431 -431
- tapps_agents/core/resource_aware_executor.py +449 -449
- tapps_agents/core/resource_monitor.py +343 -343
- tapps_agents/core/resume_handler.py +298 -298
- tapps_agents/core/retry_handler.py +197 -197
- tapps_agents/core/review_checklists.py +479 -479
- tapps_agents/core/role_loader.py +201 -201
- tapps_agents/core/role_template_loader.py +201 -201
- tapps_agents/core/runtime_mode.py +60 -60
- tapps_agents/core/security_scanner.py +342 -342
- tapps_agents/core/skill_agent_registry.py +194 -194
- tapps_agents/core/skill_integration.py +208 -208
- tapps_agents/core/skill_loader.py +492 -492
- tapps_agents/core/skill_template.py +341 -341
- tapps_agents/core/skill_validator.py +478 -478
- tapps_agents/core/stack_analyzer.py +35 -35
- tapps_agents/core/startup.py +174 -174
- tapps_agents/core/storage_manager.py +397 -397
- tapps_agents/core/storage_models.py +166 -166
- tapps_agents/core/story_evaluator.py +410 -410
- tapps_agents/core/subprocess_utils.py +170 -170
- tapps_agents/core/task_duration.py +296 -296
- tapps_agents/core/task_memory.py +582 -582
- tapps_agents/core/task_state.py +226 -226
- tapps_agents/core/tech_stack_priorities.py +208 -208
- tapps_agents/core/temp_directory.py +194 -194
- tapps_agents/core/template_merger.py +600 -600
- tapps_agents/core/template_selector.py +280 -280
- tapps_agents/core/test_generator.py +286 -286
- tapps_agents/core/tiered_context.py +253 -253
- tapps_agents/core/token_monitor.py +345 -345
- tapps_agents/core/traceability.py +254 -254
- tapps_agents/core/trajectory_tracker.py +50 -50
- tapps_agents/core/unicode_safe.py +143 -143
- tapps_agents/core/unified_cache_config.py +170 -170
- tapps_agents/core/unified_state.py +324 -324
- tapps_agents/core/validate_cursor_setup.py +237 -237
- tapps_agents/core/validation_registry.py +136 -136
- tapps_agents/core/validators/__init__.py +4 -4
- tapps_agents/core/validators/python_validator.py +87 -87
- tapps_agents/core/verification_agent.py +90 -90
- tapps_agents/core/visual_feedback.py +644 -644
- tapps_agents/core/workflow_validator.py +197 -197
- tapps_agents/core/worktree.py +367 -367
- tapps_agents/docker/__init__.py +10 -10
- tapps_agents/docker/analyzer.py +186 -186
- tapps_agents/docker/debugger.py +229 -229
- tapps_agents/docker/error_patterns.py +216 -216
- tapps_agents/epic/__init__.py +22 -22
- tapps_agents/epic/beads_sync.py +115 -115
- tapps_agents/epic/markdown_sync.py +105 -105
- tapps_agents/epic/models.py +96 -96
- tapps_agents/experts/__init__.py +163 -163
- tapps_agents/experts/agent_integration.py +243 -243
- tapps_agents/experts/auto_generator.py +331 -331
- tapps_agents/experts/base_expert.py +536 -536
- tapps_agents/experts/builtin_registry.py +261 -261
- tapps_agents/experts/business_metrics.py +565 -565
- tapps_agents/experts/cache.py +266 -266
- tapps_agents/experts/confidence_breakdown.py +306 -306
- tapps_agents/experts/confidence_calculator.py +336 -336
- tapps_agents/experts/confidence_metrics.py +236 -236
- tapps_agents/experts/domain_config.py +311 -311
- tapps_agents/experts/domain_detector.py +550 -550
- tapps_agents/experts/domain_utils.py +84 -84
- tapps_agents/experts/expert_config.py +113 -113
- tapps_agents/experts/expert_engine.py +465 -465
- tapps_agents/experts/expert_registry.py +744 -744
- tapps_agents/experts/expert_synthesizer.py +70 -70
- tapps_agents/experts/governance.py +197 -197
- tapps_agents/experts/history_logger.py +312 -312
- tapps_agents/experts/knowledge/README.md +180 -180
- tapps_agents/experts/knowledge/accessibility/accessible-forms.md +331 -331
- tapps_agents/experts/knowledge/accessibility/aria-patterns.md +344 -344
- tapps_agents/experts/knowledge/accessibility/color-contrast.md +285 -285
- tapps_agents/experts/knowledge/accessibility/keyboard-navigation.md +332 -332
- tapps_agents/experts/knowledge/accessibility/screen-readers.md +282 -282
- tapps_agents/experts/knowledge/accessibility/semantic-html.md +355 -355
- tapps_agents/experts/knowledge/accessibility/testing-accessibility.md +369 -369
- tapps_agents/experts/knowledge/accessibility/wcag-2.1.md +296 -296
- tapps_agents/experts/knowledge/accessibility/wcag-2.2.md +211 -211
- tapps_agents/experts/knowledge/agent-learning/best-practices.md +715 -715
- tapps_agents/experts/knowledge/agent-learning/pattern-extraction.md +282 -282
- tapps_agents/experts/knowledge/agent-learning/prompt-optimization.md +320 -320
- tapps_agents/experts/knowledge/ai-frameworks/model-optimization.md +90 -90
- tapps_agents/experts/knowledge/ai-frameworks/openvino-patterns.md +260 -260
- tapps_agents/experts/knowledge/api-design-integration/api-gateway-patterns.md +309 -309
- tapps_agents/experts/knowledge/api-design-integration/api-security-patterns.md +521 -521
- tapps_agents/experts/knowledge/api-design-integration/api-versioning.md +421 -421
- tapps_agents/experts/knowledge/api-design-integration/async-protocol-patterns.md +61 -61
- tapps_agents/experts/knowledge/api-design-integration/contract-testing.md +221 -221
- tapps_agents/experts/knowledge/api-design-integration/external-api-integration.md +489 -489
- tapps_agents/experts/knowledge/api-design-integration/fastapi-patterns.md +360 -360
- tapps_agents/experts/knowledge/api-design-integration/fastapi-testing.md +262 -262
- tapps_agents/experts/knowledge/api-design-integration/graphql-patterns.md +582 -582
- tapps_agents/experts/knowledge/api-design-integration/grpc-best-practices.md +499 -499
- tapps_agents/experts/knowledge/api-design-integration/mqtt-patterns.md +455 -455
- tapps_agents/experts/knowledge/api-design-integration/rate-limiting.md +507 -507
- tapps_agents/experts/knowledge/api-design-integration/restful-api-design.md +618 -618
- tapps_agents/experts/knowledge/api-design-integration/websocket-patterns.md +480 -480
- tapps_agents/experts/knowledge/cloud-infrastructure/cloud-native-patterns.md +175 -175
- tapps_agents/experts/knowledge/cloud-infrastructure/container-health-checks.md +261 -261
- tapps_agents/experts/knowledge/cloud-infrastructure/containerization.md +222 -222
- tapps_agents/experts/knowledge/cloud-infrastructure/cost-optimization.md +122 -122
- tapps_agents/experts/knowledge/cloud-infrastructure/disaster-recovery.md +153 -153
- tapps_agents/experts/knowledge/cloud-infrastructure/dockerfile-patterns.md +285 -285
- tapps_agents/experts/knowledge/cloud-infrastructure/infrastructure-as-code.md +187 -187
- tapps_agents/experts/knowledge/cloud-infrastructure/kubernetes-patterns.md +253 -253
- tapps_agents/experts/knowledge/cloud-infrastructure/multi-cloud-strategies.md +155 -155
- tapps_agents/experts/knowledge/cloud-infrastructure/serverless-architecture.md +200 -200
- tapps_agents/experts/knowledge/code-quality-analysis/README.md +16 -16
- tapps_agents/experts/knowledge/code-quality-analysis/code-metrics.md +137 -137
- tapps_agents/experts/knowledge/code-quality-analysis/complexity-analysis.md +181 -181
- tapps_agents/experts/knowledge/code-quality-analysis/technical-debt-patterns.md +191 -191
- tapps_agents/experts/knowledge/data-privacy-compliance/anonymization.md +313 -313
- tapps_agents/experts/knowledge/data-privacy-compliance/ccpa.md +255 -255
- tapps_agents/experts/knowledge/data-privacy-compliance/consent-management.md +282 -282
- tapps_agents/experts/knowledge/data-privacy-compliance/data-minimization.md +275 -275
- tapps_agents/experts/knowledge/data-privacy-compliance/data-retention.md +297 -297
- tapps_agents/experts/knowledge/data-privacy-compliance/data-subject-rights.md +383 -383
- tapps_agents/experts/knowledge/data-privacy-compliance/encryption-privacy.md +285 -285
- tapps_agents/experts/knowledge/data-privacy-compliance/gdpr.md +344 -344
- tapps_agents/experts/knowledge/data-privacy-compliance/hipaa.md +385 -385
- tapps_agents/experts/knowledge/data-privacy-compliance/privacy-by-design.md +280 -280
- tapps_agents/experts/knowledge/database-data-management/acid-vs-cap.md +164 -164
- tapps_agents/experts/knowledge/database-data-management/backup-and-recovery.md +182 -182
- tapps_agents/experts/knowledge/database-data-management/data-modeling.md +172 -172
- tapps_agents/experts/knowledge/database-data-management/database-design.md +187 -187
- tapps_agents/experts/knowledge/database-data-management/flux-query-optimization.md +342 -342
- tapps_agents/experts/knowledge/database-data-management/influxdb-connection-patterns.md +432 -432
- tapps_agents/experts/knowledge/database-data-management/influxdb-patterns.md +442 -442
- tapps_agents/experts/knowledge/database-data-management/migration-strategies.md +216 -216
- tapps_agents/experts/knowledge/database-data-management/nosql-patterns.md +259 -259
- tapps_agents/experts/knowledge/database-data-management/scalability-patterns.md +184 -184
- tapps_agents/experts/knowledge/database-data-management/sql-optimization.md +175 -175
- tapps_agents/experts/knowledge/database-data-management/time-series-modeling.md +444 -444
- tapps_agents/experts/knowledge/development-workflow/README.md +16 -16
- tapps_agents/experts/knowledge/development-workflow/automation-best-practices.md +216 -216
- tapps_agents/experts/knowledge/development-workflow/build-strategies.md +198 -198
- tapps_agents/experts/knowledge/development-workflow/deployment-patterns.md +205 -205
- tapps_agents/experts/knowledge/development-workflow/git-workflows.md +205 -205
- tapps_agents/experts/knowledge/documentation-knowledge-management/README.md +16 -16
- tapps_agents/experts/knowledge/documentation-knowledge-management/api-documentation-patterns.md +231 -231
- tapps_agents/experts/knowledge/documentation-knowledge-management/documentation-standards.md +191 -191
- tapps_agents/experts/knowledge/documentation-knowledge-management/knowledge-management.md +171 -171
- tapps_agents/experts/knowledge/documentation-knowledge-management/technical-writing-guide.md +192 -192
- tapps_agents/experts/knowledge/observability-monitoring/alerting-patterns.md +461 -461
- tapps_agents/experts/knowledge/observability-monitoring/apm-tools.md +459 -459
- tapps_agents/experts/knowledge/observability-monitoring/distributed-tracing.md +367 -367
- tapps_agents/experts/knowledge/observability-monitoring/logging-strategies.md +478 -478
- tapps_agents/experts/knowledge/observability-monitoring/metrics-and-monitoring.md +510 -510
- tapps_agents/experts/knowledge/observability-monitoring/observability-best-practices.md +492 -492
- tapps_agents/experts/knowledge/observability-monitoring/open-telemetry.md +573 -573
- tapps_agents/experts/knowledge/observability-monitoring/slo-sli-sla.md +419 -419
- tapps_agents/experts/knowledge/performance/anti-patterns.md +284 -284
- tapps_agents/experts/knowledge/performance/api-performance.md +256 -256
- tapps_agents/experts/knowledge/performance/caching.md +327 -327
- tapps_agents/experts/knowledge/performance/database-performance.md +252 -252
- tapps_agents/experts/knowledge/performance/optimization-patterns.md +327 -327
- tapps_agents/experts/knowledge/performance/profiling.md +297 -297
- tapps_agents/experts/knowledge/performance/resource-management.md +293 -293
- tapps_agents/experts/knowledge/performance/scalability.md +306 -306
- tapps_agents/experts/knowledge/security/owasp-top10.md +209 -209
- tapps_agents/experts/knowledge/security/secure-coding-practices.md +207 -207
- tapps_agents/experts/knowledge/security/threat-modeling.md +220 -220
- tapps_agents/experts/knowledge/security/vulnerability-patterns.md +342 -342
- tapps_agents/experts/knowledge/software-architecture/docker-compose-patterns.md +314 -314
- tapps_agents/experts/knowledge/software-architecture/microservices-patterns.md +379 -379
- tapps_agents/experts/knowledge/software-architecture/service-communication.md +316 -316
- tapps_agents/experts/knowledge/testing/best-practices.md +310 -310
- tapps_agents/experts/knowledge/testing/coverage-analysis.md +293 -293
- tapps_agents/experts/knowledge/testing/mocking.md +256 -256
- tapps_agents/experts/knowledge/testing/test-automation.md +276 -276
- tapps_agents/experts/knowledge/testing/test-data.md +271 -271
- tapps_agents/experts/knowledge/testing/test-design-patterns.md +280 -280
- tapps_agents/experts/knowledge/testing/test-maintenance.md +236 -236
- tapps_agents/experts/knowledge/testing/test-strategies.md +311 -311
- tapps_agents/experts/knowledge/user-experience/information-architecture.md +325 -325
- tapps_agents/experts/knowledge/user-experience/interaction-design.md +363 -363
- tapps_agents/experts/knowledge/user-experience/prototyping.md +293 -293
- tapps_agents/experts/knowledge/user-experience/usability-heuristics.md +337 -337
- tapps_agents/experts/knowledge/user-experience/usability-testing.md +311 -311
- tapps_agents/experts/knowledge/user-experience/user-journeys.md +296 -296
- tapps_agents/experts/knowledge/user-experience/user-research.md +373 -373
- tapps_agents/experts/knowledge/user-experience/ux-principles.md +340 -340
- tapps_agents/experts/knowledge_freshness.py +321 -321
- tapps_agents/experts/knowledge_ingestion.py +438 -438
- tapps_agents/experts/knowledge_need_detector.py +93 -93
- tapps_agents/experts/knowledge_validator.py +382 -382
- tapps_agents/experts/observability.py +440 -440
- tapps_agents/experts/passive_notifier.py +238 -238
- tapps_agents/experts/proactive_orchestrator.py +32 -32
- tapps_agents/experts/rag_chunker.py +205 -205
- tapps_agents/experts/rag_embedder.py +152 -152
- tapps_agents/experts/rag_evaluation.py +299 -299
- tapps_agents/experts/rag_index.py +303 -303
- tapps_agents/experts/rag_metrics.py +293 -293
- tapps_agents/experts/rag_safety.py +263 -263
- tapps_agents/experts/report_generator.py +296 -296
- tapps_agents/experts/setup_wizard.py +441 -441
- tapps_agents/experts/simple_rag.py +431 -431
- tapps_agents/experts/vector_rag.py +354 -354
- tapps_agents/experts/weight_distributor.py +304 -304
- tapps_agents/health/__init__.py +24 -24
- tapps_agents/health/base.py +75 -75
- tapps_agents/health/checks/__init__.py +22 -22
- tapps_agents/health/checks/automation.py +127 -127
- tapps_agents/health/checks/context7_cache.py +210 -210
- tapps_agents/health/checks/environment.py +116 -116
- tapps_agents/health/checks/execution.py +170 -170
- tapps_agents/health/checks/knowledge_base.py +187 -187
- tapps_agents/health/checks/outcomes.backup_20260204_064058.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +324 -0
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +324 -0
- tapps_agents/health/checks/outcomes.py +324 -324
- tapps_agents/health/collector.py +280 -280
- tapps_agents/health/dashboard.py +137 -137
- tapps_agents/health/metrics.py +151 -151
- tapps_agents/health/registry.py +166 -166
- tapps_agents/hooks/__init__.py +33 -33
- tapps_agents/hooks/config.py +140 -140
- tapps_agents/hooks/events.py +135 -135
- tapps_agents/hooks/executor.py +128 -128
- tapps_agents/hooks/manager.py +143 -143
- tapps_agents/integration/__init__.py +8 -8
- tapps_agents/integration/service_integrator.py +121 -121
- tapps_agents/integrations/__init__.py +10 -10
- tapps_agents/integrations/clawdbot.py +525 -525
- tapps_agents/integrations/memory_bridge.py +356 -356
- tapps_agents/mcp/__init__.py +18 -18
- tapps_agents/mcp/gateway.py +112 -112
- tapps_agents/mcp/servers/__init__.py +13 -13
- tapps_agents/mcp/servers/analysis.py +204 -204
- tapps_agents/mcp/servers/context7.py +198 -198
- tapps_agents/mcp/servers/filesystem.py +218 -218
- tapps_agents/mcp/servers/git.py +201 -201
- tapps_agents/mcp/tool_registry.py +115 -115
- tapps_agents/quality/__init__.py +54 -54
- tapps_agents/quality/coverage_analyzer.py +379 -379
- tapps_agents/quality/enforcement.py +82 -82
- tapps_agents/quality/gates/__init__.py +37 -37
- tapps_agents/quality/gates/approval_gate.py +255 -255
- tapps_agents/quality/gates/base.py +84 -84
- tapps_agents/quality/gates/exceptions.py +43 -43
- tapps_agents/quality/gates/policy_gate.py +195 -195
- tapps_agents/quality/gates/registry.py +239 -239
- tapps_agents/quality/gates/security_gate.py +156 -156
- tapps_agents/quality/quality_gates.py +369 -369
- tapps_agents/quality/secret_scanner.py +335 -335
- tapps_agents/resources/__init__.py +5 -0
- tapps_agents/resources/claude/__init__.py +1 -0
- tapps_agents/resources/claude/commands/README.md +156 -0
- tapps_agents/resources/claude/commands/__init__.py +1 -0
- tapps_agents/resources/claude/commands/build-fix.md +22 -0
- tapps_agents/resources/claude/commands/build.md +77 -0
- tapps_agents/resources/claude/commands/debug.md +53 -0
- tapps_agents/resources/claude/commands/design.md +68 -0
- tapps_agents/resources/claude/commands/docs.md +53 -0
- tapps_agents/resources/claude/commands/e2e.md +22 -0
- tapps_agents/resources/claude/commands/fix.md +54 -0
- tapps_agents/resources/claude/commands/implement.md +53 -0
- tapps_agents/resources/claude/commands/improve.md +53 -0
- tapps_agents/resources/claude/commands/library-docs.md +64 -0
- tapps_agents/resources/claude/commands/lint.md +52 -0
- tapps_agents/resources/claude/commands/plan.md +65 -0
- tapps_agents/resources/claude/commands/refactor-clean.md +21 -0
- tapps_agents/resources/claude/commands/refactor.md +55 -0
- tapps_agents/resources/claude/commands/review.md +67 -0
- tapps_agents/resources/claude/commands/score.md +60 -0
- tapps_agents/resources/claude/commands/security-review.md +22 -0
- tapps_agents/resources/claude/commands/security-scan.md +54 -0
- tapps_agents/resources/claude/commands/tdd.md +24 -0
- tapps_agents/resources/claude/commands/test-coverage.md +21 -0
- tapps_agents/resources/claude/commands/test.md +54 -0
- tapps_agents/resources/claude/commands/update-codemaps.md +20 -0
- tapps_agents/resources/claude/commands/update-docs.md +21 -0
- tapps_agents/resources/claude/skills/__init__.py +1 -0
- tapps_agents/resources/claude/skills/analyst/SKILL.md +272 -0
- tapps_agents/resources/claude/skills/analyst/__init__.py +1 -0
- tapps_agents/resources/claude/skills/architect/SKILL.md +282 -0
- tapps_agents/resources/claude/skills/architect/__init__.py +1 -0
- tapps_agents/resources/claude/skills/backend-patterns/SKILL.md +30 -0
- tapps_agents/resources/claude/skills/backend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/coding-standards/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/coding-standards/__init__.py +1 -0
- tapps_agents/resources/claude/skills/debugger/SKILL.md +203 -0
- tapps_agents/resources/claude/skills/debugger/__init__.py +1 -0
- tapps_agents/resources/claude/skills/designer/SKILL.md +243 -0
- tapps_agents/resources/claude/skills/designer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/documenter/SKILL.md +252 -0
- tapps_agents/resources/claude/skills/documenter/__init__.py +1 -0
- tapps_agents/resources/claude/skills/enhancer/SKILL.md +307 -0
- tapps_agents/resources/claude/skills/enhancer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/evaluator/SKILL.md +204 -0
- tapps_agents/resources/claude/skills/evaluator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/frontend-patterns/SKILL.md +29 -0
- tapps_agents/resources/claude/skills/frontend-patterns/__init__.py +1 -0
- tapps_agents/resources/claude/skills/implementer/SKILL.md +188 -0
- tapps_agents/resources/claude/skills/implementer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/improver/SKILL.md +218 -0
- tapps_agents/resources/claude/skills/improver/__init__.py +1 -0
- tapps_agents/resources/claude/skills/ops/SKILL.md +281 -0
- tapps_agents/resources/claude/skills/ops/__init__.py +1 -0
- tapps_agents/resources/claude/skills/orchestrator/SKILL.md +390 -0
- tapps_agents/resources/claude/skills/orchestrator/__init__.py +1 -0
- tapps_agents/resources/claude/skills/planner/SKILL.md +254 -0
- tapps_agents/resources/claude/skills/planner/__init__.py +1 -0
- tapps_agents/resources/claude/skills/reviewer/SKILL.md +434 -0
- tapps_agents/resources/claude/skills/reviewer/__init__.py +1 -0
- tapps_agents/resources/claude/skills/security-review/SKILL.md +31 -0
- tapps_agents/resources/claude/skills/security-review/__init__.py +1 -0
- tapps_agents/resources/claude/skills/simple-mode/SKILL.md +695 -0
- tapps_agents/resources/claude/skills/simple-mode/__init__.py +1 -0
- tapps_agents/resources/claude/skills/tester/SKILL.md +219 -0
- tapps_agents/resources/claude/skills/tester/__init__.py +1 -0
- tapps_agents/resources/cursor/.cursorignore +35 -0
- tapps_agents/resources/cursor/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/__init__.py +1 -0
- tapps_agents/resources/cursor/commands/build-fix.md +11 -0
- tapps_agents/resources/cursor/commands/build.md +11 -0
- tapps_agents/resources/cursor/commands/e2e.md +11 -0
- tapps_agents/resources/cursor/commands/fix.md +11 -0
- tapps_agents/resources/cursor/commands/refactor-clean.md +11 -0
- tapps_agents/resources/cursor/commands/review.md +11 -0
- tapps_agents/resources/cursor/commands/security-review.md +11 -0
- tapps_agents/resources/cursor/commands/tdd.md +11 -0
- tapps_agents/resources/cursor/commands/test-coverage.md +11 -0
- tapps_agents/resources/cursor/commands/test.md +11 -0
- tapps_agents/resources/cursor/commands/update-codemaps.md +10 -0
- tapps_agents/resources/cursor/commands/update-docs.md +11 -0
- tapps_agents/resources/cursor/rules/__init__.py +1 -0
- tapps_agents/resources/cursor/rules/agent-capabilities.mdc +687 -0
- tapps_agents/resources/cursor/rules/coding-style.mdc +31 -0
- tapps_agents/resources/cursor/rules/command-reference.mdc +2081 -0
- tapps_agents/resources/cursor/rules/cursor-mode-usage.mdc +125 -0
- tapps_agents/resources/cursor/rules/git-workflow.mdc +29 -0
- tapps_agents/resources/cursor/rules/performance.mdc +29 -0
- tapps_agents/resources/cursor/rules/project-context.mdc +163 -0
- tapps_agents/resources/cursor/rules/project-profiling.mdc +197 -0
- tapps_agents/resources/cursor/rules/quick-reference.mdc +630 -0
- tapps_agents/resources/cursor/rules/security.mdc +32 -0
- tapps_agents/resources/cursor/rules/simple-mode.mdc +500 -0
- tapps_agents/resources/cursor/rules/testing.mdc +31 -0
- tapps_agents/resources/cursor/rules/when-to-use.mdc +156 -0
- tapps_agents/resources/cursor/rules/workflow-presets.mdc +179 -0
- tapps_agents/resources/customizations/__init__.py +1 -0
- tapps_agents/resources/customizations/example-custom.yaml +83 -0
- tapps_agents/resources/hooks/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/README.md +5 -0
- tapps_agents/resources/hooks/templates/__init__.py +1 -0
- tapps_agents/resources/hooks/templates/add-project-context.yaml +8 -0
- tapps_agents/resources/hooks/templates/auto-format-js.yaml +10 -0
- tapps_agents/resources/hooks/templates/auto-format-python.yaml +10 -0
- tapps_agents/resources/hooks/templates/git-commit-check.yaml +7 -0
- tapps_agents/resources/hooks/templates/notify-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/quality-gate.yaml +8 -0
- tapps_agents/resources/hooks/templates/security-scan-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/session-end-log.yaml +7 -0
- tapps_agents/resources/hooks/templates/show-beads-ready.yaml +8 -0
- tapps_agents/resources/hooks/templates/test-on-edit.yaml +10 -0
- tapps_agents/resources/hooks/templates/update-docs-on-complete.yaml +8 -0
- tapps_agents/resources/hooks/templates/user-prompt-log.yaml +7 -0
- tapps_agents/resources/scripts/__init__.py +1 -0
- tapps_agents/resources/scripts/set_bd_path.ps1 +51 -0
- tapps_agents/resources/workflows/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/__init__.py +1 -0
- tapps_agents/resources/workflows/presets/brownfield-analysis.yaml +235 -0
- tapps_agents/resources/workflows/presets/fix.yaml +78 -0
- tapps_agents/resources/workflows/presets/full-sdlc.yaml +122 -0
- tapps_agents/resources/workflows/presets/quality.yaml +82 -0
- tapps_agents/resources/workflows/presets/rapid-dev.yaml +84 -0
- tapps_agents/session/__init__.py +19 -19
- tapps_agents/session/manager.py +256 -256
- tapps_agents/simple_mode/__init__.py +66 -66
- tapps_agents/simple_mode/agent_contracts.py +357 -357
- tapps_agents/simple_mode/beads_hooks.py +151 -151
- tapps_agents/simple_mode/code_snippet_handler.py +382 -382
- tapps_agents/simple_mode/documentation_manager.py +395 -395
- tapps_agents/simple_mode/documentation_reader.py +187 -187
- tapps_agents/simple_mode/file_inference.py +292 -292
- tapps_agents/simple_mode/framework_change_detector.py +268 -268
- tapps_agents/simple_mode/intent_parser.py +510 -510
- tapps_agents/simple_mode/learning_progression.py +358 -358
- tapps_agents/simple_mode/nl_handler.py +700 -700
- tapps_agents/simple_mode/onboarding.py +253 -253
- tapps_agents/simple_mode/orchestrators/__init__.py +38 -38
- tapps_agents/simple_mode/orchestrators/breakdown_orchestrator.py +49 -49
- tapps_agents/simple_mode/orchestrators/brownfield_orchestrator.py +135 -135
- tapps_agents/simple_mode/orchestrators/deliverable_checklist.py +349 -349
- tapps_agents/simple_mode/orchestrators/enhance_orchestrator.py +53 -53
- tapps_agents/simple_mode/orchestrators/epic_orchestrator.py +122 -122
- tapps_agents/simple_mode/orchestrators/explore_orchestrator.py +184 -184
- tapps_agents/simple_mode/orchestrators/plan_analysis_orchestrator.py +206 -206
- tapps_agents/simple_mode/orchestrators/pr_orchestrator.py +237 -237
- tapps_agents/simple_mode/orchestrators/refactor_orchestrator.py +222 -222
- tapps_agents/simple_mode/orchestrators/requirements_tracer.py +262 -262
- tapps_agents/simple_mode/orchestrators/resume_orchestrator.py +210 -210
- tapps_agents/simple_mode/orchestrators/review_orchestrator.py +161 -161
- tapps_agents/simple_mode/orchestrators/test_orchestrator.py +82 -82
- tapps_agents/simple_mode/output_aggregator.py +340 -340
- tapps_agents/simple_mode/result_formatters.py +598 -598
- tapps_agents/simple_mode/step_dependencies.py +382 -382
- tapps_agents/simple_mode/step_results.py +276 -276
- tapps_agents/simple_mode/streaming.py +388 -388
- tapps_agents/simple_mode/variations.py +129 -129
- tapps_agents/simple_mode/visual_feedback.py +238 -238
- tapps_agents/simple_mode/zero_config.py +274 -274
- tapps_agents/suggestions/__init__.py +8 -8
- tapps_agents/suggestions/inline_suggester.py +52 -52
- tapps_agents/templates/__init__.py +8 -8
- tapps_agents/templates/microservice_generator.py +274 -274
- tapps_agents/utils/env_validator.py +291 -291
- tapps_agents/workflow/__init__.py +171 -171
- tapps_agents/workflow/acceptance_verifier.py +132 -132
- tapps_agents/workflow/agent_handlers/__init__.py +41 -41
- tapps_agents/workflow/agent_handlers/analyst_handler.py +75 -75
- tapps_agents/workflow/agent_handlers/architect_handler.py +107 -107
- tapps_agents/workflow/agent_handlers/base.py +84 -84
- tapps_agents/workflow/agent_handlers/debugger_handler.py +100 -100
- tapps_agents/workflow/agent_handlers/designer_handler.py +110 -110
- tapps_agents/workflow/agent_handlers/documenter_handler.py +94 -94
- tapps_agents/workflow/agent_handlers/implementer_handler.py +235 -235
- tapps_agents/workflow/agent_handlers/ops_handler.py +62 -62
- tapps_agents/workflow/agent_handlers/orchestrator_handler.py +43 -43
- tapps_agents/workflow/agent_handlers/planner_handler.py +98 -98
- tapps_agents/workflow/agent_handlers/registry.py +119 -119
- tapps_agents/workflow/agent_handlers/reviewer_handler.py +119 -119
- tapps_agents/workflow/agent_handlers/tester_handler.py +69 -69
- tapps_agents/workflow/analytics_accessor.py +337 -337
- tapps_agents/workflow/analytics_alerts.py +416 -416
- tapps_agents/workflow/analytics_dashboard_cursor.py +281 -281
- tapps_agents/workflow/analytics_dual_write.py +103 -103
- tapps_agents/workflow/analytics_integration.py +119 -119
- tapps_agents/workflow/analytics_query_parser.py +278 -278
- tapps_agents/workflow/analytics_visualizer.py +259 -259
- tapps_agents/workflow/artifact_helper.py +204 -204
- tapps_agents/workflow/audit_logger.py +263 -263
- tapps_agents/workflow/auto_execution_config.py +340 -340
- tapps_agents/workflow/auto_progression.py +586 -586
- tapps_agents/workflow/branch_cleanup.py +349 -349
- tapps_agents/workflow/checkpoint.py +256 -256
- tapps_agents/workflow/checkpoint_manager.py +178 -178
- tapps_agents/workflow/code_artifact.py +179 -179
- tapps_agents/workflow/common_enums.py +96 -96
- tapps_agents/workflow/confirmation_handler.py +130 -130
- tapps_agents/workflow/context_analyzer.py +222 -222
- tapps_agents/workflow/context_artifact.py +230 -230
- tapps_agents/workflow/cursor_chat.py +94 -94
- tapps_agents/workflow/cursor_skill_helper.py +516 -516
- tapps_agents/workflow/dependency_resolver.py +244 -244
- tapps_agents/workflow/design_artifact.py +156 -156
- tapps_agents/workflow/detector.py +751 -751
- tapps_agents/workflow/direct_execution_fallback.py +301 -301
- tapps_agents/workflow/docs_artifact.py +168 -168
- tapps_agents/workflow/enforcer.py +389 -389
- tapps_agents/workflow/enhancement_artifact.py +142 -142
- tapps_agents/workflow/error_recovery.py +806 -806
- tapps_agents/workflow/event_bus.py +183 -183
- tapps_agents/workflow/event_log.py +612 -612
- tapps_agents/workflow/events.py +63 -63
- tapps_agents/workflow/exceptions.py +43 -43
- tapps_agents/workflow/execution_graph.py +498 -498
- tapps_agents/workflow/execution_plan.py +126 -126
- tapps_agents/workflow/file_utils.py +186 -186
- tapps_agents/workflow/gate_evaluator.py +182 -182
- tapps_agents/workflow/gate_integration.py +200 -200
- tapps_agents/workflow/graph_visualizer.py +130 -130
- tapps_agents/workflow/health_checker.py +206 -206
- tapps_agents/workflow/logging_helper.py +243 -243
- tapps_agents/workflow/manifest.py +582 -582
- tapps_agents/workflow/marker_writer.py +250 -250
- tapps_agents/workflow/messaging.py +325 -325
- tapps_agents/workflow/metadata_models.py +91 -91
- tapps_agents/workflow/metrics_integration.py +226 -226
- tapps_agents/workflow/migration_utils.py +116 -116
- tapps_agents/workflow/models.py +148 -148
- tapps_agents/workflow/nlp_config.py +198 -198
- tapps_agents/workflow/nlp_error_handler.py +207 -207
- tapps_agents/workflow/nlp_executor.py +163 -163
- tapps_agents/workflow/nlp_parser.py +528 -528
- tapps_agents/workflow/observability_dashboard.py +451 -451
- tapps_agents/workflow/observer.py +170 -170
- tapps_agents/workflow/ops_artifact.py +257 -257
- tapps_agents/workflow/output_passing.py +214 -214
- tapps_agents/workflow/parallel_executor.py +463 -463
- tapps_agents/workflow/planning_artifact.py +179 -179
- tapps_agents/workflow/preset_loader.py +285 -285
- tapps_agents/workflow/preset_recommender.py +270 -270
- tapps_agents/workflow/progress_logger.py +145 -145
- tapps_agents/workflow/progress_manager.py +303 -303
- tapps_agents/workflow/progress_monitor.py +186 -186
- tapps_agents/workflow/progress_updates.py +423 -423
- tapps_agents/workflow/quality_artifact.py +158 -158
- tapps_agents/workflow/quality_loopback.py +101 -101
- tapps_agents/workflow/recommender.py +387 -387
- tapps_agents/workflow/remediation_loop.py +166 -166
- tapps_agents/workflow/result_aggregator.py +300 -300
- tapps_agents/workflow/review_artifact.py +185 -185
- tapps_agents/workflow/schema_validator.py +522 -522
- tapps_agents/workflow/session_handoff.py +178 -178
- tapps_agents/workflow/skill_invoker.py +648 -648
- tapps_agents/workflow/state_manager.py +756 -756
- tapps_agents/workflow/state_persistence_config.py +331 -331
- tapps_agents/workflow/status_monitor.py +449 -449
- tapps_agents/workflow/step_checkpoint.py +314 -314
- tapps_agents/workflow/step_details.py +201 -201
- tapps_agents/workflow/story_models.py +147 -147
- tapps_agents/workflow/streaming.py +416 -416
- tapps_agents/workflow/suggestion_engine.py +552 -552
- tapps_agents/workflow/testing_artifact.py +186 -186
- tapps_agents/workflow/timeline.py +158 -158
- tapps_agents/workflow/token_integration.py +209 -209
- tapps_agents/workflow/validation.py +217 -217
- tapps_agents/workflow/visual_feedback.py +391 -391
- tapps_agents/workflow/workflow_chain.py +95 -95
- tapps_agents/workflow/workflow_summary.py +219 -219
- tapps_agents/workflow/worktree_manager.py +724 -724
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/METADATA +672 -672
- tapps_agents-3.6.1.dist-info/RECORD +883 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/licenses/LICENSE +22 -22
- tapps_agents-3.6.0.dist-info/RECORD +0 -758
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/WHEEL +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.6.0.dist-info → tapps_agents-3.6.1.dist-info}/top_level.txt +0 -0
|
@@ -1,331 +1,331 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Auto-Expert Generator
|
|
3
|
-
|
|
4
|
-
Automatically generates experts from suggestions with knowledge base population.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from __future__ import annotations
|
|
8
|
-
|
|
9
|
-
import logging
|
|
10
|
-
from dataclasses import dataclass
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
|
|
13
|
-
import yaml
|
|
14
|
-
|
|
15
|
-
from .expert_suggester import ExpertSuggestion
|
|
16
|
-
from .weight_distributor import WeightDistributor
|
|
17
|
-
|
|
18
|
-
logger = logging.getLogger(__name__)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@dataclass
|
|
22
|
-
class GeneratedExpert:
|
|
23
|
-
"""Result of expert generation."""
|
|
24
|
-
|
|
25
|
-
expert_id: str
|
|
26
|
-
expert_name: str
|
|
27
|
-
primary_domain: str
|
|
28
|
-
config_path: Path
|
|
29
|
-
knowledge_base_path: Path
|
|
30
|
-
weight_matrix_updated: bool
|
|
31
|
-
knowledge_files_created: list[str]
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class AutoExpertGenerator:
|
|
35
|
-
"""
|
|
36
|
-
Automatically generates experts from suggestions.
|
|
37
|
-
|
|
38
|
-
Creates expert configuration, knowledge base structure, and updates
|
|
39
|
-
weight matrix automatically.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self, project_root: Path | None = None):
|
|
43
|
-
"""
|
|
44
|
-
Initialize auto-expert generator.
|
|
45
|
-
|
|
46
|
-
Args:
|
|
47
|
-
project_root: Project root directory
|
|
48
|
-
"""
|
|
49
|
-
self.project_root = project_root or Path.cwd()
|
|
50
|
-
self.experts_file = self.project_root / ".tapps-agents" / "experts.yaml"
|
|
51
|
-
self.knowledge_base_dir = self.project_root / ".tapps-agents" / "knowledge"
|
|
52
|
-
|
|
53
|
-
async def generate_expert(
|
|
54
|
-
self,
|
|
55
|
-
suggestion: ExpertSuggestion,
|
|
56
|
-
auto_approve: bool = False,
|
|
57
|
-
) -> GeneratedExpert:
|
|
58
|
-
"""
|
|
59
|
-
Generate expert from suggestion.
|
|
60
|
-
|
|
61
|
-
Args:
|
|
62
|
-
suggestion: ExpertSuggestion to generate
|
|
63
|
-
auto_approve: If True, generate without validation prompts
|
|
64
|
-
|
|
65
|
-
Returns:
|
|
66
|
-
GeneratedExpert with paths and status
|
|
67
|
-
|
|
68
|
-
Raises:
|
|
69
|
-
ValueError: If expert already exists or validation fails
|
|
70
|
-
"""
|
|
71
|
-
# Validate suggestion
|
|
72
|
-
if not auto_approve:
|
|
73
|
-
self._validate_suggestion(suggestion)
|
|
74
|
-
|
|
75
|
-
# Check if expert already exists
|
|
76
|
-
if self._expert_exists(suggestion.expert_id):
|
|
77
|
-
raise ValueError(f"Expert {suggestion.expert_id} already exists")
|
|
78
|
-
|
|
79
|
-
# 1. Create expert config entry
|
|
80
|
-
config_path = self._create_expert_config(suggestion)
|
|
81
|
-
|
|
82
|
-
# 2. Generate knowledge base structure
|
|
83
|
-
knowledge_base_path = self._create_knowledge_base(suggestion)
|
|
84
|
-
|
|
85
|
-
# 3. Populate initial knowledge
|
|
86
|
-
knowledge_files = await self._populate_knowledge(
|
|
87
|
-
suggestion, knowledge_base_path
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
# 4. Update weight matrix
|
|
91
|
-
weight_matrix_updated = await self._update_weight_matrix(suggestion)
|
|
92
|
-
|
|
93
|
-
# 5. Validate configuration
|
|
94
|
-
self._validate_generated_expert(suggestion)
|
|
95
|
-
|
|
96
|
-
return GeneratedExpert(
|
|
97
|
-
expert_id=suggestion.expert_id,
|
|
98
|
-
expert_name=suggestion.expert_name,
|
|
99
|
-
primary_domain=suggestion.primary_domain,
|
|
100
|
-
config_path=config_path,
|
|
101
|
-
knowledge_base_path=knowledge_base_path,
|
|
102
|
-
weight_matrix_updated=weight_matrix_updated,
|
|
103
|
-
knowledge_files_created=knowledge_files,
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
def _validate_suggestion(self, suggestion: ExpertSuggestion) -> None:
|
|
107
|
-
"""Validate expert suggestion before generation."""
|
|
108
|
-
if not suggestion.expert_id:
|
|
109
|
-
raise ValueError("Expert ID is required")
|
|
110
|
-
if not suggestion.expert_name:
|
|
111
|
-
raise ValueError("Expert name is required")
|
|
112
|
-
if not suggestion.primary_domain:
|
|
113
|
-
raise ValueError("Primary domain is required")
|
|
114
|
-
if suggestion.confidence < 0.5:
|
|
115
|
-
raise ValueError(
|
|
116
|
-
f"Confidence too low ({suggestion.confidence:.2f}), minimum 0.5"
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
def _expert_exists(self, expert_id: str) -> bool:
|
|
120
|
-
"""Check if expert already exists."""
|
|
121
|
-
if not self.experts_file.exists():
|
|
122
|
-
return False
|
|
123
|
-
|
|
124
|
-
try:
|
|
125
|
-
with open(self.experts_file, encoding="utf-8") as f:
|
|
126
|
-
data = yaml.safe_load(f)
|
|
127
|
-
experts = data.get("experts", [])
|
|
128
|
-
return any(e.get("expert_id") == expert_id for e in experts)
|
|
129
|
-
except Exception:
|
|
130
|
-
return False
|
|
131
|
-
|
|
132
|
-
def _create_expert_config(self, suggestion: ExpertSuggestion) -> Path:
|
|
133
|
-
"""Create expert configuration entry."""
|
|
134
|
-
# Load existing experts
|
|
135
|
-
experts = []
|
|
136
|
-
if self.experts_file.exists():
|
|
137
|
-
try:
|
|
138
|
-
with open(self.experts_file, encoding="utf-8") as f:
|
|
139
|
-
data = yaml.safe_load(f)
|
|
140
|
-
experts = data.get("experts", [])
|
|
141
|
-
except Exception as e:
|
|
142
|
-
logger.warning(f"Error loading existing experts: {e}")
|
|
143
|
-
|
|
144
|
-
# Create new expert config
|
|
145
|
-
new_expert = {
|
|
146
|
-
"expert_id": suggestion.expert_id,
|
|
147
|
-
"expert_name": suggestion.expert_name,
|
|
148
|
-
"primary_domain": suggestion.primary_domain,
|
|
149
|
-
"rag_enabled": True, # Enable RAG by default for auto-generated experts
|
|
150
|
-
"fine_tuned": False,
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
# Add to list
|
|
154
|
-
experts.append(new_expert)
|
|
155
|
-
|
|
156
|
-
# Write back to file
|
|
157
|
-
self.experts_file.parent.mkdir(parents=True, exist_ok=True)
|
|
158
|
-
with open(self.experts_file, "w", encoding="utf-8") as f:
|
|
159
|
-
yaml.dump({"experts": experts}, f, default_flow_style=False, sort_keys=False)
|
|
160
|
-
|
|
161
|
-
logger.info(f"Created expert config: {suggestion.expert_id}")
|
|
162
|
-
return self.experts_file
|
|
163
|
-
|
|
164
|
-
def _create_knowledge_base(self, suggestion: ExpertSuggestion) -> Path:
|
|
165
|
-
"""Create knowledge base directory structure."""
|
|
166
|
-
domain_dir = self.knowledge_base_dir / suggestion.primary_domain
|
|
167
|
-
domain_dir.mkdir(parents=True, exist_ok=True)
|
|
168
|
-
|
|
169
|
-
logger.info(f"Created knowledge base: {domain_dir}")
|
|
170
|
-
return domain_dir
|
|
171
|
-
|
|
172
|
-
async def _populate_knowledge(
|
|
173
|
-
self, suggestion: ExpertSuggestion, knowledge_base_path: Path
|
|
174
|
-
) -> list[str]:
|
|
175
|
-
"""
|
|
176
|
-
Populate knowledge base with initial content.
|
|
177
|
-
|
|
178
|
-
Sources:
|
|
179
|
-
- Context7 MCP (if available)
|
|
180
|
-
- Web research (2025 patterns)
|
|
181
|
-
- Codebase patterns
|
|
182
|
-
- Expert templates
|
|
183
|
-
"""
|
|
184
|
-
knowledge_files = []
|
|
185
|
-
|
|
186
|
-
# Create knowledge files from suggestions
|
|
187
|
-
for knowledge_file in suggestion.suggested_knowledge:
|
|
188
|
-
file_path = knowledge_base_path / knowledge_file
|
|
189
|
-
if not file_path.exists():
|
|
190
|
-
# Create template knowledge file
|
|
191
|
-
content = self._generate_knowledge_template(
|
|
192
|
-
knowledge_file, suggestion
|
|
193
|
-
)
|
|
194
|
-
file_path.write_text(content, encoding="utf-8")
|
|
195
|
-
knowledge_files.append(knowledge_file)
|
|
196
|
-
logger.info(f"Created knowledge file: {knowledge_file}")
|
|
197
|
-
|
|
198
|
-
# Try to populate from Context7 (if available)
|
|
199
|
-
try:
|
|
200
|
-
context7_files = await self._populate_from_context7(
|
|
201
|
-
suggestion, knowledge_base_path
|
|
202
|
-
)
|
|
203
|
-
knowledge_files.extend(context7_files)
|
|
204
|
-
except Exception as e:
|
|
205
|
-
logger.debug(f"Context7 population failed: {e}")
|
|
206
|
-
|
|
207
|
-
return knowledge_files
|
|
208
|
-
|
|
209
|
-
def _generate_knowledge_template(
|
|
210
|
-
self, filename: str, suggestion: ExpertSuggestion
|
|
211
|
-
) -> str:
|
|
212
|
-
"""Generate template knowledge file content."""
|
|
213
|
-
# Extract topic from filename
|
|
214
|
-
topic = filename.replace(".md", "").replace("-", " ").title()
|
|
215
|
-
|
|
216
|
-
return f"""# {topic}
|
|
217
|
-
|
|
218
|
-
**Domain:** {suggestion.primary_domain}
|
|
219
|
-
**Expert:** {suggestion.expert_name}
|
|
220
|
-
**Auto-generated:** Yes
|
|
221
|
-
|
|
222
|
-
## Overview
|
|
223
|
-
|
|
224
|
-
This knowledge file was auto-generated for the {suggestion.expert_name}.
|
|
225
|
-
It will be populated with domain-specific patterns and best practices.
|
|
226
|
-
|
|
227
|
-
## Patterns
|
|
228
|
-
|
|
229
|
-
*To be populated with actual patterns and examples*
|
|
230
|
-
|
|
231
|
-
## Best Practices
|
|
232
|
-
|
|
233
|
-
*To be populated with best practices*
|
|
234
|
-
|
|
235
|
-
## Common Issues
|
|
236
|
-
|
|
237
|
-
*To be populated with common issues and solutions*
|
|
238
|
-
|
|
239
|
-
## References
|
|
240
|
-
|
|
241
|
-
*To be populated with relevant references*
|
|
242
|
-
"""
|
|
243
|
-
|
|
244
|
-
async def _populate_from_context7(
|
|
245
|
-
self, suggestion: ExpertSuggestion, knowledge_base_path: Path
|
|
246
|
-
) -> list[str]:
|
|
247
|
-
"""
|
|
248
|
-
Populate knowledge from Context7 MCP (if available).
|
|
249
|
-
|
|
250
|
-
Returns:
|
|
251
|
-
List of created knowledge files
|
|
252
|
-
"""
|
|
253
|
-
# This would integrate with Context7 MCP when available
|
|
254
|
-
# For now, return empty list
|
|
255
|
-
return []
|
|
256
|
-
|
|
257
|
-
async def _update_weight_matrix(
|
|
258
|
-
self, suggestion: ExpertSuggestion
|
|
259
|
-
) -> bool:
|
|
260
|
-
"""
|
|
261
|
-
Update weight matrix with new expert.
|
|
262
|
-
|
|
263
|
-
Returns:
|
|
264
|
-
True if matrix was updated, False otherwise
|
|
265
|
-
"""
|
|
266
|
-
# Load domain config
|
|
267
|
-
domains_file = self.project_root / ".tapps-agents" / "domains.md"
|
|
268
|
-
if not domains_file.exists():
|
|
269
|
-
logger.warning("domains.md not found, cannot update weight matrix")
|
|
270
|
-
return False
|
|
271
|
-
|
|
272
|
-
try:
|
|
273
|
-
from .domain_config import DomainConfigParser
|
|
274
|
-
|
|
275
|
-
domain_config = DomainConfigParser.parse(domains_file)
|
|
276
|
-
current_matrix = domain_config.weight_matrix
|
|
277
|
-
|
|
278
|
-
if current_matrix:
|
|
279
|
-
# Recalculate weights with new expert
|
|
280
|
-
new_matrix = WeightDistributor.recalculate_on_domain_add(
|
|
281
|
-
current_matrix,
|
|
282
|
-
suggestion.primary_domain,
|
|
283
|
-
suggestion.expert_id,
|
|
284
|
-
)
|
|
285
|
-
|
|
286
|
-
# Update domains.md with new weight matrix
|
|
287
|
-
# Read current content
|
|
288
|
-
content = domains_file.read_text(encoding="utf-8")
|
|
289
|
-
|
|
290
|
-
# Find and replace weight matrix section
|
|
291
|
-
# This is a simplified approach - in production, would use proper YAML parsing
|
|
292
|
-
import re
|
|
293
|
-
weight_matrix_pattern = r"```yaml\nweight_matrix:.*?```"
|
|
294
|
-
|
|
295
|
-
# Generate new weight matrix YAML
|
|
296
|
-
new_matrix_yaml = WeightDistributor.format_matrix(new_matrix)
|
|
297
|
-
|
|
298
|
-
# If pattern exists, replace it; otherwise append
|
|
299
|
-
if re.search(weight_matrix_pattern, content, re.DOTALL):
|
|
300
|
-
new_content = re.sub(
|
|
301
|
-
weight_matrix_pattern,
|
|
302
|
-
f"```yaml\nweight_matrix:\n{new_matrix_yaml}\n```",
|
|
303
|
-
content,
|
|
304
|
-
flags=re.DOTALL
|
|
305
|
-
)
|
|
306
|
-
else:
|
|
307
|
-
# Append weight matrix to end of file
|
|
308
|
-
new_content = content + f"\n\n```yaml\nweight_matrix:\n{new_matrix_yaml}\n```\n"
|
|
309
|
-
|
|
310
|
-
domains_file.write_text(new_content, encoding="utf-8")
|
|
311
|
-
logger.info(f"Updated weight matrix for expert {suggestion.expert_id}")
|
|
312
|
-
return True
|
|
313
|
-
except Exception as e:
|
|
314
|
-
logger.warning(f"Error updating weight matrix: {e}")
|
|
315
|
-
return False
|
|
316
|
-
|
|
317
|
-
def _validate_generated_expert(self, suggestion: ExpertSuggestion) -> None:
|
|
318
|
-
"""Validate generated expert configuration."""
|
|
319
|
-
# Load and validate expert config
|
|
320
|
-
try:
|
|
321
|
-
from .expert_config import load_expert_configs
|
|
322
|
-
|
|
323
|
-
experts = load_expert_configs(self.experts_file)
|
|
324
|
-
expert = next(
|
|
325
|
-
(e for e in experts if e.expert_id == suggestion.expert_id), None
|
|
326
|
-
)
|
|
327
|
-
if not expert:
|
|
328
|
-
raise ValueError(f"Expert {suggestion.expert_id} not found after generation")
|
|
329
|
-
except Exception as e:
|
|
330
|
-
logger.error(f"Validation failed: {e}")
|
|
331
|
-
raise
|
|
1
|
+
"""
|
|
2
|
+
Auto-Expert Generator
|
|
3
|
+
|
|
4
|
+
Automatically generates experts from suggestions with knowledge base population.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
import yaml
|
|
14
|
+
|
|
15
|
+
from .expert_suggester import ExpertSuggestion
|
|
16
|
+
from .weight_distributor import WeightDistributor
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class GeneratedExpert:
|
|
23
|
+
"""Result of expert generation."""
|
|
24
|
+
|
|
25
|
+
expert_id: str
|
|
26
|
+
expert_name: str
|
|
27
|
+
primary_domain: str
|
|
28
|
+
config_path: Path
|
|
29
|
+
knowledge_base_path: Path
|
|
30
|
+
weight_matrix_updated: bool
|
|
31
|
+
knowledge_files_created: list[str]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class AutoExpertGenerator:
|
|
35
|
+
"""
|
|
36
|
+
Automatically generates experts from suggestions.
|
|
37
|
+
|
|
38
|
+
Creates expert configuration, knowledge base structure, and updates
|
|
39
|
+
weight matrix automatically.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(self, project_root: Path | None = None):
|
|
43
|
+
"""
|
|
44
|
+
Initialize auto-expert generator.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
project_root: Project root directory
|
|
48
|
+
"""
|
|
49
|
+
self.project_root = project_root or Path.cwd()
|
|
50
|
+
self.experts_file = self.project_root / ".tapps-agents" / "experts.yaml"
|
|
51
|
+
self.knowledge_base_dir = self.project_root / ".tapps-agents" / "knowledge"
|
|
52
|
+
|
|
53
|
+
async def generate_expert(
|
|
54
|
+
self,
|
|
55
|
+
suggestion: ExpertSuggestion,
|
|
56
|
+
auto_approve: bool = False,
|
|
57
|
+
) -> GeneratedExpert:
|
|
58
|
+
"""
|
|
59
|
+
Generate expert from suggestion.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
suggestion: ExpertSuggestion to generate
|
|
63
|
+
auto_approve: If True, generate without validation prompts
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
GeneratedExpert with paths and status
|
|
67
|
+
|
|
68
|
+
Raises:
|
|
69
|
+
ValueError: If expert already exists or validation fails
|
|
70
|
+
"""
|
|
71
|
+
# Validate suggestion
|
|
72
|
+
if not auto_approve:
|
|
73
|
+
self._validate_suggestion(suggestion)
|
|
74
|
+
|
|
75
|
+
# Check if expert already exists
|
|
76
|
+
if self._expert_exists(suggestion.expert_id):
|
|
77
|
+
raise ValueError(f"Expert {suggestion.expert_id} already exists")
|
|
78
|
+
|
|
79
|
+
# 1. Create expert config entry
|
|
80
|
+
config_path = self._create_expert_config(suggestion)
|
|
81
|
+
|
|
82
|
+
# 2. Generate knowledge base structure
|
|
83
|
+
knowledge_base_path = self._create_knowledge_base(suggestion)
|
|
84
|
+
|
|
85
|
+
# 3. Populate initial knowledge
|
|
86
|
+
knowledge_files = await self._populate_knowledge(
|
|
87
|
+
suggestion, knowledge_base_path
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
# 4. Update weight matrix
|
|
91
|
+
weight_matrix_updated = await self._update_weight_matrix(suggestion)
|
|
92
|
+
|
|
93
|
+
# 5. Validate configuration
|
|
94
|
+
self._validate_generated_expert(suggestion)
|
|
95
|
+
|
|
96
|
+
return GeneratedExpert(
|
|
97
|
+
expert_id=suggestion.expert_id,
|
|
98
|
+
expert_name=suggestion.expert_name,
|
|
99
|
+
primary_domain=suggestion.primary_domain,
|
|
100
|
+
config_path=config_path,
|
|
101
|
+
knowledge_base_path=knowledge_base_path,
|
|
102
|
+
weight_matrix_updated=weight_matrix_updated,
|
|
103
|
+
knowledge_files_created=knowledge_files,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def _validate_suggestion(self, suggestion: ExpertSuggestion) -> None:
|
|
107
|
+
"""Validate expert suggestion before generation."""
|
|
108
|
+
if not suggestion.expert_id:
|
|
109
|
+
raise ValueError("Expert ID is required")
|
|
110
|
+
if not suggestion.expert_name:
|
|
111
|
+
raise ValueError("Expert name is required")
|
|
112
|
+
if not suggestion.primary_domain:
|
|
113
|
+
raise ValueError("Primary domain is required")
|
|
114
|
+
if suggestion.confidence < 0.5:
|
|
115
|
+
raise ValueError(
|
|
116
|
+
f"Confidence too low ({suggestion.confidence:.2f}), minimum 0.5"
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
def _expert_exists(self, expert_id: str) -> bool:
|
|
120
|
+
"""Check if expert already exists."""
|
|
121
|
+
if not self.experts_file.exists():
|
|
122
|
+
return False
|
|
123
|
+
|
|
124
|
+
try:
|
|
125
|
+
with open(self.experts_file, encoding="utf-8") as f:
|
|
126
|
+
data = yaml.safe_load(f)
|
|
127
|
+
experts = data.get("experts", [])
|
|
128
|
+
return any(e.get("expert_id") == expert_id for e in experts)
|
|
129
|
+
except Exception:
|
|
130
|
+
return False
|
|
131
|
+
|
|
132
|
+
def _create_expert_config(self, suggestion: ExpertSuggestion) -> Path:
|
|
133
|
+
"""Create expert configuration entry."""
|
|
134
|
+
# Load existing experts
|
|
135
|
+
experts = []
|
|
136
|
+
if self.experts_file.exists():
|
|
137
|
+
try:
|
|
138
|
+
with open(self.experts_file, encoding="utf-8") as f:
|
|
139
|
+
data = yaml.safe_load(f)
|
|
140
|
+
experts = data.get("experts", [])
|
|
141
|
+
except Exception as e:
|
|
142
|
+
logger.warning(f"Error loading existing experts: {e}")
|
|
143
|
+
|
|
144
|
+
# Create new expert config
|
|
145
|
+
new_expert = {
|
|
146
|
+
"expert_id": suggestion.expert_id,
|
|
147
|
+
"expert_name": suggestion.expert_name,
|
|
148
|
+
"primary_domain": suggestion.primary_domain,
|
|
149
|
+
"rag_enabled": True, # Enable RAG by default for auto-generated experts
|
|
150
|
+
"fine_tuned": False,
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
# Add to list
|
|
154
|
+
experts.append(new_expert)
|
|
155
|
+
|
|
156
|
+
# Write back to file
|
|
157
|
+
self.experts_file.parent.mkdir(parents=True, exist_ok=True)
|
|
158
|
+
with open(self.experts_file, "w", encoding="utf-8") as f:
|
|
159
|
+
yaml.dump({"experts": experts}, f, default_flow_style=False, sort_keys=False)
|
|
160
|
+
|
|
161
|
+
logger.info(f"Created expert config: {suggestion.expert_id}")
|
|
162
|
+
return self.experts_file
|
|
163
|
+
|
|
164
|
+
def _create_knowledge_base(self, suggestion: ExpertSuggestion) -> Path:
|
|
165
|
+
"""Create knowledge base directory structure."""
|
|
166
|
+
domain_dir = self.knowledge_base_dir / suggestion.primary_domain
|
|
167
|
+
domain_dir.mkdir(parents=True, exist_ok=True)
|
|
168
|
+
|
|
169
|
+
logger.info(f"Created knowledge base: {domain_dir}")
|
|
170
|
+
return domain_dir
|
|
171
|
+
|
|
172
|
+
async def _populate_knowledge(
|
|
173
|
+
self, suggestion: ExpertSuggestion, knowledge_base_path: Path
|
|
174
|
+
) -> list[str]:
|
|
175
|
+
"""
|
|
176
|
+
Populate knowledge base with initial content.
|
|
177
|
+
|
|
178
|
+
Sources:
|
|
179
|
+
- Context7 MCP (if available)
|
|
180
|
+
- Web research (2025 patterns)
|
|
181
|
+
- Codebase patterns
|
|
182
|
+
- Expert templates
|
|
183
|
+
"""
|
|
184
|
+
knowledge_files = []
|
|
185
|
+
|
|
186
|
+
# Create knowledge files from suggestions
|
|
187
|
+
for knowledge_file in suggestion.suggested_knowledge:
|
|
188
|
+
file_path = knowledge_base_path / knowledge_file
|
|
189
|
+
if not file_path.exists():
|
|
190
|
+
# Create template knowledge file
|
|
191
|
+
content = self._generate_knowledge_template(
|
|
192
|
+
knowledge_file, suggestion
|
|
193
|
+
)
|
|
194
|
+
file_path.write_text(content, encoding="utf-8")
|
|
195
|
+
knowledge_files.append(knowledge_file)
|
|
196
|
+
logger.info(f"Created knowledge file: {knowledge_file}")
|
|
197
|
+
|
|
198
|
+
# Try to populate from Context7 (if available)
|
|
199
|
+
try:
|
|
200
|
+
context7_files = await self._populate_from_context7(
|
|
201
|
+
suggestion, knowledge_base_path
|
|
202
|
+
)
|
|
203
|
+
knowledge_files.extend(context7_files)
|
|
204
|
+
except Exception as e:
|
|
205
|
+
logger.debug(f"Context7 population failed: {e}")
|
|
206
|
+
|
|
207
|
+
return knowledge_files
|
|
208
|
+
|
|
209
|
+
def _generate_knowledge_template(
|
|
210
|
+
self, filename: str, suggestion: ExpertSuggestion
|
|
211
|
+
) -> str:
|
|
212
|
+
"""Generate template knowledge file content."""
|
|
213
|
+
# Extract topic from filename
|
|
214
|
+
topic = filename.replace(".md", "").replace("-", " ").title()
|
|
215
|
+
|
|
216
|
+
return f"""# {topic}
|
|
217
|
+
|
|
218
|
+
**Domain:** {suggestion.primary_domain}
|
|
219
|
+
**Expert:** {suggestion.expert_name}
|
|
220
|
+
**Auto-generated:** Yes
|
|
221
|
+
|
|
222
|
+
## Overview
|
|
223
|
+
|
|
224
|
+
This knowledge file was auto-generated for the {suggestion.expert_name}.
|
|
225
|
+
It will be populated with domain-specific patterns and best practices.
|
|
226
|
+
|
|
227
|
+
## Patterns
|
|
228
|
+
|
|
229
|
+
*To be populated with actual patterns and examples*
|
|
230
|
+
|
|
231
|
+
## Best Practices
|
|
232
|
+
|
|
233
|
+
*To be populated with best practices*
|
|
234
|
+
|
|
235
|
+
## Common Issues
|
|
236
|
+
|
|
237
|
+
*To be populated with common issues and solutions*
|
|
238
|
+
|
|
239
|
+
## References
|
|
240
|
+
|
|
241
|
+
*To be populated with relevant references*
|
|
242
|
+
"""
|
|
243
|
+
|
|
244
|
+
async def _populate_from_context7(
|
|
245
|
+
self, suggestion: ExpertSuggestion, knowledge_base_path: Path
|
|
246
|
+
) -> list[str]:
|
|
247
|
+
"""
|
|
248
|
+
Populate knowledge from Context7 MCP (if available).
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
List of created knowledge files
|
|
252
|
+
"""
|
|
253
|
+
# This would integrate with Context7 MCP when available
|
|
254
|
+
# For now, return empty list
|
|
255
|
+
return []
|
|
256
|
+
|
|
257
|
+
async def _update_weight_matrix(
|
|
258
|
+
self, suggestion: ExpertSuggestion
|
|
259
|
+
) -> bool:
|
|
260
|
+
"""
|
|
261
|
+
Update weight matrix with new expert.
|
|
262
|
+
|
|
263
|
+
Returns:
|
|
264
|
+
True if matrix was updated, False otherwise
|
|
265
|
+
"""
|
|
266
|
+
# Load domain config
|
|
267
|
+
domains_file = self.project_root / ".tapps-agents" / "domains.md"
|
|
268
|
+
if not domains_file.exists():
|
|
269
|
+
logger.warning("domains.md not found, cannot update weight matrix")
|
|
270
|
+
return False
|
|
271
|
+
|
|
272
|
+
try:
|
|
273
|
+
from .domain_config import DomainConfigParser
|
|
274
|
+
|
|
275
|
+
domain_config = DomainConfigParser.parse(domains_file)
|
|
276
|
+
current_matrix = domain_config.weight_matrix
|
|
277
|
+
|
|
278
|
+
if current_matrix:
|
|
279
|
+
# Recalculate weights with new expert
|
|
280
|
+
new_matrix = WeightDistributor.recalculate_on_domain_add(
|
|
281
|
+
current_matrix,
|
|
282
|
+
suggestion.primary_domain,
|
|
283
|
+
suggestion.expert_id,
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
# Update domains.md with new weight matrix
|
|
287
|
+
# Read current content
|
|
288
|
+
content = domains_file.read_text(encoding="utf-8")
|
|
289
|
+
|
|
290
|
+
# Find and replace weight matrix section
|
|
291
|
+
# This is a simplified approach - in production, would use proper YAML parsing
|
|
292
|
+
import re
|
|
293
|
+
weight_matrix_pattern = r"```yaml\nweight_matrix:.*?```"
|
|
294
|
+
|
|
295
|
+
# Generate new weight matrix YAML
|
|
296
|
+
new_matrix_yaml = WeightDistributor.format_matrix(new_matrix)
|
|
297
|
+
|
|
298
|
+
# If pattern exists, replace it; otherwise append
|
|
299
|
+
if re.search(weight_matrix_pattern, content, re.DOTALL):
|
|
300
|
+
new_content = re.sub(
|
|
301
|
+
weight_matrix_pattern,
|
|
302
|
+
f"```yaml\nweight_matrix:\n{new_matrix_yaml}\n```",
|
|
303
|
+
content,
|
|
304
|
+
flags=re.DOTALL
|
|
305
|
+
)
|
|
306
|
+
else:
|
|
307
|
+
# Append weight matrix to end of file
|
|
308
|
+
new_content = content + f"\n\n```yaml\nweight_matrix:\n{new_matrix_yaml}\n```\n"
|
|
309
|
+
|
|
310
|
+
domains_file.write_text(new_content, encoding="utf-8")
|
|
311
|
+
logger.info(f"Updated weight matrix for expert {suggestion.expert_id}")
|
|
312
|
+
return True
|
|
313
|
+
except Exception as e:
|
|
314
|
+
logger.warning(f"Error updating weight matrix: {e}")
|
|
315
|
+
return False
|
|
316
|
+
|
|
317
|
+
def _validate_generated_expert(self, suggestion: ExpertSuggestion) -> None:
|
|
318
|
+
"""Validate generated expert configuration."""
|
|
319
|
+
# Load and validate expert config
|
|
320
|
+
try:
|
|
321
|
+
from .expert_config import load_expert_configs
|
|
322
|
+
|
|
323
|
+
experts = load_expert_configs(self.experts_file)
|
|
324
|
+
expert = next(
|
|
325
|
+
(e for e in experts if e.expert_id == suggestion.expert_id), None
|
|
326
|
+
)
|
|
327
|
+
if not expert:
|
|
328
|
+
raise ValueError(f"Expert {suggestion.expert_id} not found after generation")
|
|
329
|
+
except Exception as e:
|
|
330
|
+
logger.error(f"Validation failed: {e}")
|
|
331
|
+
raise
|