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,617 +1,617 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Document Generator for TappsCodingAgents.
|
|
3
|
-
|
|
4
|
-
Provides complete document generation from agent outputs with templates
|
|
5
|
-
and multi-format support.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from dataclasses import dataclass
|
|
9
|
-
from datetime import datetime
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
from jinja2 import Environment, FileSystemLoader, Template
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@dataclass
|
|
17
|
-
class DocumentTemplate:
|
|
18
|
-
"""Document template definition."""
|
|
19
|
-
|
|
20
|
-
name: str
|
|
21
|
-
type: str # "user_story", "architecture", "api_design", etc.
|
|
22
|
-
template_content: str
|
|
23
|
-
default_format: str = "markdown"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class DocumentGenerator:
|
|
27
|
-
"""
|
|
28
|
-
Generates complete documents from agent outputs.
|
|
29
|
-
|
|
30
|
-
Supports:
|
|
31
|
-
- Template-based document generation
|
|
32
|
-
- Multiple output formats (markdown, HTML, etc.)
|
|
33
|
-
- Auto-population from agent outputs
|
|
34
|
-
- Custom template injection
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
def __init__(self, project_root: Path | None = None):
|
|
38
|
-
"""
|
|
39
|
-
Initialize document generator.
|
|
40
|
-
|
|
41
|
-
Args:
|
|
42
|
-
project_root: Optional project root for template discovery
|
|
43
|
-
"""
|
|
44
|
-
self.project_root = project_root or Path.cwd()
|
|
45
|
-
self.templates_dir = self.project_root / ".tapps-agents" / "templates"
|
|
46
|
-
self.templates_dir.mkdir(parents=True, exist_ok=True)
|
|
47
|
-
|
|
48
|
-
# Initialize Jinja2 environment
|
|
49
|
-
self.jinja_env = Environment(
|
|
50
|
-
loader=FileSystemLoader(str(self.templates_dir)),
|
|
51
|
-
autoescape=False,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
# Register default templates
|
|
55
|
-
self._register_default_templates()
|
|
56
|
-
|
|
57
|
-
def _register_default_templates(self) -> None:
|
|
58
|
-
"""Register default document templates."""
|
|
59
|
-
self.templates = {
|
|
60
|
-
"user_story": self._get_user_story_template(),
|
|
61
|
-
"architecture": self._get_architecture_template(),
|
|
62
|
-
"api_design": self._get_api_design_template(),
|
|
63
|
-
"technical_design": self._get_technical_design_template(),
|
|
64
|
-
"plan": self._get_plan_template(),
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
def generate_user_story_doc(
|
|
68
|
-
self,
|
|
69
|
-
story_data: dict[str, Any],
|
|
70
|
-
output_file: str | Path | None = None,
|
|
71
|
-
format: str = "markdown",
|
|
72
|
-
) -> str | Path:
|
|
73
|
-
"""
|
|
74
|
-
Generate complete user story document.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
story_data: User story data from planner agent
|
|
78
|
-
output_file: Optional output file path
|
|
79
|
-
format: Output format (markdown, html)
|
|
80
|
-
|
|
81
|
-
Returns:
|
|
82
|
-
Generated document string, or Path if output_file provided
|
|
83
|
-
"""
|
|
84
|
-
template = self.templates["user_story"]
|
|
85
|
-
content = self._render_template(template, story_data, format)
|
|
86
|
-
|
|
87
|
-
if output_file:
|
|
88
|
-
output_path = Path(output_file)
|
|
89
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
90
|
-
output_path.write_text(content, encoding="utf-8")
|
|
91
|
-
return output_path
|
|
92
|
-
|
|
93
|
-
return content
|
|
94
|
-
|
|
95
|
-
def generate_architecture_doc(
|
|
96
|
-
self,
|
|
97
|
-
architecture_data: dict[str, Any],
|
|
98
|
-
output_file: str | Path | None = None,
|
|
99
|
-
format: str = "markdown",
|
|
100
|
-
) -> str | Path:
|
|
101
|
-
"""
|
|
102
|
-
Generate complete architecture document.
|
|
103
|
-
|
|
104
|
-
Args:
|
|
105
|
-
architecture_data: Architecture data from architect agent
|
|
106
|
-
output_file: Optional output file path
|
|
107
|
-
format: Output format (markdown, html)
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
Generated document string, or Path if output_file provided
|
|
111
|
-
"""
|
|
112
|
-
template = self.templates["architecture"]
|
|
113
|
-
content = self._render_template(template, architecture_data, format)
|
|
114
|
-
|
|
115
|
-
if output_file:
|
|
116
|
-
output_path = Path(output_file)
|
|
117
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
118
|
-
output_path.write_text(content, encoding="utf-8")
|
|
119
|
-
return output_path
|
|
120
|
-
|
|
121
|
-
return content
|
|
122
|
-
|
|
123
|
-
def generate_api_design_doc(
|
|
124
|
-
self,
|
|
125
|
-
api_data: dict[str, Any],
|
|
126
|
-
output_file: str | Path | None = None,
|
|
127
|
-
format: str = "markdown",
|
|
128
|
-
) -> str | Path:
|
|
129
|
-
"""
|
|
130
|
-
Generate complete API design document.
|
|
131
|
-
|
|
132
|
-
Args:
|
|
133
|
-
api_data: API design data from designer agent
|
|
134
|
-
output_file: Optional output file path
|
|
135
|
-
format: Output format (markdown, html)
|
|
136
|
-
|
|
137
|
-
Returns:
|
|
138
|
-
Generated document string, or Path if output_file provided
|
|
139
|
-
"""
|
|
140
|
-
template = self.templates["api_design"]
|
|
141
|
-
content = self._render_template(template, api_data, format)
|
|
142
|
-
|
|
143
|
-
if output_file:
|
|
144
|
-
output_path = Path(output_file)
|
|
145
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
146
|
-
output_path.write_text(content, encoding="utf-8")
|
|
147
|
-
return output_path
|
|
148
|
-
|
|
149
|
-
return content
|
|
150
|
-
|
|
151
|
-
def generate_plan_doc(
|
|
152
|
-
self,
|
|
153
|
-
plan_data: dict[str, Any],
|
|
154
|
-
output_file: str | Path | None = None,
|
|
155
|
-
format: str = "markdown",
|
|
156
|
-
) -> str | Path:
|
|
157
|
-
"""
|
|
158
|
-
Generate complete plan document.
|
|
159
|
-
|
|
160
|
-
Args:
|
|
161
|
-
plan_data: Plan data from planner agent
|
|
162
|
-
output_file: Optional output file path
|
|
163
|
-
format: Output format (markdown, html)
|
|
164
|
-
|
|
165
|
-
Returns:
|
|
166
|
-
Generated document string, or Path if output_file provided
|
|
167
|
-
"""
|
|
168
|
-
template = self.templates["plan"]
|
|
169
|
-
content = self._render_template(template, plan_data, format)
|
|
170
|
-
|
|
171
|
-
if output_file:
|
|
172
|
-
output_path = Path(output_file)
|
|
173
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
174
|
-
output_path.write_text(content, encoding="utf-8")
|
|
175
|
-
return output_path
|
|
176
|
-
|
|
177
|
-
return content
|
|
178
|
-
|
|
179
|
-
def _render_template(
|
|
180
|
-
self, template: str, data: dict[str, Any], format: str
|
|
181
|
-
) -> str:
|
|
182
|
-
"""Render template with data."""
|
|
183
|
-
jinja_template = Template(template)
|
|
184
|
-
rendered = jinja_template.render(
|
|
185
|
-
**data,
|
|
186
|
-
generated_at=datetime.now().isoformat(),
|
|
187
|
-
format=format,
|
|
188
|
-
)
|
|
189
|
-
|
|
190
|
-
# Convert to HTML if requested
|
|
191
|
-
if format == "html":
|
|
192
|
-
return self._markdown_to_html(rendered)
|
|
193
|
-
|
|
194
|
-
return rendered
|
|
195
|
-
|
|
196
|
-
def _markdown_to_html(self, markdown: str) -> str:
|
|
197
|
-
"""Convert markdown to HTML (basic implementation)."""
|
|
198
|
-
# For now, return basic HTML wrapper
|
|
199
|
-
# In production, use markdown library
|
|
200
|
-
try:
|
|
201
|
-
import markdown
|
|
202
|
-
|
|
203
|
-
html_body = markdown.markdown(markdown)
|
|
204
|
-
except ImportError:
|
|
205
|
-
# Fallback: basic HTML
|
|
206
|
-
html_body = f"<pre>{markdown}</pre>"
|
|
207
|
-
|
|
208
|
-
return f"""<!DOCTYPE html>
|
|
209
|
-
<html>
|
|
210
|
-
<head>
|
|
211
|
-
<meta charset="utf-8">
|
|
212
|
-
<title>Generated Document</title>
|
|
213
|
-
<style>
|
|
214
|
-
body {{ font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }}
|
|
215
|
-
h1, h2, h3 {{ color: #333; }}
|
|
216
|
-
code {{ background: #f4f4f4; padding: 2px 4px; border-radius: 3px; }}
|
|
217
|
-
pre {{ background: #f4f4f4; padding: 10px; border-radius: 5px; overflow-x: auto; }}
|
|
218
|
-
</style>
|
|
219
|
-
</head>
|
|
220
|
-
<body>
|
|
221
|
-
{html_body}
|
|
222
|
-
</body>
|
|
223
|
-
</html>"""
|
|
224
|
-
|
|
225
|
-
def _get_user_story_template(self) -> str:
|
|
226
|
-
"""Get user story document template."""
|
|
227
|
-
return """# User Story: {{ title or 'Untitled Story' }}
|
|
228
|
-
|
|
229
|
-
**Status:** {{ status or 'Draft' }}
|
|
230
|
-
**Priority:** {{ priority or 'Medium' }}
|
|
231
|
-
**Story Points:** {{ story_points or 'Not Estimated' }}
|
|
232
|
-
**Epic:** {{ epic or 'None' }}
|
|
233
|
-
|
|
234
|
-
## Description
|
|
235
|
-
|
|
236
|
-
{{ description or 'No description provided.' }}
|
|
237
|
-
|
|
238
|
-
## Acceptance Criteria
|
|
239
|
-
|
|
240
|
-
{% if acceptance_criteria %}
|
|
241
|
-
{% for criterion in acceptance_criteria %}
|
|
242
|
-
- {{ criterion }}
|
|
243
|
-
{% endfor %}
|
|
244
|
-
{% else %}
|
|
245
|
-
- No acceptance criteria defined
|
|
246
|
-
{% endif %}
|
|
247
|
-
|
|
248
|
-
## Technical Notes
|
|
249
|
-
|
|
250
|
-
{% if technical_notes %}
|
|
251
|
-
{{ technical_notes }}
|
|
252
|
-
{% else %}
|
|
253
|
-
No technical notes provided.
|
|
254
|
-
{% endif %}
|
|
255
|
-
|
|
256
|
-
## Dependencies
|
|
257
|
-
|
|
258
|
-
{% if dependencies %}
|
|
259
|
-
{% for dep in dependencies %}
|
|
260
|
-
- {{ dep }}
|
|
261
|
-
{% endfor %}
|
|
262
|
-
{% else %}
|
|
263
|
-
No dependencies identified.
|
|
264
|
-
{% endif %}
|
|
265
|
-
|
|
266
|
-
## Tasks
|
|
267
|
-
|
|
268
|
-
{% if tasks %}
|
|
269
|
-
{% for task in tasks %}
|
|
270
|
-
### Task {{ loop.index }}: {{ task.title or 'Untitled Task' }}
|
|
271
|
-
|
|
272
|
-
**Estimate:** {{ task.estimate or 'Not estimated' }}
|
|
273
|
-
**Status:** {{ task.status or 'Not Started' }}
|
|
274
|
-
|
|
275
|
-
{{ task.description or 'No description' }}
|
|
276
|
-
|
|
277
|
-
{% endfor %}
|
|
278
|
-
{% else %}
|
|
279
|
-
No tasks defined.
|
|
280
|
-
{% endif %}
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
*Generated on {{ generated_at }}*
|
|
284
|
-
"""
|
|
285
|
-
|
|
286
|
-
def _get_architecture_template(self) -> str:
|
|
287
|
-
"""Get architecture document template."""
|
|
288
|
-
return """# Architecture Design: {{ title or 'System Architecture' }}
|
|
289
|
-
|
|
290
|
-
**Version:** {{ version or '1.0' }}
|
|
291
|
-
**Status:** {{ status or 'Draft' }}
|
|
292
|
-
**Date:** {{ generated_at }}
|
|
293
|
-
|
|
294
|
-
## Overview
|
|
295
|
-
|
|
296
|
-
{{ overview or 'No overview provided.' }}
|
|
297
|
-
|
|
298
|
-
## System Components
|
|
299
|
-
|
|
300
|
-
{% if components %}
|
|
301
|
-
{% for component in components %}
|
|
302
|
-
### {{ component.name or 'Unnamed Component' }}
|
|
303
|
-
|
|
304
|
-
**Type:** {{ component.type or 'Unknown' }}
|
|
305
|
-
**Description:** {{ component.description or 'No description' }}
|
|
306
|
-
|
|
307
|
-
**Responsibilities:**
|
|
308
|
-
{% if component.responsibilities %}
|
|
309
|
-
{% for resp in component.responsibilities %}
|
|
310
|
-
- {{ resp }}
|
|
311
|
-
{% endfor %}
|
|
312
|
-
{% else %}
|
|
313
|
-
- No responsibilities defined
|
|
314
|
-
{% endif %}
|
|
315
|
-
|
|
316
|
-
**Interfaces:**
|
|
317
|
-
{% if component.interfaces %}
|
|
318
|
-
{% for interface in component.interfaces %}
|
|
319
|
-
- {{ interface }}
|
|
320
|
-
{% endfor %}
|
|
321
|
-
{% else %}
|
|
322
|
-
- No interfaces defined
|
|
323
|
-
{% endif %}
|
|
324
|
-
|
|
325
|
-
{% endfor %}
|
|
326
|
-
{% else %}
|
|
327
|
-
No components defined.
|
|
328
|
-
{% endif %}
|
|
329
|
-
|
|
330
|
-
## Data Flow
|
|
331
|
-
|
|
332
|
-
{% if data_flow %}
|
|
333
|
-
{{ data_flow }}
|
|
334
|
-
{% else %}
|
|
335
|
-
No data flow diagram provided.
|
|
336
|
-
{% endif %}
|
|
337
|
-
|
|
338
|
-
## Technology Stack
|
|
339
|
-
|
|
340
|
-
{% if technology_stack %}
|
|
341
|
-
{% for tech in technology_stack %}
|
|
342
|
-
- **{{ tech.name }}:** {{ tech.version or 'Not specified' }} - {{ tech.purpose or 'No purpose specified' }}
|
|
343
|
-
{% endfor %}
|
|
344
|
-
{% else %}
|
|
345
|
-
No technology stack defined.
|
|
346
|
-
{% endif %}
|
|
347
|
-
|
|
348
|
-
## Security Considerations
|
|
349
|
-
|
|
350
|
-
{% if security_considerations %}
|
|
351
|
-
{{ security_considerations }}
|
|
352
|
-
{% else %}
|
|
353
|
-
No security considerations documented.
|
|
354
|
-
{% endif %}
|
|
355
|
-
|
|
356
|
-
## Performance Requirements
|
|
357
|
-
|
|
358
|
-
{% if performance_requirements %}
|
|
359
|
-
{{ performance_requirements }}
|
|
360
|
-
{% else %}
|
|
361
|
-
No performance requirements specified.
|
|
362
|
-
{% endif %}
|
|
363
|
-
|
|
364
|
-
## Deployment Architecture
|
|
365
|
-
|
|
366
|
-
{% if deployment %}
|
|
367
|
-
{{ deployment }}
|
|
368
|
-
{% else %}
|
|
369
|
-
No deployment architecture defined.
|
|
370
|
-
{% endif %}
|
|
371
|
-
|
|
372
|
-
---
|
|
373
|
-
*Generated on {{ generated_at }}*
|
|
374
|
-
"""
|
|
375
|
-
|
|
376
|
-
def _get_api_design_template(self) -> str:
|
|
377
|
-
"""Get API design document template."""
|
|
378
|
-
return """# API Design: {{ title or 'API Specification' }}
|
|
379
|
-
|
|
380
|
-
**Version:** {{ version or '1.0' }}
|
|
381
|
-
**Base URL:** {{ base_url or 'Not specified' }}
|
|
382
|
-
**Date:** {{ generated_at }}
|
|
383
|
-
|
|
384
|
-
## Overview
|
|
385
|
-
|
|
386
|
-
{{ overview or 'No overview provided.' }}
|
|
387
|
-
|
|
388
|
-
## Endpoints
|
|
389
|
-
|
|
390
|
-
{% if endpoints %}
|
|
391
|
-
{% for endpoint in endpoints %}
|
|
392
|
-
### {{ endpoint.method or 'GET' }} {{ endpoint.path or '/unknown' }}
|
|
393
|
-
|
|
394
|
-
**Description:** {{ endpoint.description or 'No description' }}
|
|
395
|
-
|
|
396
|
-
**Parameters:**
|
|
397
|
-
{% if endpoint.parameters %}
|
|
398
|
-
{% for param in endpoint.parameters %}
|
|
399
|
-
- **{{ param.name }}** ({{ param.type or 'string' }}): {{ param.description or 'No description' }}
|
|
400
|
-
{% if param.required %}*Required*{% else %}*Optional*{% endif %}
|
|
401
|
-
{% endfor %}
|
|
402
|
-
{% else %}
|
|
403
|
-
No parameters
|
|
404
|
-
{% endif %}
|
|
405
|
-
|
|
406
|
-
**Request Body:**
|
|
407
|
-
{% if endpoint.request_body %}
|
|
408
|
-
```json
|
|
409
|
-
{{ endpoint.request_body }}
|
|
410
|
-
```
|
|
411
|
-
{% else %}
|
|
412
|
-
No request body
|
|
413
|
-
{% endif %}
|
|
414
|
-
|
|
415
|
-
**Response:**
|
|
416
|
-
{% if endpoint.response %}
|
|
417
|
-
```json
|
|
418
|
-
{{ endpoint.response }}
|
|
419
|
-
```
|
|
420
|
-
{% else %}
|
|
421
|
-
No response example
|
|
422
|
-
{% endif %}
|
|
423
|
-
|
|
424
|
-
**Status Codes:**
|
|
425
|
-
{% if endpoint.status_codes %}
|
|
426
|
-
{% for code in endpoint.status_codes %}
|
|
427
|
-
- **{{ code.code }}:** {{ code.description }}
|
|
428
|
-
{% endfor %}
|
|
429
|
-
{% else %}
|
|
430
|
-
- **200:** Success
|
|
431
|
-
{% endif %}
|
|
432
|
-
|
|
433
|
-
{% endfor %}
|
|
434
|
-
{% else %}
|
|
435
|
-
No endpoints defined.
|
|
436
|
-
{% endif %}
|
|
437
|
-
|
|
438
|
-
## Data Models
|
|
439
|
-
|
|
440
|
-
{% if data_models %}
|
|
441
|
-
{% for model in data_models %}
|
|
442
|
-
### {{ model.name or 'Unnamed Model' }}
|
|
443
|
-
|
|
444
|
-
**Type:** {{ model.type or 'object' }}
|
|
445
|
-
|
|
446
|
-
**Properties:**
|
|
447
|
-
{% if model.properties %}
|
|
448
|
-
{% for prop in model.properties %}
|
|
449
|
-
- **{{ prop.name }}** ({{ prop.type or 'string' }}): {{ prop.description or 'No description' }}
|
|
450
|
-
{% if prop.required %}*Required*{% else %}*Optional*{% endif %}
|
|
451
|
-
{% endfor %}
|
|
452
|
-
{% else %}
|
|
453
|
-
No properties defined
|
|
454
|
-
{% endif %}
|
|
455
|
-
|
|
456
|
-
**Example:**
|
|
457
|
-
{% if model.example %}
|
|
458
|
-
```json
|
|
459
|
-
{{ model.example }}
|
|
460
|
-
```
|
|
461
|
-
{% else %}
|
|
462
|
-
No example provided
|
|
463
|
-
{% endif %}
|
|
464
|
-
|
|
465
|
-
{% endfor %}
|
|
466
|
-
{% else %}
|
|
467
|
-
No data models defined.
|
|
468
|
-
{% endif %}
|
|
469
|
-
|
|
470
|
-
## Authentication
|
|
471
|
-
|
|
472
|
-
{% if authentication %}
|
|
473
|
-
{{ authentication }}
|
|
474
|
-
{% else %}
|
|
475
|
-
No authentication method specified.
|
|
476
|
-
{% endif %}
|
|
477
|
-
|
|
478
|
-
## Error Handling
|
|
479
|
-
|
|
480
|
-
{% if error_handling %}
|
|
481
|
-
{{ error_handling }}
|
|
482
|
-
{% else %}
|
|
483
|
-
Standard HTTP status codes apply.
|
|
484
|
-
{% endif %}
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
*Generated on {{ generated_at }}*
|
|
488
|
-
"""
|
|
489
|
-
|
|
490
|
-
def _get_technical_design_template(self) -> str:
|
|
491
|
-
"""Get technical design document template."""
|
|
492
|
-
return """# Technical Design: {{ title or 'Technical Design Document' }}
|
|
493
|
-
|
|
494
|
-
**Version:** {{ version or '1.0' }}
|
|
495
|
-
**Status:** {{ status or 'Draft' }}
|
|
496
|
-
**Date:** {{ generated_at }}
|
|
497
|
-
|
|
498
|
-
## Overview
|
|
499
|
-
|
|
500
|
-
{{ overview or 'No overview provided.' }}
|
|
501
|
-
|
|
502
|
-
## Requirements
|
|
503
|
-
|
|
504
|
-
{% if requirements %}
|
|
505
|
-
{{ requirements }}
|
|
506
|
-
{% else %}
|
|
507
|
-
No requirements documented.
|
|
508
|
-
{% endif %}
|
|
509
|
-
|
|
510
|
-
## Design Decisions
|
|
511
|
-
|
|
512
|
-
{% if design_decisions %}
|
|
513
|
-
{% for decision in design_decisions %}
|
|
514
|
-
### {{ decision.title or 'Design Decision' }}
|
|
515
|
-
|
|
516
|
-
**Context:** {{ decision.context or 'No context provided' }}
|
|
517
|
-
**Decision:** {{ decision.decision or 'No decision documented' }}
|
|
518
|
-
**Rationale:** {{ decision.rationale or 'No rationale provided' }}
|
|
519
|
-
|
|
520
|
-
{% endfor %}
|
|
521
|
-
{% else %}
|
|
522
|
-
No design decisions documented.
|
|
523
|
-
{% endif %}
|
|
524
|
-
|
|
525
|
-
## Implementation Details
|
|
526
|
-
|
|
527
|
-
{% if implementation_details %}
|
|
528
|
-
{{ implementation_details }}
|
|
529
|
-
{% else %}
|
|
530
|
-
No implementation details provided.
|
|
531
|
-
{% endif %}
|
|
532
|
-
|
|
533
|
-
## Testing Strategy
|
|
534
|
-
|
|
535
|
-
{% if testing_strategy %}
|
|
536
|
-
{{ testing_strategy }}
|
|
537
|
-
{% else %}
|
|
538
|
-
No testing strategy defined.
|
|
539
|
-
{% endif %}
|
|
540
|
-
|
|
541
|
-
---
|
|
542
|
-
*Generated on {{ generated_at }}*
|
|
543
|
-
"""
|
|
544
|
-
|
|
545
|
-
def _get_plan_template(self) -> str:
|
|
546
|
-
"""Get plan document template."""
|
|
547
|
-
return """# Development Plan: {{ title or 'Feature Plan' }}
|
|
548
|
-
|
|
549
|
-
**Status:** {{ status or 'Draft' }}
|
|
550
|
-
**Date:** {{ generated_at }}
|
|
551
|
-
|
|
552
|
-
## Overview
|
|
553
|
-
|
|
554
|
-
{{ overview or 'No overview provided.' }}
|
|
555
|
-
|
|
556
|
-
## User Stories
|
|
557
|
-
|
|
558
|
-
{% if user_stories %}
|
|
559
|
-
{% for story in user_stories %}
|
|
560
|
-
### Story {{ loop.index }}: {{ story.title or 'Untitled Story' }}
|
|
561
|
-
|
|
562
|
-
**Priority:** {{ story.priority or 'Medium' }}
|
|
563
|
-
**Story Points:** {{ story.story_points or 'Not Estimated' }}
|
|
564
|
-
|
|
565
|
-
{{ story.description or 'No description' }}
|
|
566
|
-
|
|
567
|
-
**Acceptance Criteria:**
|
|
568
|
-
{% if story.acceptance_criteria %}
|
|
569
|
-
{% for criterion in story.acceptance_criteria %}
|
|
570
|
-
- {{ criterion }}
|
|
571
|
-
{% endfor %}
|
|
572
|
-
{% else %}
|
|
573
|
-
- No acceptance criteria defined
|
|
574
|
-
{% endif %}
|
|
575
|
-
|
|
576
|
-
{% endfor %}
|
|
577
|
-
{% else %}
|
|
578
|
-
No user stories defined.
|
|
579
|
-
{% endif %}
|
|
580
|
-
|
|
581
|
-
## Task Breakdown
|
|
582
|
-
|
|
583
|
-
{% if tasks %}
|
|
584
|
-
{% for task in tasks %}
|
|
585
|
-
### {{ task.title or 'Untitled Task' }}
|
|
586
|
-
|
|
587
|
-
**Estimate:** {{ task.estimate or 'Not estimated' }}
|
|
588
|
-
**Dependencies:** {{ task.dependencies or 'None' }}
|
|
589
|
-
|
|
590
|
-
{{ task.description or 'No description' }}
|
|
591
|
-
|
|
592
|
-
{% endfor %}
|
|
593
|
-
{% else %}
|
|
594
|
-
No tasks defined.
|
|
595
|
-
{% endif %}
|
|
596
|
-
|
|
597
|
-
## Timeline
|
|
598
|
-
|
|
599
|
-
{% if timeline %}
|
|
600
|
-
{{ timeline }}
|
|
601
|
-
{% else %}
|
|
602
|
-
No timeline provided.
|
|
603
|
-
{% endif %}
|
|
604
|
-
|
|
605
|
-
## Dependencies
|
|
606
|
-
|
|
607
|
-
{% if dependencies %}
|
|
608
|
-
{% for dep in dependencies %}
|
|
609
|
-
- {{ dep }}
|
|
610
|
-
{% endfor %}
|
|
611
|
-
{% else %}
|
|
612
|
-
No dependencies identified.
|
|
613
|
-
{% endif %}
|
|
614
|
-
|
|
615
|
-
---
|
|
616
|
-
*Generated on {{ generated_at }}*
|
|
617
|
-
"""
|
|
1
|
+
"""
|
|
2
|
+
Document Generator for TappsCodingAgents.
|
|
3
|
+
|
|
4
|
+
Provides complete document generation from agent outputs with templates
|
|
5
|
+
and multi-format support.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from jinja2 import Environment, FileSystemLoader, Template
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass
|
|
17
|
+
class DocumentTemplate:
|
|
18
|
+
"""Document template definition."""
|
|
19
|
+
|
|
20
|
+
name: str
|
|
21
|
+
type: str # "user_story", "architecture", "api_design", etc.
|
|
22
|
+
template_content: str
|
|
23
|
+
default_format: str = "markdown"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class DocumentGenerator:
|
|
27
|
+
"""
|
|
28
|
+
Generates complete documents from agent outputs.
|
|
29
|
+
|
|
30
|
+
Supports:
|
|
31
|
+
- Template-based document generation
|
|
32
|
+
- Multiple output formats (markdown, HTML, etc.)
|
|
33
|
+
- Auto-population from agent outputs
|
|
34
|
+
- Custom template injection
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(self, project_root: Path | None = None):
|
|
38
|
+
"""
|
|
39
|
+
Initialize document generator.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
project_root: Optional project root for template discovery
|
|
43
|
+
"""
|
|
44
|
+
self.project_root = project_root or Path.cwd()
|
|
45
|
+
self.templates_dir = self.project_root / ".tapps-agents" / "templates"
|
|
46
|
+
self.templates_dir.mkdir(parents=True, exist_ok=True)
|
|
47
|
+
|
|
48
|
+
# Initialize Jinja2 environment
|
|
49
|
+
self.jinja_env = Environment(
|
|
50
|
+
loader=FileSystemLoader(str(self.templates_dir)),
|
|
51
|
+
autoescape=False,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
# Register default templates
|
|
55
|
+
self._register_default_templates()
|
|
56
|
+
|
|
57
|
+
def _register_default_templates(self) -> None:
|
|
58
|
+
"""Register default document templates."""
|
|
59
|
+
self.templates = {
|
|
60
|
+
"user_story": self._get_user_story_template(),
|
|
61
|
+
"architecture": self._get_architecture_template(),
|
|
62
|
+
"api_design": self._get_api_design_template(),
|
|
63
|
+
"technical_design": self._get_technical_design_template(),
|
|
64
|
+
"plan": self._get_plan_template(),
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
def generate_user_story_doc(
|
|
68
|
+
self,
|
|
69
|
+
story_data: dict[str, Any],
|
|
70
|
+
output_file: str | Path | None = None,
|
|
71
|
+
format: str = "markdown",
|
|
72
|
+
) -> str | Path:
|
|
73
|
+
"""
|
|
74
|
+
Generate complete user story document.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
story_data: User story data from planner agent
|
|
78
|
+
output_file: Optional output file path
|
|
79
|
+
format: Output format (markdown, html)
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
Generated document string, or Path if output_file provided
|
|
83
|
+
"""
|
|
84
|
+
template = self.templates["user_story"]
|
|
85
|
+
content = self._render_template(template, story_data, format)
|
|
86
|
+
|
|
87
|
+
if output_file:
|
|
88
|
+
output_path = Path(output_file)
|
|
89
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
90
|
+
output_path.write_text(content, encoding="utf-8")
|
|
91
|
+
return output_path
|
|
92
|
+
|
|
93
|
+
return content
|
|
94
|
+
|
|
95
|
+
def generate_architecture_doc(
|
|
96
|
+
self,
|
|
97
|
+
architecture_data: dict[str, Any],
|
|
98
|
+
output_file: str | Path | None = None,
|
|
99
|
+
format: str = "markdown",
|
|
100
|
+
) -> str | Path:
|
|
101
|
+
"""
|
|
102
|
+
Generate complete architecture document.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
architecture_data: Architecture data from architect agent
|
|
106
|
+
output_file: Optional output file path
|
|
107
|
+
format: Output format (markdown, html)
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
Generated document string, or Path if output_file provided
|
|
111
|
+
"""
|
|
112
|
+
template = self.templates["architecture"]
|
|
113
|
+
content = self._render_template(template, architecture_data, format)
|
|
114
|
+
|
|
115
|
+
if output_file:
|
|
116
|
+
output_path = Path(output_file)
|
|
117
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
118
|
+
output_path.write_text(content, encoding="utf-8")
|
|
119
|
+
return output_path
|
|
120
|
+
|
|
121
|
+
return content
|
|
122
|
+
|
|
123
|
+
def generate_api_design_doc(
|
|
124
|
+
self,
|
|
125
|
+
api_data: dict[str, Any],
|
|
126
|
+
output_file: str | Path | None = None,
|
|
127
|
+
format: str = "markdown",
|
|
128
|
+
) -> str | Path:
|
|
129
|
+
"""
|
|
130
|
+
Generate complete API design document.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
api_data: API design data from designer agent
|
|
134
|
+
output_file: Optional output file path
|
|
135
|
+
format: Output format (markdown, html)
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
Generated document string, or Path if output_file provided
|
|
139
|
+
"""
|
|
140
|
+
template = self.templates["api_design"]
|
|
141
|
+
content = self._render_template(template, api_data, format)
|
|
142
|
+
|
|
143
|
+
if output_file:
|
|
144
|
+
output_path = Path(output_file)
|
|
145
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
146
|
+
output_path.write_text(content, encoding="utf-8")
|
|
147
|
+
return output_path
|
|
148
|
+
|
|
149
|
+
return content
|
|
150
|
+
|
|
151
|
+
def generate_plan_doc(
|
|
152
|
+
self,
|
|
153
|
+
plan_data: dict[str, Any],
|
|
154
|
+
output_file: str | Path | None = None,
|
|
155
|
+
format: str = "markdown",
|
|
156
|
+
) -> str | Path:
|
|
157
|
+
"""
|
|
158
|
+
Generate complete plan document.
|
|
159
|
+
|
|
160
|
+
Args:
|
|
161
|
+
plan_data: Plan data from planner agent
|
|
162
|
+
output_file: Optional output file path
|
|
163
|
+
format: Output format (markdown, html)
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Generated document string, or Path if output_file provided
|
|
167
|
+
"""
|
|
168
|
+
template = self.templates["plan"]
|
|
169
|
+
content = self._render_template(template, plan_data, format)
|
|
170
|
+
|
|
171
|
+
if output_file:
|
|
172
|
+
output_path = Path(output_file)
|
|
173
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
174
|
+
output_path.write_text(content, encoding="utf-8")
|
|
175
|
+
return output_path
|
|
176
|
+
|
|
177
|
+
return content
|
|
178
|
+
|
|
179
|
+
def _render_template(
|
|
180
|
+
self, template: str, data: dict[str, Any], format: str
|
|
181
|
+
) -> str:
|
|
182
|
+
"""Render template with data."""
|
|
183
|
+
jinja_template = Template(template)
|
|
184
|
+
rendered = jinja_template.render(
|
|
185
|
+
**data,
|
|
186
|
+
generated_at=datetime.now().isoformat(),
|
|
187
|
+
format=format,
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
# Convert to HTML if requested
|
|
191
|
+
if format == "html":
|
|
192
|
+
return self._markdown_to_html(rendered)
|
|
193
|
+
|
|
194
|
+
return rendered
|
|
195
|
+
|
|
196
|
+
def _markdown_to_html(self, markdown: str) -> str:
|
|
197
|
+
"""Convert markdown to HTML (basic implementation)."""
|
|
198
|
+
# For now, return basic HTML wrapper
|
|
199
|
+
# In production, use markdown library
|
|
200
|
+
try:
|
|
201
|
+
import markdown
|
|
202
|
+
|
|
203
|
+
html_body = markdown.markdown(markdown)
|
|
204
|
+
except ImportError:
|
|
205
|
+
# Fallback: basic HTML
|
|
206
|
+
html_body = f"<pre>{markdown}</pre>"
|
|
207
|
+
|
|
208
|
+
return f"""<!DOCTYPE html>
|
|
209
|
+
<html>
|
|
210
|
+
<head>
|
|
211
|
+
<meta charset="utf-8">
|
|
212
|
+
<title>Generated Document</title>
|
|
213
|
+
<style>
|
|
214
|
+
body {{ font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }}
|
|
215
|
+
h1, h2, h3 {{ color: #333; }}
|
|
216
|
+
code {{ background: #f4f4f4; padding: 2px 4px; border-radius: 3px; }}
|
|
217
|
+
pre {{ background: #f4f4f4; padding: 10px; border-radius: 5px; overflow-x: auto; }}
|
|
218
|
+
</style>
|
|
219
|
+
</head>
|
|
220
|
+
<body>
|
|
221
|
+
{html_body}
|
|
222
|
+
</body>
|
|
223
|
+
</html>"""
|
|
224
|
+
|
|
225
|
+
def _get_user_story_template(self) -> str:
|
|
226
|
+
"""Get user story document template."""
|
|
227
|
+
return """# User Story: {{ title or 'Untitled Story' }}
|
|
228
|
+
|
|
229
|
+
**Status:** {{ status or 'Draft' }}
|
|
230
|
+
**Priority:** {{ priority or 'Medium' }}
|
|
231
|
+
**Story Points:** {{ story_points or 'Not Estimated' }}
|
|
232
|
+
**Epic:** {{ epic or 'None' }}
|
|
233
|
+
|
|
234
|
+
## Description
|
|
235
|
+
|
|
236
|
+
{{ description or 'No description provided.' }}
|
|
237
|
+
|
|
238
|
+
## Acceptance Criteria
|
|
239
|
+
|
|
240
|
+
{% if acceptance_criteria %}
|
|
241
|
+
{% for criterion in acceptance_criteria %}
|
|
242
|
+
- {{ criterion }}
|
|
243
|
+
{% endfor %}
|
|
244
|
+
{% else %}
|
|
245
|
+
- No acceptance criteria defined
|
|
246
|
+
{% endif %}
|
|
247
|
+
|
|
248
|
+
## Technical Notes
|
|
249
|
+
|
|
250
|
+
{% if technical_notes %}
|
|
251
|
+
{{ technical_notes }}
|
|
252
|
+
{% else %}
|
|
253
|
+
No technical notes provided.
|
|
254
|
+
{% endif %}
|
|
255
|
+
|
|
256
|
+
## Dependencies
|
|
257
|
+
|
|
258
|
+
{% if dependencies %}
|
|
259
|
+
{% for dep in dependencies %}
|
|
260
|
+
- {{ dep }}
|
|
261
|
+
{% endfor %}
|
|
262
|
+
{% else %}
|
|
263
|
+
No dependencies identified.
|
|
264
|
+
{% endif %}
|
|
265
|
+
|
|
266
|
+
## Tasks
|
|
267
|
+
|
|
268
|
+
{% if tasks %}
|
|
269
|
+
{% for task in tasks %}
|
|
270
|
+
### Task {{ loop.index }}: {{ task.title or 'Untitled Task' }}
|
|
271
|
+
|
|
272
|
+
**Estimate:** {{ task.estimate or 'Not estimated' }}
|
|
273
|
+
**Status:** {{ task.status or 'Not Started' }}
|
|
274
|
+
|
|
275
|
+
{{ task.description or 'No description' }}
|
|
276
|
+
|
|
277
|
+
{% endfor %}
|
|
278
|
+
{% else %}
|
|
279
|
+
No tasks defined.
|
|
280
|
+
{% endif %}
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
*Generated on {{ generated_at }}*
|
|
284
|
+
"""
|
|
285
|
+
|
|
286
|
+
def _get_architecture_template(self) -> str:
|
|
287
|
+
"""Get architecture document template."""
|
|
288
|
+
return """# Architecture Design: {{ title or 'System Architecture' }}
|
|
289
|
+
|
|
290
|
+
**Version:** {{ version or '1.0' }}
|
|
291
|
+
**Status:** {{ status or 'Draft' }}
|
|
292
|
+
**Date:** {{ generated_at }}
|
|
293
|
+
|
|
294
|
+
## Overview
|
|
295
|
+
|
|
296
|
+
{{ overview or 'No overview provided.' }}
|
|
297
|
+
|
|
298
|
+
## System Components
|
|
299
|
+
|
|
300
|
+
{% if components %}
|
|
301
|
+
{% for component in components %}
|
|
302
|
+
### {{ component.name or 'Unnamed Component' }}
|
|
303
|
+
|
|
304
|
+
**Type:** {{ component.type or 'Unknown' }}
|
|
305
|
+
**Description:** {{ component.description or 'No description' }}
|
|
306
|
+
|
|
307
|
+
**Responsibilities:**
|
|
308
|
+
{% if component.responsibilities %}
|
|
309
|
+
{% for resp in component.responsibilities %}
|
|
310
|
+
- {{ resp }}
|
|
311
|
+
{% endfor %}
|
|
312
|
+
{% else %}
|
|
313
|
+
- No responsibilities defined
|
|
314
|
+
{% endif %}
|
|
315
|
+
|
|
316
|
+
**Interfaces:**
|
|
317
|
+
{% if component.interfaces %}
|
|
318
|
+
{% for interface in component.interfaces %}
|
|
319
|
+
- {{ interface }}
|
|
320
|
+
{% endfor %}
|
|
321
|
+
{% else %}
|
|
322
|
+
- No interfaces defined
|
|
323
|
+
{% endif %}
|
|
324
|
+
|
|
325
|
+
{% endfor %}
|
|
326
|
+
{% else %}
|
|
327
|
+
No components defined.
|
|
328
|
+
{% endif %}
|
|
329
|
+
|
|
330
|
+
## Data Flow
|
|
331
|
+
|
|
332
|
+
{% if data_flow %}
|
|
333
|
+
{{ data_flow }}
|
|
334
|
+
{% else %}
|
|
335
|
+
No data flow diagram provided.
|
|
336
|
+
{% endif %}
|
|
337
|
+
|
|
338
|
+
## Technology Stack
|
|
339
|
+
|
|
340
|
+
{% if technology_stack %}
|
|
341
|
+
{% for tech in technology_stack %}
|
|
342
|
+
- **{{ tech.name }}:** {{ tech.version or 'Not specified' }} - {{ tech.purpose or 'No purpose specified' }}
|
|
343
|
+
{% endfor %}
|
|
344
|
+
{% else %}
|
|
345
|
+
No technology stack defined.
|
|
346
|
+
{% endif %}
|
|
347
|
+
|
|
348
|
+
## Security Considerations
|
|
349
|
+
|
|
350
|
+
{% if security_considerations %}
|
|
351
|
+
{{ security_considerations }}
|
|
352
|
+
{% else %}
|
|
353
|
+
No security considerations documented.
|
|
354
|
+
{% endif %}
|
|
355
|
+
|
|
356
|
+
## Performance Requirements
|
|
357
|
+
|
|
358
|
+
{% if performance_requirements %}
|
|
359
|
+
{{ performance_requirements }}
|
|
360
|
+
{% else %}
|
|
361
|
+
No performance requirements specified.
|
|
362
|
+
{% endif %}
|
|
363
|
+
|
|
364
|
+
## Deployment Architecture
|
|
365
|
+
|
|
366
|
+
{% if deployment %}
|
|
367
|
+
{{ deployment }}
|
|
368
|
+
{% else %}
|
|
369
|
+
No deployment architecture defined.
|
|
370
|
+
{% endif %}
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
*Generated on {{ generated_at }}*
|
|
374
|
+
"""
|
|
375
|
+
|
|
376
|
+
def _get_api_design_template(self) -> str:
|
|
377
|
+
"""Get API design document template."""
|
|
378
|
+
return """# API Design: {{ title or 'API Specification' }}
|
|
379
|
+
|
|
380
|
+
**Version:** {{ version or '1.0' }}
|
|
381
|
+
**Base URL:** {{ base_url or 'Not specified' }}
|
|
382
|
+
**Date:** {{ generated_at }}
|
|
383
|
+
|
|
384
|
+
## Overview
|
|
385
|
+
|
|
386
|
+
{{ overview or 'No overview provided.' }}
|
|
387
|
+
|
|
388
|
+
## Endpoints
|
|
389
|
+
|
|
390
|
+
{% if endpoints %}
|
|
391
|
+
{% for endpoint in endpoints %}
|
|
392
|
+
### {{ endpoint.method or 'GET' }} {{ endpoint.path or '/unknown' }}
|
|
393
|
+
|
|
394
|
+
**Description:** {{ endpoint.description or 'No description' }}
|
|
395
|
+
|
|
396
|
+
**Parameters:**
|
|
397
|
+
{% if endpoint.parameters %}
|
|
398
|
+
{% for param in endpoint.parameters %}
|
|
399
|
+
- **{{ param.name }}** ({{ param.type or 'string' }}): {{ param.description or 'No description' }}
|
|
400
|
+
{% if param.required %}*Required*{% else %}*Optional*{% endif %}
|
|
401
|
+
{% endfor %}
|
|
402
|
+
{% else %}
|
|
403
|
+
No parameters
|
|
404
|
+
{% endif %}
|
|
405
|
+
|
|
406
|
+
**Request Body:**
|
|
407
|
+
{% if endpoint.request_body %}
|
|
408
|
+
```json
|
|
409
|
+
{{ endpoint.request_body }}
|
|
410
|
+
```
|
|
411
|
+
{% else %}
|
|
412
|
+
No request body
|
|
413
|
+
{% endif %}
|
|
414
|
+
|
|
415
|
+
**Response:**
|
|
416
|
+
{% if endpoint.response %}
|
|
417
|
+
```json
|
|
418
|
+
{{ endpoint.response }}
|
|
419
|
+
```
|
|
420
|
+
{% else %}
|
|
421
|
+
No response example
|
|
422
|
+
{% endif %}
|
|
423
|
+
|
|
424
|
+
**Status Codes:**
|
|
425
|
+
{% if endpoint.status_codes %}
|
|
426
|
+
{% for code in endpoint.status_codes %}
|
|
427
|
+
- **{{ code.code }}:** {{ code.description }}
|
|
428
|
+
{% endfor %}
|
|
429
|
+
{% else %}
|
|
430
|
+
- **200:** Success
|
|
431
|
+
{% endif %}
|
|
432
|
+
|
|
433
|
+
{% endfor %}
|
|
434
|
+
{% else %}
|
|
435
|
+
No endpoints defined.
|
|
436
|
+
{% endif %}
|
|
437
|
+
|
|
438
|
+
## Data Models
|
|
439
|
+
|
|
440
|
+
{% if data_models %}
|
|
441
|
+
{% for model in data_models %}
|
|
442
|
+
### {{ model.name or 'Unnamed Model' }}
|
|
443
|
+
|
|
444
|
+
**Type:** {{ model.type or 'object' }}
|
|
445
|
+
|
|
446
|
+
**Properties:**
|
|
447
|
+
{% if model.properties %}
|
|
448
|
+
{% for prop in model.properties %}
|
|
449
|
+
- **{{ prop.name }}** ({{ prop.type or 'string' }}): {{ prop.description or 'No description' }}
|
|
450
|
+
{% if prop.required %}*Required*{% else %}*Optional*{% endif %}
|
|
451
|
+
{% endfor %}
|
|
452
|
+
{% else %}
|
|
453
|
+
No properties defined
|
|
454
|
+
{% endif %}
|
|
455
|
+
|
|
456
|
+
**Example:**
|
|
457
|
+
{% if model.example %}
|
|
458
|
+
```json
|
|
459
|
+
{{ model.example }}
|
|
460
|
+
```
|
|
461
|
+
{% else %}
|
|
462
|
+
No example provided
|
|
463
|
+
{% endif %}
|
|
464
|
+
|
|
465
|
+
{% endfor %}
|
|
466
|
+
{% else %}
|
|
467
|
+
No data models defined.
|
|
468
|
+
{% endif %}
|
|
469
|
+
|
|
470
|
+
## Authentication
|
|
471
|
+
|
|
472
|
+
{% if authentication %}
|
|
473
|
+
{{ authentication }}
|
|
474
|
+
{% else %}
|
|
475
|
+
No authentication method specified.
|
|
476
|
+
{% endif %}
|
|
477
|
+
|
|
478
|
+
## Error Handling
|
|
479
|
+
|
|
480
|
+
{% if error_handling %}
|
|
481
|
+
{{ error_handling }}
|
|
482
|
+
{% else %}
|
|
483
|
+
Standard HTTP status codes apply.
|
|
484
|
+
{% endif %}
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
*Generated on {{ generated_at }}*
|
|
488
|
+
"""
|
|
489
|
+
|
|
490
|
+
def _get_technical_design_template(self) -> str:
|
|
491
|
+
"""Get technical design document template."""
|
|
492
|
+
return """# Technical Design: {{ title or 'Technical Design Document' }}
|
|
493
|
+
|
|
494
|
+
**Version:** {{ version or '1.0' }}
|
|
495
|
+
**Status:** {{ status or 'Draft' }}
|
|
496
|
+
**Date:** {{ generated_at }}
|
|
497
|
+
|
|
498
|
+
## Overview
|
|
499
|
+
|
|
500
|
+
{{ overview or 'No overview provided.' }}
|
|
501
|
+
|
|
502
|
+
## Requirements
|
|
503
|
+
|
|
504
|
+
{% if requirements %}
|
|
505
|
+
{{ requirements }}
|
|
506
|
+
{% else %}
|
|
507
|
+
No requirements documented.
|
|
508
|
+
{% endif %}
|
|
509
|
+
|
|
510
|
+
## Design Decisions
|
|
511
|
+
|
|
512
|
+
{% if design_decisions %}
|
|
513
|
+
{% for decision in design_decisions %}
|
|
514
|
+
### {{ decision.title or 'Design Decision' }}
|
|
515
|
+
|
|
516
|
+
**Context:** {{ decision.context or 'No context provided' }}
|
|
517
|
+
**Decision:** {{ decision.decision or 'No decision documented' }}
|
|
518
|
+
**Rationale:** {{ decision.rationale or 'No rationale provided' }}
|
|
519
|
+
|
|
520
|
+
{% endfor %}
|
|
521
|
+
{% else %}
|
|
522
|
+
No design decisions documented.
|
|
523
|
+
{% endif %}
|
|
524
|
+
|
|
525
|
+
## Implementation Details
|
|
526
|
+
|
|
527
|
+
{% if implementation_details %}
|
|
528
|
+
{{ implementation_details }}
|
|
529
|
+
{% else %}
|
|
530
|
+
No implementation details provided.
|
|
531
|
+
{% endif %}
|
|
532
|
+
|
|
533
|
+
## Testing Strategy
|
|
534
|
+
|
|
535
|
+
{% if testing_strategy %}
|
|
536
|
+
{{ testing_strategy }}
|
|
537
|
+
{% else %}
|
|
538
|
+
No testing strategy defined.
|
|
539
|
+
{% endif %}
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
*Generated on {{ generated_at }}*
|
|
543
|
+
"""
|
|
544
|
+
|
|
545
|
+
def _get_plan_template(self) -> str:
|
|
546
|
+
"""Get plan document template."""
|
|
547
|
+
return """# Development Plan: {{ title or 'Feature Plan' }}
|
|
548
|
+
|
|
549
|
+
**Status:** {{ status or 'Draft' }}
|
|
550
|
+
**Date:** {{ generated_at }}
|
|
551
|
+
|
|
552
|
+
## Overview
|
|
553
|
+
|
|
554
|
+
{{ overview or 'No overview provided.' }}
|
|
555
|
+
|
|
556
|
+
## User Stories
|
|
557
|
+
|
|
558
|
+
{% if user_stories %}
|
|
559
|
+
{% for story in user_stories %}
|
|
560
|
+
### Story {{ loop.index }}: {{ story.title or 'Untitled Story' }}
|
|
561
|
+
|
|
562
|
+
**Priority:** {{ story.priority or 'Medium' }}
|
|
563
|
+
**Story Points:** {{ story.story_points or 'Not Estimated' }}
|
|
564
|
+
|
|
565
|
+
{{ story.description or 'No description' }}
|
|
566
|
+
|
|
567
|
+
**Acceptance Criteria:**
|
|
568
|
+
{% if story.acceptance_criteria %}
|
|
569
|
+
{% for criterion in story.acceptance_criteria %}
|
|
570
|
+
- {{ criterion }}
|
|
571
|
+
{% endfor %}
|
|
572
|
+
{% else %}
|
|
573
|
+
- No acceptance criteria defined
|
|
574
|
+
{% endif %}
|
|
575
|
+
|
|
576
|
+
{% endfor %}
|
|
577
|
+
{% else %}
|
|
578
|
+
No user stories defined.
|
|
579
|
+
{% endif %}
|
|
580
|
+
|
|
581
|
+
## Task Breakdown
|
|
582
|
+
|
|
583
|
+
{% if tasks %}
|
|
584
|
+
{% for task in tasks %}
|
|
585
|
+
### {{ task.title or 'Untitled Task' }}
|
|
586
|
+
|
|
587
|
+
**Estimate:** {{ task.estimate or 'Not estimated' }}
|
|
588
|
+
**Dependencies:** {{ task.dependencies or 'None' }}
|
|
589
|
+
|
|
590
|
+
{{ task.description or 'No description' }}
|
|
591
|
+
|
|
592
|
+
{% endfor %}
|
|
593
|
+
{% else %}
|
|
594
|
+
No tasks defined.
|
|
595
|
+
{% endif %}
|
|
596
|
+
|
|
597
|
+
## Timeline
|
|
598
|
+
|
|
599
|
+
{% if timeline %}
|
|
600
|
+
{{ timeline }}
|
|
601
|
+
{% else %}
|
|
602
|
+
No timeline provided.
|
|
603
|
+
{% endif %}
|
|
604
|
+
|
|
605
|
+
## Dependencies
|
|
606
|
+
|
|
607
|
+
{% if dependencies %}
|
|
608
|
+
{% for dep in dependencies %}
|
|
609
|
+
- {{ dep }}
|
|
610
|
+
{% endfor %}
|
|
611
|
+
{% else %}
|
|
612
|
+
No dependencies identified.
|
|
613
|
+
{% endif %}
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
*Generated on {{ generated_at }}*
|
|
617
|
+
"""
|