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.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info โ†’ moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info โ†’ moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {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())