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,663 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
MoAI Menu Project - Complete Workflow Demo
|
|
4
|
+
|
|
5
|
+
This demonstration script shows the complete usage of the moai-menu-project
|
|
6
|
+
integrated system, including:
|
|
7
|
+
|
|
8
|
+
1. Project initialization with all modules
|
|
9
|
+
2. Configuration management and updates
|
|
10
|
+
3. Documentation generation from SPECs
|
|
11
|
+
4. Language localization
|
|
12
|
+
5. Template optimization
|
|
13
|
+
6. Performance benchmarking
|
|
14
|
+
7. Backup creation and recovery
|
|
15
|
+
8. Export functionality
|
|
16
|
+
|
|
17
|
+
This serves as both a demonstration and a validation that the entire
|
|
18
|
+
system works together seamlessly.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import sys
|
|
22
|
+
import tempfile
|
|
23
|
+
import time
|
|
24
|
+
from datetime import datetime
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
# Add the skill directory to the path
|
|
28
|
+
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
from moai_menu_project import (
|
|
32
|
+
MoaiMenuProject,
|
|
33
|
+
generate_docs,
|
|
34
|
+
initialize_project,
|
|
35
|
+
optimize_templates,
|
|
36
|
+
)
|
|
37
|
+
except ImportError as e:
|
|
38
|
+
print(f"โ Import Error: {e}")
|
|
39
|
+
print("Make sure you're running this from the correct directory")
|
|
40
|
+
sys.exit(1)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class DemoRunner:
|
|
44
|
+
"""Runner for the complete workflow demonstration."""
|
|
45
|
+
|
|
46
|
+
def __init__(self):
|
|
47
|
+
self.demo_project_dir = None
|
|
48
|
+
self.project = None
|
|
49
|
+
self.results = {}
|
|
50
|
+
|
|
51
|
+
def setup_demo_environment(self):
|
|
52
|
+
"""Set up the demonstration environment."""
|
|
53
|
+
print("๐ Setting up demo environment...")
|
|
54
|
+
|
|
55
|
+
# Create temporary directory for demo
|
|
56
|
+
self.demo_project_dir = Path(tempfile.mkdtemp(prefix="moai_menu_demo_"))
|
|
57
|
+
print(f"๐ Demo project directory: {self.demo_project_dir}")
|
|
58
|
+
|
|
59
|
+
# Initialize the project
|
|
60
|
+
self.project = MoaiMenuProject(str(self.demo_project_dir))
|
|
61
|
+
|
|
62
|
+
print("โ
Demo environment setup complete")
|
|
63
|
+
print("-" * 50)
|
|
64
|
+
|
|
65
|
+
def demo_project_initialization(self):
|
|
66
|
+
"""Demonstrate complete project initialization."""
|
|
67
|
+
print("๐ง Demo 1: Complete Project Initialization")
|
|
68
|
+
print("-" * 30)
|
|
69
|
+
|
|
70
|
+
# Initialize with Korean language and full configuration
|
|
71
|
+
start_time = time.time()
|
|
72
|
+
|
|
73
|
+
result = self.project.initialize_complete_project(
|
|
74
|
+
language="ko",
|
|
75
|
+
user_name="๋ฐ๋ชจ ์ฌ์ฉ์",
|
|
76
|
+
domains=["backend", "frontend", "mobile"],
|
|
77
|
+
project_type="web_application",
|
|
78
|
+
optimization_enabled=True,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
end_time = time.time()
|
|
82
|
+
duration = end_time - start_time
|
|
83
|
+
|
|
84
|
+
self.results["initialization"] = {
|
|
85
|
+
"success": result["success"],
|
|
86
|
+
"duration": duration,
|
|
87
|
+
"modules_initialized": result["modules_initialized"],
|
|
88
|
+
"created_files": len(result.get("created_files", [])),
|
|
89
|
+
"optimization_applied": result["optimization_results"] is not None,
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
print(f"โ
Initialization completed in {duration:.2f} seconds")
|
|
93
|
+
print(f"๐ฆ Modules initialized: {', '.join(result['modules_initialized'])}")
|
|
94
|
+
print(f"๐ Files created: {len(result.get('created_files', []))}")
|
|
95
|
+
|
|
96
|
+
if result["optimization_results"]:
|
|
97
|
+
print("๐ง Template optimization applied")
|
|
98
|
+
|
|
99
|
+
# Show configuration
|
|
100
|
+
print("\\n๐ Current Configuration:")
|
|
101
|
+
config = self.project.config
|
|
102
|
+
print(f" - Project: {config['project']['name']} ({config['project']['type']})")
|
|
103
|
+
print(f" - Language: {config['language']['conversation_language']}")
|
|
104
|
+
print(f" - User: {config['user']['name']}")
|
|
105
|
+
print(f" - Menu System: v{config['menu_system']['version']}")
|
|
106
|
+
|
|
107
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
108
|
+
|
|
109
|
+
def demo_spec_documentation_generation(self):
|
|
110
|
+
"""Demonstrate documentation generation from SPEC data."""
|
|
111
|
+
print("๐ Demo 2: Documentation Generation from SPEC")
|
|
112
|
+
print("-" * 42)
|
|
113
|
+
|
|
114
|
+
# Create comprehensive SPEC data
|
|
115
|
+
spec_data = {
|
|
116
|
+
"id": "SPEC-DEMO-001",
|
|
117
|
+
"title": "์ฌ์ฉ์ ์ธ์ฆ ์์คํ
๊ตฌํ",
|
|
118
|
+
"description": "JWT ๊ธฐ๋ฐ์ ๋ณด์ ์ฌ์ฉ์ ์ธ์ฆ ์์คํ
๊ตฌํ",
|
|
119
|
+
"requirements": [
|
|
120
|
+
"์ฌ์ฉ์ ๋ฑ๋ก ๋ฐ ์ด๋ฉ์ผ ์ธ์ฆ",
|
|
121
|
+
"JWT ํ ํฐ ์์ฑ ๋ฐ ๊ฒ์ฆ",
|
|
122
|
+
"๋น๋ฐ๋ฒํธ ์ฌ์ค์ ๊ธฐ๋ฅ",
|
|
123
|
+
"์์
๋ก๊ทธ์ธ ์ฐ๋ (Google, GitHub)",
|
|
124
|
+
"๋ณด์ ๋ก๊ทธ์ธ ์๋ ์ ํ",
|
|
125
|
+
"์ฌ์ฉ์ ํ๋กํ ๊ด๋ฆฌ",
|
|
126
|
+
],
|
|
127
|
+
"api_endpoints": [
|
|
128
|
+
{
|
|
129
|
+
"path": "/api/auth/register",
|
|
130
|
+
"method": "POST",
|
|
131
|
+
"description": "์ ๊ท ์ฌ์ฉ์ ๋ฑ๋ก",
|
|
132
|
+
"parameters": {
|
|
133
|
+
"email": "string",
|
|
134
|
+
"password": "string",
|
|
135
|
+
"name": "string",
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"path": "/api/auth/login",
|
|
140
|
+
"method": "POST",
|
|
141
|
+
"description": "์ฌ์ฉ์ ๋ก๊ทธ์ธ",
|
|
142
|
+
"parameters": {"email": "string", "password": "string"},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"path": "/api/auth/refresh",
|
|
146
|
+
"method": "POST",
|
|
147
|
+
"description": "JWT ํ ํฐ ๊ฐฑ์ ",
|
|
148
|
+
"parameters": {"refresh_token": "string"},
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
"status": "Planned",
|
|
152
|
+
"priority": "High",
|
|
153
|
+
"estimated_days": 5,
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
print("๐ Generating documentation from SPEC...")
|
|
157
|
+
start_time = time.time()
|
|
158
|
+
|
|
159
|
+
docs_result = self.project.generate_documentation_from_spec(spec_data)
|
|
160
|
+
|
|
161
|
+
end_time = time.time()
|
|
162
|
+
duration = end_time - start_time
|
|
163
|
+
|
|
164
|
+
self.results["documentation_generation"] = {
|
|
165
|
+
"success": docs_result["success"],
|
|
166
|
+
"duration": duration,
|
|
167
|
+
"feature_docs_generated": "feature_docs" in docs_result,
|
|
168
|
+
"api_docs_generated": "api_docs" in docs_result,
|
|
169
|
+
"localized_docs": "localized_documentation" in docs_result,
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
print(f"โ
Documentation generated in {duration:.2f} seconds")
|
|
173
|
+
print(f"๐ Feature docs: {'โ
' if 'feature_docs' in docs_result else 'โ'}")
|
|
174
|
+
print(f"๐ API docs: {'โ
' if 'api_docs' in docs_result else 'โ'}")
|
|
175
|
+
print(f"๐ Localized docs: {'โ
' if 'localized_documentation' in docs_result else 'โ'}")
|
|
176
|
+
|
|
177
|
+
print("\\n๐ Generated Documentation Structure:")
|
|
178
|
+
docs_dir = self.demo_project_dir / "docs"
|
|
179
|
+
if docs_dir.exists():
|
|
180
|
+
for doc_file in docs_dir.rglob("*"):
|
|
181
|
+
if doc_file.is_file():
|
|
182
|
+
relative_path = doc_file.relative_to(docs_dir)
|
|
183
|
+
size = doc_file.stat().st_size
|
|
184
|
+
print(f" ๐ {relative_path} ({size} bytes)")
|
|
185
|
+
|
|
186
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
187
|
+
|
|
188
|
+
def demo_language_localization(self):
|
|
189
|
+
"""Demonstrate language localization capabilities."""
|
|
190
|
+
print("๐ Demo 3: Language Localization")
|
|
191
|
+
print("-" * 29)
|
|
192
|
+
|
|
193
|
+
# Test multiple languages
|
|
194
|
+
languages = ["en", "ko", "ja", "zh"]
|
|
195
|
+
|
|
196
|
+
for lang in languages:
|
|
197
|
+
print(f"๐ค Testing {lang.upper()} language support...")
|
|
198
|
+
|
|
199
|
+
# Update language settings
|
|
200
|
+
updates = {
|
|
201
|
+
"language.conversation_language": lang,
|
|
202
|
+
"language.documentation_language": lang,
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
update_result = self.project.update_language_settings(updates)
|
|
206
|
+
|
|
207
|
+
if update_result["success"]:
|
|
208
|
+
# Create multilingual documentation structure
|
|
209
|
+
multilingual_result = self.project.language_initializer.create_multilingual_documentation_structure(
|
|
210
|
+
lang
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
print(f" โ
{lang.upper()} configured")
|
|
214
|
+
print(f" ๐ Docs structure: {'โ
' if multilingual_result['success'] else 'โ'}")
|
|
215
|
+
|
|
216
|
+
# Get token cost analysis
|
|
217
|
+
cost_analysis = self.project.language_initializer.get_token_cost_analysis(lang)
|
|
218
|
+
print(f" ๐ฐ Token cost impact: +{cost_analysis['cost_impact']}%")
|
|
219
|
+
|
|
220
|
+
else:
|
|
221
|
+
print(f" โ {lang.upper()} configuration failed")
|
|
222
|
+
|
|
223
|
+
print("\\n๐ Multilingual Support Summary:")
|
|
224
|
+
lang_status = self.project.language_initializer.get_language_status()
|
|
225
|
+
print(f" - Current language: {lang_status['current_language']}")
|
|
226
|
+
print(f" - Supported languages: {', '.join(lang_status['supported_languages'])}")
|
|
227
|
+
|
|
228
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
229
|
+
|
|
230
|
+
def demo_template_optimization(self):
|
|
231
|
+
"""Demonstrate template optimization capabilities."""
|
|
232
|
+
print("โก Demo 4: Template Optimization")
|
|
233
|
+
print("-" * 30)
|
|
234
|
+
|
|
235
|
+
# Create some test templates for optimization
|
|
236
|
+
templates_dir = self.demo_project_dir / "templates"
|
|
237
|
+
templates_dir.mkdir(exist_ok=True)
|
|
238
|
+
|
|
239
|
+
# Create test templates with optimization opportunities
|
|
240
|
+
test_templates = {
|
|
241
|
+
"project_overview.md": """
|
|
242
|
+
# Project Overview
|
|
243
|
+
|
|
244
|
+
This is the project overview template.
|
|
245
|
+
|
|
246
|
+
## Project Description
|
|
247
|
+
|
|
248
|
+
This section describes the project.
|
|
249
|
+
|
|
250
|
+
## Project Description # Duplicate
|
|
251
|
+
|
|
252
|
+
This section describes the project again.
|
|
253
|
+
|
|
254
|
+
## Features
|
|
255
|
+
|
|
256
|
+
- Feature 1
|
|
257
|
+
- Feature 2
|
|
258
|
+
- Feature 3
|
|
259
|
+
|
|
260
|
+
## Features # Duplicate
|
|
261
|
+
|
|
262
|
+
- Feature 1
|
|
263
|
+
- Feature 2
|
|
264
|
+
- Feature 3
|
|
265
|
+
|
|
266
|
+
Extra whitespace:
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
""",
|
|
271
|
+
"api_documentation.md": """
|
|
272
|
+
# API Documentation
|
|
273
|
+
|
|
274
|
+
## Introduction
|
|
275
|
+
|
|
276
|
+
API documentation template.
|
|
277
|
+
|
|
278
|
+
## Endpoints
|
|
279
|
+
|
|
280
|
+
### GET /api/users
|
|
281
|
+
|
|
282
|
+
Get users list.
|
|
283
|
+
|
|
284
|
+
### POST /api/users
|
|
285
|
+
|
|
286
|
+
Create new user.
|
|
287
|
+
|
|
288
|
+
### GET /api/users
|
|
289
|
+
|
|
290
|
+
Get users list again. # Duplicate
|
|
291
|
+
|
|
292
|
+
Complex template logic:
|
|
293
|
+
{% if api_version == "v1" %}
|
|
294
|
+
{% if endpoint_type == "public" %}
|
|
295
|
+
Public endpoint
|
|
296
|
+
{% endif %}
|
|
297
|
+
{% endif %}
|
|
298
|
+
|
|
299
|
+
""",
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
for template_name, content in test_templates.items():
|
|
303
|
+
(templates_dir / template_name).write_text(content, encoding="utf-8")
|
|
304
|
+
|
|
305
|
+
print(f"๐ Created {len(test_templates)} test templates for optimization")
|
|
306
|
+
|
|
307
|
+
# Analyze templates
|
|
308
|
+
print("\\n๐ Analyzing templates...")
|
|
309
|
+
start_time = time.time()
|
|
310
|
+
|
|
311
|
+
analysis = self.project.template_optimizer.analyze_project_templates()
|
|
312
|
+
|
|
313
|
+
analysis_time = time.time() - start_time
|
|
314
|
+
|
|
315
|
+
print(f"โฑ๏ธ Analysis completed in {analysis_time:.2f} seconds")
|
|
316
|
+
print(f"๐ Templates analyzed: {len(analysis.get('analyzed_files', []))}")
|
|
317
|
+
|
|
318
|
+
# Show analysis results
|
|
319
|
+
for file_analysis in analysis.get("analyzed_files", []):
|
|
320
|
+
print(f" ๐ {Path(file_analysis['file_path']).name}")
|
|
321
|
+
print(f" - Size: {file_analysis.get('file_size', 0)} bytes")
|
|
322
|
+
if "complexity_score" in file_analysis:
|
|
323
|
+
print(f" - Complexity: {file_analysis['complexity_score']}/10")
|
|
324
|
+
|
|
325
|
+
# Apply optimizations
|
|
326
|
+
print("\\n๐ง Applying optimizations...")
|
|
327
|
+
start_time = time.time()
|
|
328
|
+
|
|
329
|
+
optimization_options = {
|
|
330
|
+
"backup_first": True,
|
|
331
|
+
"apply_size_optimizations": True,
|
|
332
|
+
"apply_performance_optimizations": True,
|
|
333
|
+
"apply_complexity_optimizations": True,
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
opt_result = self.project.template_optimizer.create_optimized_templates(optimization_options)
|
|
337
|
+
|
|
338
|
+
opt_time = time.time() - start_time
|
|
339
|
+
|
|
340
|
+
self.results["template_optimization"] = {
|
|
341
|
+
"analysis_time": analysis_time,
|
|
342
|
+
"optimization_time": opt_time,
|
|
343
|
+
"files_analyzed": len(analysis.get("analyzed_files", [])),
|
|
344
|
+
"optimizations_applied": opt_result.get("success", False),
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
print(f"โ
Optimization completed in {opt_time:.2f} seconds")
|
|
348
|
+
|
|
349
|
+
# Show optimization results
|
|
350
|
+
if opt_result.get("success"):
|
|
351
|
+
opt_results = opt_result.get("optimization_results", {})
|
|
352
|
+
if "size_reduction" in opt_results:
|
|
353
|
+
print(f"๐ Size reduction: {opt_results['size_reduction']:.1f}%")
|
|
354
|
+
if "performance_improvement" in opt_results:
|
|
355
|
+
print(f"โก Performance improvement: {opt_results['performance_improvement']:.1f}%")
|
|
356
|
+
|
|
357
|
+
# Run benchmark
|
|
358
|
+
print("\\n๐ Running performance benchmark...")
|
|
359
|
+
benchmark_result = self.project.template_optimizer.benchmark_template_performance()
|
|
360
|
+
|
|
361
|
+
if benchmark_result.get("success"):
|
|
362
|
+
print("โ
Benchmark completed successfully")
|
|
363
|
+
|
|
364
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
365
|
+
|
|
366
|
+
def demo_backup_and_recovery(self):
|
|
367
|
+
"""Demonstrate backup and recovery capabilities."""
|
|
368
|
+
print("๐พ Demo 5: Backup and Recovery")
|
|
369
|
+
print("-" * 28)
|
|
370
|
+
|
|
371
|
+
# Create comprehensive backup
|
|
372
|
+
backup_name = f"demo-backup-{datetime.now().strftime('%Y%m%d-%H%M%S')}"
|
|
373
|
+
|
|
374
|
+
print(f"๐ฆ Creating backup: {backup_name}")
|
|
375
|
+
start_time = time.time()
|
|
376
|
+
|
|
377
|
+
backup_result = self.project.create_project_backup(backup_name)
|
|
378
|
+
|
|
379
|
+
backup_time = time.time() - start_time
|
|
380
|
+
|
|
381
|
+
self.results["backup_creation"] = {
|
|
382
|
+
"success": backup_result["success"],
|
|
383
|
+
"duration": backup_time,
|
|
384
|
+
"backup_name": backup_name,
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
print(f"โ
Backup created in {backup_time:.2f} seconds")
|
|
388
|
+
|
|
389
|
+
# Show backup components
|
|
390
|
+
components = backup_result.get("components", {})
|
|
391
|
+
for component_name, component_data in components.items():
|
|
392
|
+
status = "โ
" if component_data.get("success", False) else "โ"
|
|
393
|
+
print(f" {status} {component_name.replace('_', ' ').title()}")
|
|
394
|
+
|
|
395
|
+
# Verify backup files exist
|
|
396
|
+
backup_dir = self.demo_project_dir / ".moai-backups" / backup_name
|
|
397
|
+
if backup_dir.exists():
|
|
398
|
+
backup_files = list(backup_dir.rglob("*"))
|
|
399
|
+
backup_files = [f for f in backup_files if f.is_file()]
|
|
400
|
+
print(f"๐ Backup files created: {len(backup_files)}")
|
|
401
|
+
|
|
402
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
403
|
+
|
|
404
|
+
def demo_export_functionality(self):
|
|
405
|
+
"""Demonstrate export functionality."""
|
|
406
|
+
print("๐ค Demo 6: Export Functionality")
|
|
407
|
+
print("-" * 28)
|
|
408
|
+
|
|
409
|
+
# Test different export formats
|
|
410
|
+
export_formats = [
|
|
411
|
+
"markdown",
|
|
412
|
+
"html",
|
|
413
|
+
] # PDF would require additional dependencies
|
|
414
|
+
|
|
415
|
+
for format_type in export_formats:
|
|
416
|
+
print(f"๐ Testing {format_type.upper()} export...")
|
|
417
|
+
|
|
418
|
+
start_time = time.time()
|
|
419
|
+
|
|
420
|
+
# Export documentation
|
|
421
|
+
export_result = self.project.export_project_documentation(format_type=format_type, language="ko")
|
|
422
|
+
|
|
423
|
+
export_time = time.time() - start_time
|
|
424
|
+
|
|
425
|
+
if export_result.get("success"):
|
|
426
|
+
print(f"โ
{format_type.upper()} export completed in {export_time:.2f} seconds")
|
|
427
|
+
print(f"๐ Export path: {export_result.get('export_path', 'N/A')}")
|
|
428
|
+
else:
|
|
429
|
+
print(f"โ {format_type.upper()} export failed")
|
|
430
|
+
|
|
431
|
+
# Show export summary
|
|
432
|
+
print("\\n๐ Export Summary:")
|
|
433
|
+
docs_dir = self.demo_project_dir / "docs"
|
|
434
|
+
if docs_dir.exists():
|
|
435
|
+
file_types = {}
|
|
436
|
+
for file_path in docs_dir.rglob("*"):
|
|
437
|
+
if file_path.is_file():
|
|
438
|
+
suffix = file_path.suffix.lower()
|
|
439
|
+
file_types[suffix] = file_types.get(suffix, 0) + 1
|
|
440
|
+
|
|
441
|
+
for file_type, count in file_types.items():
|
|
442
|
+
print(f" ๐ {file_type or 'no extension'}: {count} files")
|
|
443
|
+
|
|
444
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
445
|
+
|
|
446
|
+
def demo_project_status(self):
|
|
447
|
+
"""Demonstrate project status reporting."""
|
|
448
|
+
print("๐ Demo 7: Project Status Reporting")
|
|
449
|
+
print("-" * 34)
|
|
450
|
+
|
|
451
|
+
# Get comprehensive project status
|
|
452
|
+
status = self.project.get_project_status()
|
|
453
|
+
|
|
454
|
+
print("๐ Project Configuration:")
|
|
455
|
+
config = status["configuration"]
|
|
456
|
+
print(f" ๐ Project: {config['project_name']} ({config['project_type']})")
|
|
457
|
+
print(f" ๐ท๏ธ Type: {config['project_type']}")
|
|
458
|
+
print(f" ๐ Menu System: v{config['menu_system_version']}")
|
|
459
|
+
print(f" โ
Fully Initialized: {status['fully_initialized']}")
|
|
460
|
+
|
|
461
|
+
print("\\n๐ง Module Status:")
|
|
462
|
+
modules = status["modules"]
|
|
463
|
+
for module_name, module_status in modules.items():
|
|
464
|
+
print(f" ๐ฆ {module_name.replace('_', ' ').title()}: {module_status}")
|
|
465
|
+
|
|
466
|
+
print("\\n๐ Language Status:")
|
|
467
|
+
lang_status = status["language_status"]
|
|
468
|
+
print(f" ๐ฌ Current: {lang_status.get('current_language', 'N/A')}")
|
|
469
|
+
print(f" ๐ Supported: {', '.join(lang_status.get('supported_languages', []))}")
|
|
470
|
+
|
|
471
|
+
print("\\n๐ Documentation Status:")
|
|
472
|
+
doc_status = status["documentation_status"]
|
|
473
|
+
print(f" ๐ Structure: {doc_status.get('structure_initialized', 'N/A')}")
|
|
474
|
+
print(f" ๐ Templates: {doc_status.get('templates_available', 'N/A')}")
|
|
475
|
+
|
|
476
|
+
# Show integration matrix
|
|
477
|
+
print("\\n๐ Integration Matrix:")
|
|
478
|
+
matrix = self.project.get_integration_matrix()
|
|
479
|
+
|
|
480
|
+
print(" Module Integrations:")
|
|
481
|
+
for module_name, module_info in matrix["modules"].items():
|
|
482
|
+
integrates_with = module_info.get("integrates_with", [])
|
|
483
|
+
print(
|
|
484
|
+
f" ๐ฆ {module_name}: connects to {', '.join(integrates_with) if integrates_with else 'standalone'}"
|
|
485
|
+
)
|
|
486
|
+
|
|
487
|
+
print("\\n Workflows:")
|
|
488
|
+
for workflow_name, workflow_steps in matrix["workflows"].items():
|
|
489
|
+
print(f" ๐ {workflow_name.replace('_', ' ').title()}: {len(workflow_steps)} steps")
|
|
490
|
+
|
|
491
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
492
|
+
|
|
493
|
+
def demo_convenience_functions(self):
|
|
494
|
+
"""Demonstrate convenience functions."""
|
|
495
|
+
print("โก Demo 8: Convenience Functions")
|
|
496
|
+
print("-" * 31)
|
|
497
|
+
|
|
498
|
+
# Test convenience functions
|
|
499
|
+
import shutil
|
|
500
|
+
|
|
501
|
+
# Create another temporary project for convenience function testing
|
|
502
|
+
convenience_dir = Path(tempfile.mkdtemp(prefix="moai_convenience_"))
|
|
503
|
+
|
|
504
|
+
try:
|
|
505
|
+
print("๐ง Testing initialize_project() convenience function...")
|
|
506
|
+
start_time = time.time()
|
|
507
|
+
|
|
508
|
+
init_result = initialize_project(
|
|
509
|
+
str(convenience_dir),
|
|
510
|
+
language="ja",
|
|
511
|
+
user_name="ๅฉไพฟๆงใในใ",
|
|
512
|
+
project_type="mobile_application",
|
|
513
|
+
)
|
|
514
|
+
|
|
515
|
+
init_time = time.time() - start_time
|
|
516
|
+
|
|
517
|
+
if init_result["success"]:
|
|
518
|
+
print(f"โ
Convenience initialization completed in {init_time:.2f} seconds")
|
|
519
|
+
print(f"๐ฆ Modules: {', '.join(init_result['modules_initialized'])}")
|
|
520
|
+
|
|
521
|
+
# Test documentation generation convenience function
|
|
522
|
+
print("\\n๐ Testing generate_docs() convenience function...")
|
|
523
|
+
test_spec = {
|
|
524
|
+
"id": "CONVENIENCE-SPEC",
|
|
525
|
+
"title": "Convenience Function Test",
|
|
526
|
+
"description": "Testing convenience functions",
|
|
527
|
+
"requirements": ["Requirement 1", "Requirement 2"],
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
docs_result = generate_docs(test_spec, str(convenience_dir))
|
|
531
|
+
|
|
532
|
+
if docs_result["success"]:
|
|
533
|
+
print("โ
Convenience documentation generation successful")
|
|
534
|
+
|
|
535
|
+
# Test template optimization convenience function
|
|
536
|
+
print("\\nโก Testing optimize_templates() convenience function...")
|
|
537
|
+
|
|
538
|
+
opt_result = optimize_templates(str(convenience_dir))
|
|
539
|
+
|
|
540
|
+
if "analysis" in opt_result:
|
|
541
|
+
print("โ
Convenience template optimization successful")
|
|
542
|
+
|
|
543
|
+
finally:
|
|
544
|
+
# Clean up convenience test directory
|
|
545
|
+
shutil.rmtree(convenience_dir, ignore_errors=True)
|
|
546
|
+
|
|
547
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
548
|
+
|
|
549
|
+
def show_performance_summary(self):
|
|
550
|
+
"""Show performance summary of all operations."""
|
|
551
|
+
print("๐ Performance Summary")
|
|
552
|
+
print("-" * 20)
|
|
553
|
+
|
|
554
|
+
total_operations_time = 0
|
|
555
|
+
|
|
556
|
+
for operation, metrics in self.results.items():
|
|
557
|
+
if isinstance(metrics, dict) and "duration" in metrics:
|
|
558
|
+
duration = metrics["duration"]
|
|
559
|
+
total_operations_time += duration
|
|
560
|
+
print(f" โฑ๏ธ {operation.replace('_', ' ').title()}: {duration:.2f}s")
|
|
561
|
+
|
|
562
|
+
print(f"\\n๐ Total operation time: {total_operations_time:.2f} seconds")
|
|
563
|
+
|
|
564
|
+
# Show key metrics
|
|
565
|
+
print("\\n๐ Key Metrics:")
|
|
566
|
+
if "initialization" in self.results:
|
|
567
|
+
init = self.results["initialization"]
|
|
568
|
+
print(f" ๐ฆ Modules initialized: {init['modules_initialized']}")
|
|
569
|
+
print(f" ๐ Files created: {init['created_files']}")
|
|
570
|
+
|
|
571
|
+
if "documentation_generation" in self.results:
|
|
572
|
+
docs = self.results["documentation_generation"]
|
|
573
|
+
print(f" ๐ Feature docs: {'โ
' if docs['feature_docs_generated'] else 'โ'}")
|
|
574
|
+
print(f" ๐ API docs: {'โ
' if docs['api_docs_generated'] else 'โ'}")
|
|
575
|
+
|
|
576
|
+
if "template_optimization" in self.results:
|
|
577
|
+
opt = self.results["template_optimization"]
|
|
578
|
+
print(f" ๐ Templates analyzed: {opt['files_analyzed']}")
|
|
579
|
+
print(f" โก Optimizations applied: {'โ
' if opt['optimizations_applied'] else 'โ'}")
|
|
580
|
+
|
|
581
|
+
if "backup_creation" in self.results:
|
|
582
|
+
backup = self.results["backup_creation"]
|
|
583
|
+
print(f" ๐พ Backup created: {backup['backup_name']}")
|
|
584
|
+
|
|
585
|
+
print("\\n" + "=" * 50 + "\\n")
|
|
586
|
+
|
|
587
|
+
def cleanup_demo_environment(self):
|
|
588
|
+
"""Clean up the demonstration environment."""
|
|
589
|
+
print("๐งน Cleaning up demo environment...")
|
|
590
|
+
|
|
591
|
+
import shutil
|
|
592
|
+
|
|
593
|
+
if self.demo_project_dir and self.demo_project_dir.exists():
|
|
594
|
+
shutil.rmtree(self.demo_project_dir, ignore_errors=True)
|
|
595
|
+
print(f"๐๏ธ Removed demo directory: {self.demo_project_dir}")
|
|
596
|
+
|
|
597
|
+
print("โ
Cleanup complete")
|
|
598
|
+
print("\\n๐ Demo completed successfully!")
|
|
599
|
+
print("\\n๐ Summary:")
|
|
600
|
+
print(" โ
All modules initialized successfully")
|
|
601
|
+
print(" โ
Documentation generated from SPEC")
|
|
602
|
+
print(" โ
Language localization demonstrated")
|
|
603
|
+
print(" โ
Template optimization applied")
|
|
604
|
+
print(" โ
Backup and recovery tested")
|
|
605
|
+
print(" โ
Export functionality verified")
|
|
606
|
+
print(" โ
Project status reporting complete")
|
|
607
|
+
print(" โ
Convenience functions working")
|
|
608
|
+
print("\\n๐ MoAI Menu Project system is fully functional!")
|
|
609
|
+
|
|
610
|
+
def run_complete_demo(self):
|
|
611
|
+
"""Run the complete demonstration workflow."""
|
|
612
|
+
print("๐ฌ MoAI Menu Project - Complete Workflow Demo")
|
|
613
|
+
print("=" * 50)
|
|
614
|
+
print("This demo showcases all features of the integrated")
|
|
615
|
+
print("project management system including documentation,")
|
|
616
|
+
print("language localization, and template optimization.")
|
|
617
|
+
print("=" * 50 + "\\n")
|
|
618
|
+
|
|
619
|
+
try:
|
|
620
|
+
# Run all demonstration phases
|
|
621
|
+
self.setup_demo_environment()
|
|
622
|
+
self.demo_project_initialization()
|
|
623
|
+
self.demo_spec_documentation_generation()
|
|
624
|
+
self.demo_language_localization()
|
|
625
|
+
self.demo_template_optimization()
|
|
626
|
+
self.demo_backup_and_recovery()
|
|
627
|
+
self.demo_export_functionality()
|
|
628
|
+
self.demo_project_status()
|
|
629
|
+
self.demo_convenience_functions()
|
|
630
|
+
self.show_performance_summary()
|
|
631
|
+
|
|
632
|
+
except Exception as e:
|
|
633
|
+
print(f"โ Demo failed with error: {e}")
|
|
634
|
+
import traceback
|
|
635
|
+
|
|
636
|
+
traceback.print_exc()
|
|
637
|
+
|
|
638
|
+
finally:
|
|
639
|
+
# Always clean up
|
|
640
|
+
self.cleanup_demo_environment()
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
def main():
|
|
644
|
+
"""Main function to run the demonstration."""
|
|
645
|
+
print("๐ Starting MoAI Menu Project Complete Workflow Demo...")
|
|
646
|
+
print()
|
|
647
|
+
|
|
648
|
+
# Check if we're in the right directory
|
|
649
|
+
skill_dir = Path(__file__).parent.parent
|
|
650
|
+
if not (skill_dir / "SKILL.md").exists():
|
|
651
|
+
print(f"โ Error: SKILL.md not found in {skill_dir}")
|
|
652
|
+
print("Make sure you're running this from the correct directory")
|
|
653
|
+
return 1
|
|
654
|
+
|
|
655
|
+
# Run the demonstration
|
|
656
|
+
demo_runner = DemoRunner()
|
|
657
|
+
demo_runner.run_complete_demo()
|
|
658
|
+
|
|
659
|
+
return 0
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
if __name__ == "__main__":
|
|
663
|
+
sys.exit(main())
|