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,97 @@
1
+ {
2
+ "id": "project-batch-questions",
3
+ "title": "Project Batch Questions Configuration",
4
+ "description": "Configure project-specific question batches and templates",
5
+ "questions": [
6
+ {
7
+ "id": "batch_questions.enable",
8
+ "text": "Enable batch question processing for this project?",
9
+ "type": "boolean",
10
+ "required": true,
11
+ "default_value": true,
12
+ "description": "Allow collecting multiple questions in batches for better workflow"
13
+ },
14
+ {
15
+ "id": "batch_questions.template_directory",
16
+ "text": "Where should question templates be stored?",
17
+ "type": "single_choice",
18
+ "required": true,
19
+ "default_value": ".moai/templates/questions",
20
+ "options": [
21
+ {
22
+ "label": "Default (.moai/templates/questions)",
23
+ "value": ".moai/templates/questions",
24
+ "description": "Standard MoAI template location"
25
+ },
26
+ {
27
+ "label": "Project root (.questions)",
28
+ "value": ".questions",
29
+ "description": "Project root directory"
30
+ },
31
+ {
32
+ "label": "Custom location",
33
+ "value": "custom",
34
+ "description": "Specify custom directory path"
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "id": "batch_questions.custom_path",
40
+ "text": "Enter custom template directory path:",
41
+ "type": "text_input",
42
+ "required": false,
43
+ "conditional_on": {
44
+ "batch_questions.template_directory": "custom"
45
+ },
46
+ "validation": {
47
+ "rules": ["min_length"],
48
+ "parameters": {"min_length": 1}
49
+ }
50
+ },
51
+ {
52
+ "id": "batch_questions.auto_save",
53
+ "text": "Automatically save question responses?",
54
+ "type": "boolean",
55
+ "required": true,
56
+ "default_value": true,
57
+ "description": "Save responses to .moai/responses/ for future reference"
58
+ },
59
+ {
60
+ "id": "batch_questions.validation_level",
61
+ "text": "What level of response validation should be applied?",
62
+ "type": "single_choice",
63
+ "required": true,
64
+ "default_value": "standard",
65
+ "options": [
66
+ {
67
+ "label": "Basic (required fields only)",
68
+ "value": "basic",
69
+ "description": "Only validate required fields are present"
70
+ },
71
+ {
72
+ "label": "Standard (type and format validation)",
73
+ "value": "standard",
74
+ "description": "Validate field types and basic formats"
75
+ },
76
+ {
77
+ "label": "Strict (custom validation rules)",
78
+ "value": "strict",
79
+ "description": "Apply comprehensive validation including custom rules"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "id": "batch_questions.conditional_logic",
85
+ "text": "Enable conditional question logic?",
86
+ "type": "boolean",
87
+ "required": true,
88
+ "default_value": true,
89
+ "description": "Show/hide questions based on previous answers"
90
+ }
91
+ ],
92
+ "metadata": {
93
+ "skill": "moai-project-batch-questions",
94
+ "category": "project_configuration",
95
+ "version": "1.0.0"
96
+ }
97
+ }
@@ -0,0 +1,150 @@
1
+ {
2
+ "id": "spec-workflow-setup",
3
+ "title": "SPEC Workflow Configuration",
4
+ "description": "Configure specification-driven development workflow preferences",
5
+ "questions": [
6
+ {
7
+ "id": "spec_workflow.auto_generate",
8
+ "text": "Enable automatic SPEC generation for new features?",
9
+ "type": "boolean",
10
+ "required": true,
11
+ "default_value": true,
12
+ "description": "Automatically create SPEC documents when starting new features"
13
+ },
14
+ {
15
+ "id": "spec_workflow.template_style",
16
+ "text": "Choose SPEC template style:",
17
+ "type": "single_choice",
18
+ "required": true,
19
+ "default_value": "ears",
20
+ "options": [
21
+ {
22
+ "label": "EARS Format (Easy Approach to Requirements Syntax)",
23
+ "value": "ears",
24
+ "description": "Structured requirements format with clear syntax"
25
+ },
26
+ {
27
+ "label": "User Story Format",
28
+ "value": "user_story",
29
+ "description": "Agile user story format with acceptance criteria"
30
+ },
31
+ {
32
+ "label": "Technical Specification",
33
+ "value": "technical",
34
+ "description": "Detailed technical specification format"
35
+ },
36
+ {
37
+ "label": "Minimal",
38
+ "value": "minimal",
39
+ "description": "Lightweight specification format"
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "id": "spec_workflow.review_process",
45
+ "text": "Enable SPEC review process?",
46
+ "type": "boolean",
47
+ "required": true,
48
+ "default_value": true,
49
+ "description": "Require review and approval before implementation"
50
+ },
51
+ {
52
+ "id": "spec_workflow.reviewers",
53
+ "text": "Who should review SPECs?",
54
+ "type": "multi_choice",
55
+ "required": true,
56
+ "default_value": ["tech_lead"],
57
+ "conditional_on": {
58
+ "spec_workflow.review_process": true
59
+ },
60
+ "options": [
61
+ {
62
+ "label": "Technical Lead",
63
+ "value": "tech_lead",
64
+ "description": "Senior technical team member"
65
+ },
66
+ {
67
+ "label": "Product Manager",
68
+ "value": "product_manager",
69
+ "description": "Product owner or manager"
70
+ },
71
+ {
72
+ "label": "Security Expert",
73
+ "value": "security_expert",
74
+ "description": "Security team member or expert"
75
+ },
76
+ {
77
+ "label": "UX Designer",
78
+ "value": "ux_designer",
79
+ "description": "User experience designer"
80
+ },
81
+ {
82
+ "label": "Peer Developer",
83
+ "value": "peer_developer",
84
+ "description": "Fellow developer team member"
85
+ },
86
+ {
87
+ "label": "Auto-approve",
88
+ "value": "auto_approve",
89
+ "description": "No manual review required"
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "id": "spec_workflow.tracking",
95
+ "text": "Enable SPEC progress tracking?",
96
+ "type": "boolean",
97
+ "required": true,
98
+ "default_value": true,
99
+ "description": "Track SPEC status through implementation lifecycle"
100
+ },
101
+ {
102
+ "id": "spec_workflow.integration",
103
+ "text": "Integrate SPECs with development workflow:",
104
+ "type": "multi_choice",
105
+ "required": true,
106
+ "default_value": ["git_branches", "issue_tracking"],
107
+ "options": [
108
+ {
109
+ "label": "Git Branches",
110
+ "value": "git_branches",
111
+ "description": "Create branches based on SPEC IDs"
112
+ },
113
+ {
114
+ "label": "Issue Tracking",
115
+ "value": "issue_tracking",
116
+ "description": "Link SPECs to issue tracker tickets"
117
+ },
118
+ {
119
+ "label": "CI/CD Pipeline",
120
+ "value": "cicd",
121
+ "description": "Include SPEC validation in pipeline"
122
+ },
123
+ {
124
+ "label": "Documentation",
125
+ "value": "documentation",
126
+ "description": "Auto-generate documentation from SPECs"
127
+ }
128
+ ]
129
+ },
130
+ {
131
+ "id": "spec_workflow.approval_threshold",
132
+ "text": "Number of approvals required for SPEC:",
133
+ "type": "number_input",
134
+ "required": true,
135
+ "default_value": 1,
136
+ "conditional_on": {
137
+ "spec_workflow.review_process": true
138
+ },
139
+ "validation": {
140
+ "rules": ["min_value", "max_value"],
141
+ "parameters": {"min_value": 1, "max_value": 5}
142
+ }
143
+ }
144
+ ],
145
+ "metadata": {
146
+ "skill": "moai-spec-intelligent-workflow",
147
+ "category": "workflow_configuration",
148
+ "version": "1.0.0"
149
+ }
150
+ }
@@ -0,0 +1,436 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Simple Integration Test for moai-menu-project
4
+
5
+ Tests the core functionality without complex imports.
6
+ """
7
+
8
+ import sys
9
+ import tempfile
10
+ from pathlib import Path
11
+
12
+ # Add modules to path
13
+ sys.path.insert(0, "modules")
14
+
15
+ # Import individual modules
16
+ import documentation_manager
17
+ import language_initializer
18
+ import template_optimizer
19
+
20
+
21
+ def test_individual_modules():
22
+ """Test each module individually."""
23
+ print("🧪 Testing Individual Modules")
24
+ print("=" * 40)
25
+
26
+ # Create temporary directory
27
+ test_dir = Path(tempfile.mkdtemp())
28
+ print(f"📁 Test directory: {test_dir}")
29
+
30
+ # Test configuration
31
+ config = {
32
+ "project": {"name": "Test Project", "type": "web_application"},
33
+ "language": {"conversation_language": "en", "documentation_language": "en"},
34
+ }
35
+
36
+ results = {}
37
+
38
+ # Test DocumentationManager
39
+ print("\\n📚 Testing DocumentationManager...")
40
+ try:
41
+ doc_manager = documentation_manager.DocumentationManager(str(test_dir), config)
42
+
43
+ # Test initialization
44
+ init_result = doc_manager.initialize_documentation_structure()
45
+ results["documentation_manager"] = {
46
+ "success": init_result["success"],
47
+ "created_files": len(init_result.get("created_files", [])),
48
+ }
49
+
50
+ # Test SPEC documentation generation
51
+ spec_data = {
52
+ "id": "TEST-SPEC-001",
53
+ "title": "Test Feature",
54
+ "description": "Test feature implementation",
55
+ "requirements": ["Requirement 1", "Requirement 2"],
56
+ "api_endpoints": [{"path": "/api/test", "method": "POST", "description": "Test endpoint"}],
57
+ }
58
+
59
+ docs_result = doc_manager.generate_documentation_from_spec(spec_data)
60
+ results["documentation_manager"]["spec_generation"] = docs_result["success"]
61
+
62
+ print(f"✅ DocumentationManager: {init_result['success']}")
63
+ print(f" 📄 Files created: {len(init_result.get('created_files', []))}")
64
+ print(f" 📝 SPEC generation: {docs_result['success']}")
65
+
66
+ except Exception as e:
67
+ print(f"❌ DocumentationManager error: {e}")
68
+ results["documentation_manager"] = {"success": False, "error": str(e)}
69
+
70
+ # Test LanguageInitializer
71
+ print("\\n🌐 Testing LanguageInitializer...")
72
+ try:
73
+ lang_init = language_initializer.LanguageInitializer(str(test_dir), config)
74
+
75
+ # Test language detection
76
+ detected_lang = lang_init.detect_project_language()
77
+
78
+ # Test language configuration
79
+ lang_result = lang_init.initialize_language_configuration(
80
+ language="ko", user_name="테스트 사용자", domains=["backend", "frontend"]
81
+ )
82
+
83
+ # Test multilingual structure
84
+ multilingual_result = lang_init.create_multilingual_documentation_structure("ko")
85
+
86
+ results["language_initializer"] = {
87
+ "success": lang_result["success"],
88
+ "detected_language": detected_lang,
89
+ "multilingual_created": multilingual_result["success"],
90
+ }
91
+
92
+ print(f"✅ LanguageInitializer: {lang_result['success']}")
93
+ print(f" 💬 Detected language: {detected_lang}")
94
+ print(f" 🌍 Multilingual structure: {multilingual_result['success']}")
95
+
96
+ except Exception as e:
97
+ print(f"❌ LanguageInitializer error: {e}")
98
+ results["language_initializer"] = {"success": False, "error": str(e)}
99
+
100
+ # Test TemplateOptimizer
101
+ print("\\n⚡ Testing TemplateOptimizer...")
102
+ try:
103
+ # Create test templates
104
+ templates_dir = test_dir / "templates"
105
+ templates_dir.mkdir(exist_ok=True)
106
+
107
+ test_template = """
108
+ # Test Template
109
+
110
+ This template contains redundant content.
111
+
112
+ ## Section 1
113
+
114
+ Content here...
115
+
116
+ ## Section 1 # Duplicate
117
+
118
+ Duplicate content here...
119
+
120
+ Extra whitespace:
121
+
122
+ Complex logic:
123
+ {% if condition %}
124
+ {% if nested_condition %}
125
+ Content
126
+ {% endif %}
127
+ {% endif %}
128
+ """
129
+
130
+ (templates_dir / "test_template.md").write_text(test_template, encoding="utf-8")
131
+
132
+ template_opt = template_optimizer.TemplateOptimizer(str(test_dir), config)
133
+
134
+ # Test template analysis
135
+ analysis = template_opt.analyze_project_templates()
136
+
137
+ # Test optimization
138
+ optimization_result = template_opt.create_optimized_templates({"backup_first": True})
139
+
140
+ # Test benchmarking
141
+ benchmark_result = template_opt.benchmark_template_performance()
142
+
143
+ results["template_optimizer"] = {
144
+ "success": analysis["success"],
145
+ "files_analyzed": len(analysis.get("analyzed_files", [])),
146
+ "optimization_applied": optimization_result.get("success", False),
147
+ "benchmark_completed": benchmark_result.get("success", False),
148
+ }
149
+
150
+ print(f"✅ TemplateOptimizer: {analysis['success']}")
151
+ print(f" 📁 Files analyzed: {len(analysis.get('analyzed_files', []))}")
152
+ print(f" ⚡ Optimization applied: {optimization_result.get('success', False)}")
153
+ print(f" 🏃 Benchmark completed: {benchmark_result.get('success', False)}")
154
+
155
+ except Exception as e:
156
+ print(f"❌ TemplateOptimizer error: {e}")
157
+ results["template_optimizer"] = {"success": False, "error": str(e)}
158
+
159
+ # Cleanup
160
+ import shutil
161
+
162
+ shutil.rmtree(test_dir, ignore_errors=True)
163
+
164
+ return results
165
+
166
+
167
+ def test_module_integration():
168
+ """Test integration between modules."""
169
+ print("\\n🔗 Testing Module Integration")
170
+ print("=" * 40)
171
+
172
+ # Create temporary directory
173
+ test_dir = Path(tempfile.mkdtemp())
174
+
175
+ try:
176
+ # Initialize all three modules with same config
177
+ config = {
178
+ "project": {"name": "Integration Test Project", "type": "web_application"},
179
+ "language": {"conversation_language": "ko", "documentation_language": "ko"},
180
+ }
181
+
182
+ # Initialize modules
183
+ doc_manager = documentation_manager.DocumentationManager(str(test_dir), config)
184
+ lang_init = language_initializer.LanguageInitializer(str(test_dir), config)
185
+ template_opt = template_optimizer.TemplateOptimizer(str(test_dir), config)
186
+
187
+ print("✅ All modules initialized successfully")
188
+
189
+ # Test 1: Language + Documentation integration
190
+ print("\\n🌐📚 Testing Language + Documentation integration...")
191
+
192
+ # Set up language configuration
193
+ lang_result = lang_init.initialize_language_configuration(
194
+ language="ko", user_name="통합 테스트", domains=["backend"]
195
+ )
196
+
197
+ # Create documentation structure
198
+ doc_result = doc_manager.initialize_documentation_structure()
199
+
200
+ # Test multilingual documentation
201
+ multilingual_result = lang_init.create_multilingual_documentation_structure("ko")
202
+
203
+ integration_success = all(
204
+ [
205
+ lang_result["success"],
206
+ doc_result["success"],
207
+ multilingual_result["success"],
208
+ ]
209
+ )
210
+
211
+ print(f"✅ Language + Documentation integration: {integration_success}")
212
+
213
+ # Test 2: Template + Documentation integration
214
+ print("\\n⚡📚 Testing Template + Documentation integration...")
215
+
216
+ # Create test templates
217
+ templates_dir = test_dir / "templates"
218
+ templates_dir.mkdir(exist_ok=True)
219
+
220
+ (templates_dir / "docs_template.md").write_text(
221
+ "# Documentation Template\\n\\nContent here...", encoding="utf-8"
222
+ )
223
+
224
+ # Analyze templates
225
+ analysis = template_opt.analyze_project_templates()
226
+
227
+ # Generate documentation using templates
228
+ spec_data = {
229
+ "id": "INTEGRATION-SPEC",
230
+ "title": "통합 테스트 기능",
231
+ "description": "모듈 통합 테스트",
232
+ "requirements": ["요구사항 1", "요구사항 2"],
233
+ }
234
+
235
+ docs_from_spec = doc_manager.generate_documentation_from_spec(spec_data)
236
+
237
+ template_doc_success = analysis["success"] and docs_from_spec["success"]
238
+
239
+ print(f"✅ Template + Documentation integration: {template_doc_success}")
240
+
241
+ # Test 3: All modules together
242
+ print("\\n🔧🌐📚 Testing all modules together...")
243
+
244
+ # Complete workflow
245
+ workflow_success = True
246
+
247
+ # 1. Language setup
248
+ lang_result = lang_init.initialize_language_configuration(language="ja")
249
+ workflow_success &= lang_result["success"]
250
+
251
+ # 2. Documentation initialization
252
+ doc_result = doc_manager.initialize_documentation_structure()
253
+ workflow_success &= doc_result["success"]
254
+
255
+ # 3. Template analysis
256
+ analysis = template_opt.analyze_project_templates()
257
+ workflow_success &= analysis["success"]
258
+
259
+ print(f"✅ Complete workflow: {workflow_success}")
260
+
261
+ return {
262
+ "language_docs_integration": integration_success,
263
+ "template_docs_integration": template_doc_success,
264
+ "complete_workflow": workflow_success,
265
+ }
266
+
267
+ except Exception as e:
268
+ print(f"❌ Integration test error: {e}")
269
+ import traceback
270
+
271
+ traceback.print_exc()
272
+ return {"success": False, "error": str(e)}
273
+
274
+ finally:
275
+ # Cleanup
276
+ import shutil
277
+
278
+ shutil.rmtree(test_dir, ignore_errors=True)
279
+
280
+
281
+ def test_performance():
282
+ """Test performance characteristics."""
283
+ print("\\n📈 Performance Testing")
284
+ print("=" * 30)
285
+
286
+ import time
287
+
288
+ # Create temporary directory
289
+ test_dir = Path(tempfile.mkdtemp())
290
+
291
+ try:
292
+ config = {
293
+ "project": {"name": "Performance Test", "type": "web_application"},
294
+ "language": {"conversation_language": "en"},
295
+ }
296
+
297
+ performance_results = {}
298
+
299
+ # Test module initialization time
300
+ start_time = time.time()
301
+
302
+ doc_manager = documentation_manager.DocumentationManager(str(test_dir), config)
303
+ lang_init = language_initializer.LanguageInitializer(str(test_dir), config)
304
+ template_opt = template_optimizer.TemplateOptimizer(str(test_dir), config)
305
+
306
+ init_time = time.time() - start_time
307
+ performance_results["module_initialization"] = init_time
308
+
309
+ print(f"⏱️ Module initialization: {init_time:.3f}s")
310
+
311
+ # Test documentation generation time
312
+ start_time = time.time()
313
+
314
+ doc_manager.initialize_documentation_structure()
315
+
316
+ doc_time = time.time() - start_time
317
+ performance_results["documentation_generation"] = doc_time
318
+
319
+ print(f"⏱️ Documentation generation: {doc_time:.3f}s")
320
+
321
+ # Test language detection time
322
+ start_time = time.time()
323
+
324
+ # Create some test files
325
+ (test_dir / "test.py").write_text(
326
+ "# Korean comments\\ndef calculate():\\n # 계산 함수\\n return 100",
327
+ encoding="utf-8",
328
+ )
329
+
330
+ lang_init.detect_project_language()
331
+
332
+ lang_time = time.time() - start_time
333
+ performance_results["language_detection"] = lang_time
334
+
335
+ print(f"⏱️ Language detection: {lang_time:.3f}s")
336
+
337
+ # Test template analysis time
338
+ templates_dir = test_dir / "templates"
339
+ templates_dir.mkdir(exist_ok=True)
340
+
341
+ # Create multiple test templates
342
+ for i in range(5):
343
+ (templates_dir / f"template_{i}.md").write_text(
344
+ f"# Template {i}\\n\\nContent for template {i}.", encoding="utf-8"
345
+ )
346
+
347
+ start_time = time.time()
348
+
349
+ template_opt.analyze_project_templates()
350
+
351
+ template_time = time.time() - start_time
352
+ performance_results["template_analysis"] = template_time
353
+
354
+ print(f"⏱️ Template analysis (5 files): {template_time:.3f}s")
355
+
356
+ # Performance benchmarks
357
+ print("\\n📊 Performance Benchmarks:")
358
+ print(f" Module initialization (<1s): {'✅' if init_time < 1.0 else '❌'}")
359
+ print(f" Documentation generation (<3s): {'✅' if doc_time < 3.0 else '❌'}")
360
+ print(f" Language detection (<0.5s): {'✅' if lang_time < 0.5 else '❌'}")
361
+ print(f" Template analysis (<2s): {'✅' if template_time < 2.0 else '❌'}")
362
+
363
+ total_time = sum(performance_results.values())
364
+ print(f"\\n🕐 Total time: {total_time:.3f}s")
365
+
366
+ return performance_results
367
+
368
+ finally:
369
+ # Cleanup
370
+ import shutil
371
+
372
+ shutil.rmtree(test_dir, ignore_errors=True)
373
+
374
+
375
+ def main():
376
+ """Run all integration tests."""
377
+ print("🧪 MoAI Menu Project - Integration Test Suite")
378
+ print("=" * 50)
379
+ print("Testing core functionality and module integration")
380
+ print("=" * 50)
381
+
382
+ try:
383
+ # Run individual module tests
384
+ module_results = test_individual_modules()
385
+
386
+ # Run integration tests
387
+ integration_results = test_module_integration()
388
+
389
+ # Run performance tests
390
+ performance_results = test_performance()
391
+
392
+ # Summary
393
+ print("\\n🎉 Test Summary")
394
+ print("=" * 20)
395
+
396
+ # Module success rates
397
+ total_modules = len(module_results)
398
+ successful_modules = sum(1 for result in module_results.values() if result.get("success", False))
399
+
400
+ print(f"📦 Modules: {successful_modules}/{total_modules} successful")
401
+
402
+ # Integration success rates
403
+ total_integrations = len(integration_results)
404
+ successful_integrations = sum(1 for result in integration_results.values() if result is True)
405
+
406
+ print(f"🔗 Integrations: {successful_integrations}/{total_integrations} successful")
407
+
408
+ # Performance summary
409
+ avg_time = sum(performance_results.values()) / len(performance_results)
410
+ print(f"📈 Average operation time: {avg_time:.3f}s")
411
+
412
+ # Overall assessment
413
+ overall_success = successful_modules == total_modules and successful_integrations == total_integrations
414
+
415
+ print(f"\\n🎯 Overall Result: {'✅ SUCCESS' if overall_success else '❌ ISSUES DETECTED'}")
416
+
417
+ if overall_success:
418
+ print("\\n🚀 MoAI Menu Project system is fully functional!")
419
+ print("✅ All modules working correctly")
420
+ print("✅ Module integration successful")
421
+ print("✅ Performance within acceptable limits")
422
+ else:
423
+ print("\\n⚠️ Some issues detected - review test results")
424
+
425
+ return 0 if overall_success else 1
426
+
427
+ except Exception as e:
428
+ print(f"\\n❌ Test suite failed with error: {e}")
429
+ import traceback
430
+
431
+ traceback.print_exc()
432
+ return 1
433
+
434
+
435
+ if __name__ == "__main__":
436
+ sys.exit(main())