moai-adk 0.25.4__py3-none-any.whl → 0.32.8__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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +2 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +56 -125
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1555 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +672 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +490 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +128 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/auto_spec_config.py +5 -11
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +725 -112
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -28
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config_resolver.py +485 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +78 -9
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +8 -17
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +6 -10
- moai_adk/core/migration/version_migrator.py +3 -3
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +135 -23
- moai_adk/core/project/phase_executor.py +54 -81
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +9 -27
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +73 -148
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +31 -100
- moai_adk/core/spec/ears_template_engine.py +351 -286
- moai_adk/core/spec/quality_validator.py +35 -69
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +45 -20
- moai_adk/core/template/config.py +112 -39
- moai_adk/core/template/merger.py +11 -19
- moai_adk/core/template/processor.py +253 -149
- moai_adk/core/template_engine.py +73 -40
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +4 -12
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +13 -4
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +51 -15
- moai_adk/statusline/renderer.py +104 -48
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +103 -41
- moai_adk/templates/.git-hooks/pre-push +116 -21
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +184 -44
- moai_adk/templates/.mcp.json +7 -9
- moai_adk/templates/.moai/cache/personalization.json +10 -0
- moai_adk/templates/.moai/config/config.yaml +344 -0
- moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
- moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
- moai_adk/templates/.moai/config/presets/team.yaml +33 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +382 -501
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +16 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.32.8.dist-info/METADATA +2478 -0
- moai_adk-0.32.8.dist-info/RECORD +396 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Multi-Format Output Generation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Comprehensive documentation generation supporting HTML sites, PDF documents, static sites, and various output formats with responsive design and professional styling.
|
|
5
|
+
|
|
6
|
+
## Quick Implementation
|
|
7
|
+
|
|
8
|
+
```python
|
|
9
|
+
from jinja2 import Template
|
|
10
|
+
import markdown
|
|
11
|
+
|
|
12
|
+
class HTMLDocGenerator:
|
|
13
|
+
def __init__(self):
|
|
14
|
+
self.templates = self.load_templates()
|
|
15
|
+
|
|
16
|
+
def generate_html_site(self, documentation: Dict, output_dir: str):
|
|
17
|
+
"""Generate a complete HTML documentation site."""
|
|
18
|
+
|
|
19
|
+
# Generate index page
|
|
20
|
+
index_html = self.generate_index_page(documentation)
|
|
21
|
+
self.write_file(output_dir, "index.html", index_html)
|
|
22
|
+
|
|
23
|
+
# Generate API reference pages
|
|
24
|
+
self.generate_api_pages(documentation, output_dir)
|
|
25
|
+
|
|
26
|
+
# Generate tutorial pages
|
|
27
|
+
self.generate_tutorial_pages(documentation, output_dir)
|
|
28
|
+
|
|
29
|
+
# Generate CSS and assets
|
|
30
|
+
self.generate_assets(output_dir)
|
|
31
|
+
|
|
32
|
+
def generate_index_page(self, documentation: Dict) -> str:
|
|
33
|
+
"""Generate the main index page."""
|
|
34
|
+
|
|
35
|
+
template = Template("""
|
|
36
|
+
<!DOCTYPE html>
|
|
37
|
+
<html lang="en">
|
|
38
|
+
<head>
|
|
39
|
+
<meta charset="UTF-8">
|
|
40
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
41
|
+
<title>{{ title }}</title>
|
|
42
|
+
<link rel="stylesheet" href="assets/style.css">
|
|
43
|
+
</head>
|
|
44
|
+
<body>
|
|
45
|
+
<nav class="sidebar">
|
|
46
|
+
<div class="logo">
|
|
47
|
+
<h2>{{ title }}</h2>
|
|
48
|
+
</div>
|
|
49
|
+
<ul class="nav-menu">
|
|
50
|
+
<li><a href="index.html" class="active">Home</a></li>
|
|
51
|
+
<li><a href="api/index.html">API Reference</a></li>
|
|
52
|
+
<li><a href="tutorials/index.html">Tutorials</a></li>
|
|
53
|
+
<li><a href="cookbook.html">Cookbook</a></li>
|
|
54
|
+
</ul>
|
|
55
|
+
</nav>
|
|
56
|
+
|
|
57
|
+
<main class="content">
|
|
58
|
+
<section class="hero">
|
|
59
|
+
<h1>{{ title }}</h1>
|
|
60
|
+
<p>{{ description }}</p>
|
|
61
|
+
<div class="cta-buttons">
|
|
62
|
+
<a href="tutorials/getting-started.html" class="btn primary">Get Started</a>
|
|
63
|
+
<a href="api/index.html" class="btn secondary">API Docs</a>
|
|
64
|
+
</div>
|
|
65
|
+
</section>
|
|
66
|
+
|
|
67
|
+
<section class="features">
|
|
68
|
+
<h2>Key Features</h2>
|
|
69
|
+
<div class="feature-grid">
|
|
70
|
+
{% for feature in features %}
|
|
71
|
+
<div class="feature-card">
|
|
72
|
+
<h3>{{ feature.name }}</h3>
|
|
73
|
+
<p>{{ feature.description }}</p>
|
|
74
|
+
</div>
|
|
75
|
+
{% endfor %}
|
|
76
|
+
</div>
|
|
77
|
+
</section>
|
|
78
|
+
|
|
79
|
+
<section class="quick-start">
|
|
80
|
+
<h2>Quick Start</h2>
|
|
81
|
+
<pre><code>{{ quick_start_example }}</code></pre>
|
|
82
|
+
</section>
|
|
83
|
+
</main>
|
|
84
|
+
|
|
85
|
+
<script src="assets/script.js"></script>
|
|
86
|
+
</body>
|
|
87
|
+
</html>
|
|
88
|
+
""")
|
|
89
|
+
|
|
90
|
+
return template.render(
|
|
91
|
+
title=documentation.get("title", "API Documentation"),
|
|
92
|
+
description=documentation.get("description", ""),
|
|
93
|
+
features=documentation.get("features", []),
|
|
94
|
+
quick_start_example=documentation.get("quick_start", "")
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
def generate_pdf_documentation(self, markdown_content: str, output_path: str):
|
|
98
|
+
"""Generate PDF from Markdown content."""
|
|
99
|
+
try:
|
|
100
|
+
import weasyprint
|
|
101
|
+
|
|
102
|
+
# Convert Markdown to HTML
|
|
103
|
+
html_content = markdown.markdown(
|
|
104
|
+
markdown_content,
|
|
105
|
+
extensions=['tables', 'fenced_code', 'toc']
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
# Add CSS styling
|
|
109
|
+
styled_html = f"""
|
|
110
|
+
<!DOCTYPE html>
|
|
111
|
+
<html>
|
|
112
|
+
<head>
|
|
113
|
+
<style>
|
|
114
|
+
body {{ font-family: Arial, sans-serif; line-height: 1.6; margin: 40px; }}
|
|
115
|
+
h1 {{ color: #333; border-bottom: 2px solid #333; }}
|
|
116
|
+
h2 {{ color: #666; }}
|
|
117
|
+
code {{ background: #f4f4f4; padding: 2px 4px; border-radius: 3px; }}
|
|
118
|
+
pre {{ background: #f4f4f4; padding: 10px; border-radius: 5px; overflow-x: auto; }}
|
|
119
|
+
table {{ border-collapse: collapse; width: 100%; }}
|
|
120
|
+
th, td {{ border: 1px solid #ddd; padding: 8px; text-align: left; }}
|
|
121
|
+
</style>
|
|
122
|
+
</head>
|
|
123
|
+
<body>
|
|
124
|
+
{html_content}
|
|
125
|
+
</body>
|
|
126
|
+
</html>
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
# Generate PDF
|
|
130
|
+
weasyprint.HTML(string=styled_html).write_pdf(output_path)
|
|
131
|
+
|
|
132
|
+
except ImportError:
|
|
133
|
+
raise ImportError("weasyprint is required for PDF generation. Install with: pip install weasyprint")
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Output Formats
|
|
137
|
+
|
|
138
|
+
### 1. HTML Documentation Sites
|
|
139
|
+
- Responsive design with sidebar navigation
|
|
140
|
+
- Interactive code examples
|
|
141
|
+
- Search functionality
|
|
142
|
+
- Dark/light theme support
|
|
143
|
+
- Mobile-optimized layouts
|
|
144
|
+
|
|
145
|
+
### 2. PDF Documentation
|
|
146
|
+
- Professional print-ready formatting
|
|
147
|
+
- Table of contents generation
|
|
148
|
+
- Code syntax highlighting
|
|
149
|
+
- Header/footer customization
|
|
150
|
+
- Page numbering and bookmarks
|
|
151
|
+
|
|
152
|
+
### 3. Static Site Generation
|
|
153
|
+
- Jekyll/Hugo compatible output
|
|
154
|
+
- SEO optimization
|
|
155
|
+
- Fast loading times
|
|
156
|
+
- GitHub Pages deployment
|
|
157
|
+
- Custom domain support
|
|
158
|
+
|
|
159
|
+
### 4. Markdown Variants
|
|
160
|
+
- GitHub Flavored Markdown
|
|
161
|
+
- CommonMark compliance
|
|
162
|
+
- Extension support (tables, footnotes)
|
|
163
|
+
- Cross-reference linking
|
|
164
|
+
- Image optimization
|
|
165
|
+
|
|
166
|
+
## Template System
|
|
167
|
+
- Jinja2-based templating
|
|
168
|
+
- Customizable themes
|
|
169
|
+
- Component-based design
|
|
170
|
+
- Asset management
|
|
171
|
+
- Multi-language support
|
|
172
|
+
|
|
173
|
+
## Integration Points
|
|
174
|
+
- Documentation platforms (GitBook, Docusaurus)
|
|
175
|
+
- CI/CD pipelines
|
|
176
|
+
- Static site hosting
|
|
177
|
+
- Content management systems
|
|
178
|
+
- Version control workflows
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# User Guide Generation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Automated creation of comprehensive user guides, tutorials, getting started documentation, and cookbooks with AI-powered content generation.
|
|
5
|
+
|
|
6
|
+
## Quick Implementation
|
|
7
|
+
|
|
8
|
+
```python
|
|
9
|
+
class UserGuideGenerator:
|
|
10
|
+
def __init__(self, ai_client=None):
|
|
11
|
+
self.ai_client = ai_client
|
|
12
|
+
|
|
13
|
+
def generate_getting_started_guide(self, project_info: Dict) -> str:
|
|
14
|
+
"""Generate comprehensive getting started guide."""
|
|
15
|
+
|
|
16
|
+
guide_structure = [
|
|
17
|
+
"# Getting Started",
|
|
18
|
+
"",
|
|
19
|
+
"## Prerequisites",
|
|
20
|
+
self.generate_prerequisites_section(project_info),
|
|
21
|
+
"",
|
|
22
|
+
"## Installation",
|
|
23
|
+
self.generate_installation_section(project_info),
|
|
24
|
+
"",
|
|
25
|
+
"## Quick Start",
|
|
26
|
+
self.generate_quick_start_section(project_info),
|
|
27
|
+
"",
|
|
28
|
+
"## Basic Usage",
|
|
29
|
+
self.generate_basic_usage_section(project_info),
|
|
30
|
+
"",
|
|
31
|
+
"## Next Steps",
|
|
32
|
+
self.generate_next_steps_section(project_info)
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
return "\n".join(guide_structure)
|
|
36
|
+
|
|
37
|
+
def generate_tutorial_series(self, features: List[Dict]) -> List[str]:
|
|
38
|
+
"""Generate a series of tutorials for different features."""
|
|
39
|
+
tutorials = []
|
|
40
|
+
|
|
41
|
+
for feature in features:
|
|
42
|
+
tutorial = self.generate_feature_tutorial(feature)
|
|
43
|
+
tutorials.append(tutorial)
|
|
44
|
+
|
|
45
|
+
return tutorials
|
|
46
|
+
|
|
47
|
+
def generate_feature_tutorial(self, feature: Dict) -> str:
|
|
48
|
+
"""Generate a single tutorial for a specific feature."""
|
|
49
|
+
|
|
50
|
+
if self.ai_client:
|
|
51
|
+
prompt = f"""
|
|
52
|
+
Create a step-by-step tutorial for this feature:
|
|
53
|
+
|
|
54
|
+
Feature Name: {feature['name']}
|
|
55
|
+
Description: {feature['description']}
|
|
56
|
+
Key Functions: {', '.join(feature.get('functions', []))}
|
|
57
|
+
Example Usage: {feature.get('example', '')}
|
|
58
|
+
|
|
59
|
+
Please include:
|
|
60
|
+
1. Clear introduction explaining what the feature does
|
|
61
|
+
2. Prerequisites and setup requirements
|
|
62
|
+
3. Step-by-step implementation guide
|
|
63
|
+
4. Complete code example
|
|
64
|
+
5. Common use cases and variations
|
|
65
|
+
6. Troubleshooting tips
|
|
66
|
+
7. Related features and next steps
|
|
67
|
+
|
|
68
|
+
Format as a comprehensive tutorial with clear sections and code blocks.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
response = self.ai_client.generate_content(prompt)
|
|
72
|
+
return response["content"]
|
|
73
|
+
|
|
74
|
+
else:
|
|
75
|
+
return self.generate_basic_tutorial(feature)
|
|
76
|
+
|
|
77
|
+
def generate_cookbook(self, use_cases: List[Dict]) -> str:
|
|
78
|
+
"""Generate a cookbook of common patterns and solutions."""
|
|
79
|
+
|
|
80
|
+
cookbook_content = ["# Cookbook", "", "## Common Patterns and Solutions"]
|
|
81
|
+
|
|
82
|
+
for use_case in use_cases:
|
|
83
|
+
recipe = self.generate_recipe(use_case)
|
|
84
|
+
cookbook_content.extend(["", recipe])
|
|
85
|
+
|
|
86
|
+
return "\n".join(cookbook_content)
|
|
87
|
+
|
|
88
|
+
def generate_recipe(self, use_case: Dict) -> str:
|
|
89
|
+
"""Generate a single recipe for the cookbook."""
|
|
90
|
+
|
|
91
|
+
return f"""
|
|
92
|
+
### {use_case['title']}
|
|
93
|
+
|
|
94
|
+
Problem: {use_case['problem']}
|
|
95
|
+
|
|
96
|
+
Solution: {use_case['solution']}
|
|
97
|
+
|
|
98
|
+
Code Example:
|
|
99
|
+
```python
|
|
100
|
+
{use_case.get('example_code', '# Example implementation')}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Explanation: {use_case.get('explanation', 'Detailed explanation of the solution')}
|
|
104
|
+
|
|
105
|
+
Variations: {use_case.get('variations', 'Common variations and adaptations')}
|
|
106
|
+
|
|
107
|
+
Related Patterns: {', '.join(use_case.get('related_patterns', []))}
|
|
108
|
+
"""
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Guide Types
|
|
112
|
+
|
|
113
|
+
### 1. Getting Started Guides
|
|
114
|
+
- Prerequisites and requirements
|
|
115
|
+
- Installation and setup
|
|
116
|
+
- Quick start examples
|
|
117
|
+
- Basic usage patterns
|
|
118
|
+
- Next steps and resources
|
|
119
|
+
|
|
120
|
+
### 2. Feature Tutorials
|
|
121
|
+
- Step-by-step implementation
|
|
122
|
+
- Complete working examples
|
|
123
|
+
- Common use cases
|
|
124
|
+
- Troubleshooting tips
|
|
125
|
+
- Advanced variations
|
|
126
|
+
|
|
127
|
+
### 3. Cookbooks
|
|
128
|
+
- Problem-solution format
|
|
129
|
+
- Code-first examples
|
|
130
|
+
- Common patterns
|
|
131
|
+
- Best practices
|
|
132
|
+
- Performance tips
|
|
133
|
+
|
|
134
|
+
## Content Generation Features
|
|
135
|
+
- AI-powered tutorial creation
|
|
136
|
+
- Structured content templates
|
|
137
|
+
- Code example generation
|
|
138
|
+
- Progressive difficulty scaling
|
|
139
|
+
- Cross-references and links
|
|
140
|
+
- Troubleshooting sections
|
|
141
|
+
|
|
142
|
+
## Integration Points
|
|
143
|
+
- Project documentation systems
|
|
144
|
+
- Developer onboarding workflows
|
|
145
|
+
- Knowledge base platforms
|
|
146
|
+
- Customer support systems
|
|
147
|
+
- Educational platforms
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-domain-backend
|
|
3
|
+
description: Backend development specialist covering API design, database integration, microservices architecture, and modern backend patterns
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: domain
|
|
6
|
+
tags:
|
|
7
|
+
- backend
|
|
8
|
+
- api
|
|
9
|
+
- database
|
|
10
|
+
- microservices
|
|
11
|
+
- architecture
|
|
12
|
+
updated: 2025-11-30
|
|
13
|
+
status: active
|
|
14
|
+
author: MoAI-ADK Team
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Backend Development Specialist
|
|
18
|
+
|
|
19
|
+
## Quick Reference (30 seconds)
|
|
20
|
+
|
|
21
|
+
Backend Development Mastery - Comprehensive backend development patterns covering API design, database integration, microservices, and modern architecture patterns.
|
|
22
|
+
|
|
23
|
+
Core Capabilities:
|
|
24
|
+
- API Design: REST, GraphQL, gRPC with OpenAPI 3.1
|
|
25
|
+
- Database Integration: PostgreSQL, MongoDB, Redis, caching strategies
|
|
26
|
+
- Microservices: Service mesh, distributed patterns, event-driven architecture
|
|
27
|
+
- Security: Authentication, authorization, OWASP compliance
|
|
28
|
+
- Performance: Caching, optimization, monitoring, scaling
|
|
29
|
+
|
|
30
|
+
When to Use:
|
|
31
|
+
- Backend API development and architecture
|
|
32
|
+
- Database design and optimization
|
|
33
|
+
- Microservices implementation
|
|
34
|
+
- Performance optimization and scaling
|
|
35
|
+
- Security integration for backend systems
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Implementation Guide
|
|
40
|
+
|
|
41
|
+
### API Design Patterns
|
|
42
|
+
|
|
43
|
+
RESTful API Architecture:
|
|
44
|
+
```python
|
|
45
|
+
from fastapi import FastAPI, Depends, HTTPException
|
|
46
|
+
from fastapi.security import HTTPBearer
|
|
47
|
+
from pydantic import BaseModel
|
|
48
|
+
from typing import List, Optional
|
|
49
|
+
|
|
50
|
+
app = FastAPI(title="Modern API", version="2.0.0")
|
|
51
|
+
security = HTTPBearer()
|
|
52
|
+
|
|
53
|
+
class UserResponse(BaseModel):
|
|
54
|
+
id: int
|
|
55
|
+
email: str
|
|
56
|
+
name: str
|
|
57
|
+
|
|
58
|
+
@app.get("/users", response_model=List[UserResponse])
|
|
59
|
+
async def list_users(token: str = Depends(security)):
|
|
60
|
+
"""List users with authentication."""
|
|
61
|
+
return await user_service.get_all_users()
|
|
62
|
+
|
|
63
|
+
@app.post("/users", response_model=UserResponse)
|
|
64
|
+
async def create_user(user: UserCreate):
|
|
65
|
+
"""Create new user with validation."""
|
|
66
|
+
return await user_service.create(user)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
GraphQL Implementation:
|
|
70
|
+
```python
|
|
71
|
+
import strawberry
|
|
72
|
+
from typing import List
|
|
73
|
+
|
|
74
|
+
@strawberry.type
|
|
75
|
+
class User:
|
|
76
|
+
id: int
|
|
77
|
+
email: str
|
|
78
|
+
name: str
|
|
79
|
+
|
|
80
|
+
@strawberry.type
|
|
81
|
+
class Query:
|
|
82
|
+
@strawberry.field
|
|
83
|
+
async def users(self) -> List[User]:
|
|
84
|
+
return await user_service.get_all_users()
|
|
85
|
+
|
|
86
|
+
schema = strawberry.Schema(query=Query)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Database Integration Patterns
|
|
90
|
+
|
|
91
|
+
PostgreSQL with SQLAlchemy:
|
|
92
|
+
```python
|
|
93
|
+
from sqlalchemy import create_engine, Column, Integer, String
|
|
94
|
+
from sqlalchemy.ext.declarative import declarative_base
|
|
95
|
+
from sqlalchemy.orm import sessionmaker
|
|
96
|
+
|
|
97
|
+
Base = declarative_base()
|
|
98
|
+
|
|
99
|
+
class User(Base):
|
|
100
|
+
__tablename__ = "users"
|
|
101
|
+
|
|
102
|
+
id = Column(Integer, primary_key=True)
|
|
103
|
+
email = Column(String, unique=True)
|
|
104
|
+
name = Column(String)
|
|
105
|
+
|
|
106
|
+
# Connection pooling and optimization
|
|
107
|
+
engine = create_engine(
|
|
108
|
+
DATABASE_URL,
|
|
109
|
+
pool_size=20,
|
|
110
|
+
max_overflow=30,
|
|
111
|
+
pool_pre_ping=True
|
|
112
|
+
)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
MongoDB with Motor:
|
|
116
|
+
```python
|
|
117
|
+
from motor.motor_asyncio import AsyncIOMotorClient
|
|
118
|
+
from pymongo import IndexModel
|
|
119
|
+
|
|
120
|
+
class UserService:
|
|
121
|
+
def __init__(self, client: AsyncIOMotorClient):
|
|
122
|
+
self.db = client.myapp
|
|
123
|
+
self.users = self.db.users
|
|
124
|
+
|
|
125
|
+
# Index optimization
|
|
126
|
+
self.users.create_indexes([
|
|
127
|
+
IndexModel("email", unique=True),
|
|
128
|
+
IndexModel("created_at")
|
|
129
|
+
])
|
|
130
|
+
|
|
131
|
+
async def create_user(self, user_data: dict) -> str:
|
|
132
|
+
result = await self.users.insert_one(user_data)
|
|
133
|
+
return str(result.inserted_id)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Microservices Architecture
|
|
137
|
+
|
|
138
|
+
Service Discovery with Consul:
|
|
139
|
+
```python
|
|
140
|
+
import consul
|
|
141
|
+
|
|
142
|
+
class ServiceRegistry:
|
|
143
|
+
def __init__(self, consul_host="localhost", consul_port=8500):
|
|
144
|
+
self.consul = consul.Consul(host=consul_host, port=consul_port)
|
|
145
|
+
|
|
146
|
+
def register_service(self, service_name: str, service_id: str, port: int):
|
|
147
|
+
self.consul.agent.service.register(
|
|
148
|
+
name=service_name,
|
|
149
|
+
service_id=service_id,
|
|
150
|
+
port=port,
|
|
151
|
+
check=consul.Check.http(f"http://localhost:{port}/health", interval="10s")
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
def discover_service(self, service_name: str) -> List[str]:
|
|
155
|
+
_, services = self.consul.health.service(service_name, passing=True)
|
|
156
|
+
return [f"{s['Service']['Address']}:{s['Service']['Port']}" for s in services]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Event-Driven Architecture:
|
|
160
|
+
```python
|
|
161
|
+
import asyncio
|
|
162
|
+
from aio_pika import connect_robust
|
|
163
|
+
|
|
164
|
+
class EventBus:
|
|
165
|
+
def __init__(self, amqp_url: str):
|
|
166
|
+
self.connection = None
|
|
167
|
+
self.channel = None
|
|
168
|
+
self.amqp_url = amqp_url
|
|
169
|
+
|
|
170
|
+
async def connect(self):
|
|
171
|
+
self.connection = await connect_robust(self.amqp_url)
|
|
172
|
+
self.channel = await self.connection.channel()
|
|
173
|
+
|
|
174
|
+
async def publish_event(self, event_type: str, data: dict):
|
|
175
|
+
await self.channel.default_exchange.publish(
|
|
176
|
+
aio_pika.Message(
|
|
177
|
+
json.dumps({"type": event_type, "data": data}).encode(),
|
|
178
|
+
content_type="application/json"
|
|
179
|
+
),
|
|
180
|
+
routing_key=event_type
|
|
181
|
+
)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Advanced Patterns
|
|
187
|
+
|
|
188
|
+
### Caching Strategies
|
|
189
|
+
|
|
190
|
+
Redis Integration:
|
|
191
|
+
```python
|
|
192
|
+
import redis.asyncio as redis
|
|
193
|
+
from functools import wraps
|
|
194
|
+
import json
|
|
195
|
+
import hashlib
|
|
196
|
+
|
|
197
|
+
class CacheManager:
|
|
198
|
+
def __init__(self, redis_url: str):
|
|
199
|
+
self.redis = redis.from_url(redis_url)
|
|
200
|
+
|
|
201
|
+
def cache_result(self, ttl: int = 3600):
|
|
202
|
+
def decorator(func):
|
|
203
|
+
@wraps(func)
|
|
204
|
+
async def wrapper(*args, kwargs):
|
|
205
|
+
cache_key = self._generate_cache_key(func.__name__, args, kwargs)
|
|
206
|
+
|
|
207
|
+
# Try to get from cache
|
|
208
|
+
cached = await self.redis.get(cache_key)
|
|
209
|
+
if cached:
|
|
210
|
+
return json.loads(cached)
|
|
211
|
+
|
|
212
|
+
# Execute function and cache result
|
|
213
|
+
result = await func(*args, kwargs)
|
|
214
|
+
await self.redis.setex(
|
|
215
|
+
cache_key,
|
|
216
|
+
ttl,
|
|
217
|
+
json.dumps(result, default=str)
|
|
218
|
+
)
|
|
219
|
+
return result
|
|
220
|
+
return wrapper
|
|
221
|
+
return decorator
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Security Implementation
|
|
225
|
+
|
|
226
|
+
JWT Authentication:
|
|
227
|
+
```python
|
|
228
|
+
import jwt
|
|
229
|
+
from datetime import datetime, timedelta
|
|
230
|
+
from passlib.context import CryptContext
|
|
231
|
+
|
|
232
|
+
class SecurityManager:
|
|
233
|
+
def __init__(self, secret_key: str):
|
|
234
|
+
self.secret_key = secret_key
|
|
235
|
+
self.pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
236
|
+
|
|
237
|
+
def hash_password(self, password: str) -> str:
|
|
238
|
+
return self.pwd_context.hash(password)
|
|
239
|
+
|
|
240
|
+
def verify_password(self, plain_password: str, hashed_password: str) -> bool:
|
|
241
|
+
return self.pwd_context.verify(plain_password, hashed_password)
|
|
242
|
+
|
|
243
|
+
def create_access_token(self, data: dict, expires_delta: timedelta = None) -> str:
|
|
244
|
+
to_encode = data.copy()
|
|
245
|
+
if expires_delta:
|
|
246
|
+
expire = datetime.utcnow() + expires_delta
|
|
247
|
+
else:
|
|
248
|
+
expire = datetime.utcnow() + timedelta(minutes=15)
|
|
249
|
+
|
|
250
|
+
to_encode.update({"exp": expire})
|
|
251
|
+
return jwt.encode(to_encode, self.secret_key, algorithm="HS256")
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Performance Optimization
|
|
255
|
+
|
|
256
|
+
Database Connection Pooling:
|
|
257
|
+
```python
|
|
258
|
+
from sqlalchemy.pool import QueuePool
|
|
259
|
+
from sqlalchemy import event
|
|
260
|
+
|
|
261
|
+
def create_optimized_engine(database_url: str):
|
|
262
|
+
engine = create_engine(
|
|
263
|
+
database_url,
|
|
264
|
+
poolclass=QueuePool,
|
|
265
|
+
pool_size=20,
|
|
266
|
+
max_overflow=30,
|
|
267
|
+
pool_pre_ping=True,
|
|
268
|
+
pool_recycle=3600,
|
|
269
|
+
echo=False
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
@event.listens_for(engine, "before_cursor_execute")
|
|
273
|
+
def receive_before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
|
274
|
+
context._query_start_time = time.time()
|
|
275
|
+
|
|
276
|
+
@event.listens_for(engine, "after_cursor_execute")
|
|
277
|
+
def receive_after_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
|
278
|
+
total = time.time() - context._query_start_time
|
|
279
|
+
if total > 0.1: # Log slow queries
|
|
280
|
+
logger.warning(f"Slow query: {total:.2f}s - {statement[:100]}")
|
|
281
|
+
|
|
282
|
+
return engine
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Works Well With
|
|
288
|
+
|
|
289
|
+
- moai-domain-frontend - Full-stack development integration
|
|
290
|
+
- moai-domain-database - Advanced database patterns
|
|
291
|
+
- moai-integration-mcp - MCP server development for backend services
|
|
292
|
+
- moai-quality-security - Security validation and compliance
|
|
293
|
+
- moai-foundation-core - Core architectural principles
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Technology Stack
|
|
298
|
+
|
|
299
|
+
Primary Technologies:
|
|
300
|
+
- Languages: Python 3.13+, Node.js 20+, Go 1.23
|
|
301
|
+
- Frameworks: FastAPI, Django, Express.js, Gin
|
|
302
|
+
- Databases: PostgreSQL 16+, MongoDB 7+, Redis 7+
|
|
303
|
+
- Message Queues: RabbitMQ, Apache Kafka, Redis Pub/Sub
|
|
304
|
+
- Containerization: Docker, Kubernetes
|
|
305
|
+
- Monitoring: Prometheus, Grafana, OpenTelemetry
|
|
306
|
+
|
|
307
|
+
Integration Patterns:
|
|
308
|
+
- RESTful APIs with OpenAPI 3.1
|
|
309
|
+
- GraphQL with Apollo Federation
|
|
310
|
+
- gRPC for high-performance services
|
|
311
|
+
- Event-driven architecture with CQRS
|
|
312
|
+
- API Gateway patterns
|
|
313
|
+
- Circuit breakers and resilience patterns
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
Status: Production Ready
|
|
318
|
+
Last Updated: 2025-11-30
|
|
319
|
+
Maintained by: MoAI-ADK Backend Team
|