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
@@ -1,6 +1,5 @@
1
- # type: ignore
2
1
  """
3
- Enhanced Version reader for MoAI-ADK from config.json with performance optimizations
2
+ Enhanced Version reader for MoAI-ADK from config.yaml with performance optimizations
4
3
 
5
4
  Refactored for improved performance, error handling, configurability, and caching strategies
6
5
  """
@@ -8,6 +7,7 @@ Refactored for improved performance, error handling, configurability, and cachin
8
7
  import asyncio
9
8
  import json
10
9
  import logging
10
+ import os
11
11
  import re
12
12
  import time
13
13
  from dataclasses import dataclass, field
@@ -16,6 +16,8 @@ from enum import Enum
16
16
  from pathlib import Path
17
17
  from typing import Any, Dict, List, Optional
18
18
 
19
+ import yaml
20
+
19
21
  logger = logging.getLogger(__name__)
20
22
 
21
23
 
@@ -70,12 +72,13 @@ class VersionConfig:
70
72
  track_performance_metrics: bool = True
71
73
 
72
74
  # Version field priority configuration
75
+ # Order: 1) MoAI package version, 2) Project version, 3) Fallbacks
73
76
  version_fields: List[str] = field(
74
77
  default_factory=lambda: [
75
- "project.version",
76
- "moai.version",
77
- "version",
78
- "moai.template_version",
78
+ "moai.version", # ← 1st priority: MoAI-ADK version
79
+ "project.version", # ← 2nd priority: Project version
80
+ "version", # ← 3rd priority: General version
81
+ "project.template_version", # ← 4th priority: Template version
79
82
  "template_version",
80
83
  ]
81
84
  )
@@ -101,27 +104,41 @@ class VersionReader:
101
104
  DEFAULT_CONFIG = VersionConfig()
102
105
 
103
106
  # Supported version fields in order of priority
107
+ # Order: 1) MoAI package version, 2) Project version, 3) Fallbacks
104
108
  DEFAULT_VERSION_FIELDS = [
105
- "project.version",
106
- "moai.version",
107
- "version",
108
- "moai.template_version",
109
+ "moai.version", # ← 1st priority: MoAI-ADK version
110
+ "project.version", # ← 2nd priority: Project version
111
+ "version", # ← 3rd priority: General version
112
+ "project.template_version", # ← 4th priority: Template version
109
113
  "template_version",
110
114
  ]
111
115
 
112
- def __init__(self, config: Optional[VersionConfig] = None):
116
+ def __init__(self, config: Optional[VersionConfig] = None, working_dir: Optional[Path] = None):
113
117
  """
114
118
  Initialize version reader with enhanced configuration.
115
119
 
116
120
  Args:
117
121
  config: Version configuration object. If None, uses defaults.
122
+ working_dir: Working directory to search for config. If None, uses environment detection.
118
123
  """
119
124
  self.config = config or self.DEFAULT_CONFIG
120
- self._config_path = Path.cwd() / ".moai" / "config" / "config.json"
125
+
126
+ # Determine working directory with priority:
127
+ # 1. Explicit working_dir parameter
128
+ # 2. CLAUDE_PROJECT_DIR environment variable (set by Claude Code)
129
+ # 3. Current working directory
130
+ if working_dir:
131
+ base_dir = Path(working_dir)
132
+ elif "CLAUDE_PROJECT_DIR" in os.environ:
133
+ base_dir = Path(os.environ["CLAUDE_PROJECT_DIR"])
134
+ else:
135
+ base_dir = Path.cwd()
136
+
137
+ self._config_path = base_dir / ".moai" / "config" / "config.yaml"
121
138
 
122
139
  # Enhanced caching with LRU support
123
140
  self._cache: Dict[str, CacheEntry] = {}
124
- self._cache_stats = {
141
+ self._cache_stats: Dict[str, Any] = {
125
142
  "hits": 0,
126
143
  "misses": 0,
127
144
  "errors": 0,
@@ -133,7 +150,7 @@ class VersionReader:
133
150
  }
134
151
 
135
152
  # Performance tracking
136
- self._performance_metrics = {
153
+ self._performance_metrics: Dict[str, List[float]] = {
137
154
  "read_times": [],
138
155
  "validation_times": [],
139
156
  "cache_operation_times": [],
@@ -160,16 +177,23 @@ class VersionReader:
160
177
  if self.config.debug_mode:
161
178
  self._logger.info(f"VersionReader initialized with config: {self.config}")
162
179
 
163
- def get_version(self) -> str:
180
+ def get_version(self, force_refresh: bool = False) -> str:
164
181
  """
165
182
  Get MoAI-ADK version from config with enhanced caching.
166
183
 
184
+ Args:
185
+ force_refresh: If True, bypass cache and force fresh read
186
+
167
187
  Returns:
168
188
  Version string (e.g., "0.20.1" or "v0.20.1")
169
189
 
170
190
  Raises:
171
191
  VersionReadError: If version cannot be determined after fallbacks
172
192
  """
193
+ # Check if we need to force refresh
194
+ if force_refresh:
195
+ self.clear_cache()
196
+
173
197
  if self.config.enable_async:
174
198
  return asyncio.run(self.get_version_async())
175
199
  else:
@@ -179,6 +203,8 @@ class VersionReader:
179
203
  """
180
204
  Synchronous version getter for performance-critical paths.
181
205
 
206
+ Priority: installed package version > config file version > fallback
207
+
182
208
  Returns:
183
209
  Version string
184
210
  """
@@ -189,12 +215,17 @@ class VersionReader:
189
215
  version = self._check_cache()
190
216
  if version is not None:
191
217
  self._cache_stats["hits"] += 1
192
- self._cache_stats["cache_hits_by_source"][
193
- VersionSource.CACHE.value
194
- ] += 1
218
+ self._cache_stats["cache_hits_by_source"][VersionSource.CACHE.value] += 1
219
+ return version
220
+
221
+ # Priority 1: Try installed package version first (most accurate)
222
+ version = self._get_package_version()
223
+ if version:
224
+ self._update_cache(version, VersionSource.CONFIG_FILE)
225
+ self._cache_stats["misses"] += 1
195
226
  return version
196
227
 
197
- # Read from config file
228
+ # Priority 2: Read from config file
198
229
  version = self._read_version_from_config_sync()
199
230
  if not version:
200
231
  version = self._get_fallback_version()
@@ -213,6 +244,8 @@ class VersionReader:
213
244
  """
214
245
  Async version getter for better performance.
215
246
 
247
+ Priority: installed package version > config file version > fallback
248
+
216
249
  Returns:
217
250
  Version string
218
251
  """
@@ -223,12 +256,17 @@ class VersionReader:
223
256
  version = self._check_cache()
224
257
  if version is not None:
225
258
  self._cache_stats["hits"] += 1
226
- self._cache_stats["cache_hits_by_source"][
227
- VersionSource.CACHE.value
228
- ] += 1
259
+ self._cache_stats["cache_hits_by_source"][VersionSource.CACHE.value] += 1
260
+ return version
261
+
262
+ # Priority 1: Try installed package version first (most accurate)
263
+ version = self._get_package_version()
264
+ if version:
265
+ self._update_cache(version, VersionSource.CONFIG_FILE)
266
+ self._cache_stats["misses"] += 1
229
267
  return version
230
268
 
231
- # Read from config file asynchronously
269
+ # Priority 2: Read from config file asynchronously
232
270
  version = await self._read_version_from_config_async()
233
271
  if not version:
234
272
  version = self._get_fallback_version()
@@ -264,14 +302,10 @@ class VersionReader:
264
302
  entry.access_count += 1
265
303
  entry.last_access = datetime.now()
266
304
  self._cache_stats["hits"] += 1
267
- self._cache_stats["cache_hits_by_source"][
268
- VersionSource.CACHE.value
269
- ] += 1
305
+ self._cache_stats["cache_hits_by_source"][VersionSource.CACHE.value] += 1
270
306
 
271
307
  if self.config.debug_mode:
272
- self._logger.debug(
273
- f"Cache hit: {entry.version} (source: {entry.source.value})"
274
- )
308
+ self._logger.debug(f"Cache hit: {entry.version} (source: {entry.source.value})")
275
309
 
276
310
  return entry.version
277
311
 
@@ -316,9 +350,7 @@ class VersionReader:
316
350
  self._evict_oldest_cache_entry()
317
351
 
318
352
  if self.config.debug_mode:
319
- self._logger.debug(
320
- f"Cache updated with version: {version} (source: {source.value})"
321
- )
353
+ self._logger.debug(f"Cache updated with version: {version} (source: {source.value})")
322
354
 
323
355
  def _evict_oldest_cache_entry(self) -> None:
324
356
  """
@@ -387,7 +419,7 @@ class VersionReader:
387
419
  Returns:
388
420
  Dictionary containing performance metrics
389
421
  """
390
- metrics = {
422
+ metrics: Dict[str, Any] = {
391
423
  "cache_stats": self._cache_stats.copy(),
392
424
  "cache_size": len(self._cache),
393
425
  "max_cache_size": self.config.cache_size,
@@ -409,7 +441,7 @@ class VersionReader:
409
441
 
410
442
  def _read_version_from_config_sync(self) -> str:
411
443
  """
412
- Synchronous version of reading from .moai/config/config.json.
444
+ Synchronous version of reading from .moai/config/config.yaml.
413
445
 
414
446
  Returns:
415
447
  Version string or empty string if not found
@@ -420,11 +452,11 @@ class VersionReader:
420
452
  return ""
421
453
 
422
454
  try:
423
- config_data = self._read_json_sync(self._config_path)
455
+ config_data = self._read_config_sync(self._config_path)
424
456
  version = self._extract_version_from_config(config_data)
425
457
  return version if version else ""
426
- except json.JSONDecodeError as e:
427
- logger.error(f"Invalid JSON in config {self._config_path}: {e}")
458
+ except (json.JSONDecodeError, yaml.YAMLError) as e:
459
+ logger.error(f"Invalid config in {self._config_path}: {e}")
428
460
  return ""
429
461
 
430
462
  except Exception as e:
@@ -433,7 +465,7 @@ class VersionReader:
433
465
 
434
466
  async def _read_version_from_config_async(self) -> str:
435
467
  """
436
- Read version from .moai/config/config.json asynchronously.
468
+ Read version from .moai/config/config.yaml asynchronously.
437
469
 
438
470
  Returns:
439
471
  Version string or empty string if not found
@@ -444,10 +476,10 @@ class VersionReader:
444
476
  return ""
445
477
 
446
478
  try:
447
- config_data = await self._read_json_async(self._config_path)
479
+ config_data = await self._read_config_async(self._config_path)
448
480
  return self._extract_version_from_config(config_data)
449
- except json.JSONDecodeError as e:
450
- logger.error(f"Invalid JSON in config {self._config_path}: {e}")
481
+ except (json.JSONDecodeError, yaml.YAMLError) as e:
482
+ logger.error(f"Invalid config in {self._config_path}: {e}")
451
483
  return ""
452
484
 
453
485
  except Exception as e:
@@ -474,9 +506,7 @@ class VersionReader:
474
506
  logger.debug("No version field found in config")
475
507
  return ""
476
508
 
477
- def _get_nested_value(
478
- self, config: Dict[str, Any], field_path: str
479
- ) -> Optional[str]:
509
+ def _get_nested_value(self, config: Dict[str, Any], field_path: str) -> Optional[str]:
480
510
  """
481
511
  Get nested value from config using dot notation.
482
512
 
@@ -546,10 +576,43 @@ class VersionReader:
546
576
  Returns:
547
577
  Fallback version string
548
578
  """
579
+ # Try to get version from package metadata first
580
+ pkg_version = self._get_package_version()
581
+ if pkg_version:
582
+ self._logger.debug(f"Using package metadata version: {pkg_version}")
583
+ return pkg_version
584
+
585
+ # Fall back to configured fallback version
549
586
  fallback = self.config.fallback_version
550
- self._logger.debug(f"Using fallback version: {fallback}")
587
+ self._logger.debug(f"Using configured fallback version: {fallback}")
551
588
  return fallback
552
589
 
590
+ def _get_package_version(self) -> str:
591
+ """
592
+ Get version from installed moai-adk package metadata.
593
+
594
+ This allows the statusline to work even when .moai/config/config.json
595
+ is not found, as long as the moai-adk package is installed.
596
+
597
+ Returns:
598
+ Version string or empty string if package not found
599
+ """
600
+ try:
601
+ from importlib.metadata import PackageNotFoundError, version
602
+
603
+ try:
604
+ pkg_version = version("moai-adk")
605
+ self._logger.debug(f"Found moai-adk package version: {pkg_version}")
606
+ return pkg_version
607
+ except PackageNotFoundError:
608
+ self._logger.debug("moai-adk package not found in metadata")
609
+ return ""
610
+ except ImportError:
611
+ self._logger.debug("importlib.metadata not available")
612
+ return ""
613
+ except Exception as e:
614
+ self._logger.debug(f"Error getting package version: {e}")
615
+ return ""
553
616
 
554
617
  async def _file_exists_async(self, path: Path) -> bool:
555
618
  """Async file existence check"""
@@ -569,11 +632,37 @@ class VersionReader:
569
632
  with open(path, "r", encoding="utf-8") as f:
570
633
  return json.load(f)
571
634
 
635
+ async def _read_config_async(self, path: Path) -> Dict[str, Any]:
636
+ """Async config file reading (supports YAML and JSON)"""
637
+ loop = asyncio.get_event_loop()
638
+ return await loop.run_in_executor(None, self._read_config_sync, path)
639
+
640
+ def _read_config_sync(self, path: Path) -> Dict[str, Any]:
641
+ """Synchronous config file reading (supports YAML and JSON)"""
642
+ with open(path, "r", encoding="utf-8") as f:
643
+ if path.suffix in (".yaml", ".yml"):
644
+ return yaml.safe_load(f) or {}
645
+ else:
646
+ return json.load(f)
647
+
572
648
  # Backwards compatibility cache methods
573
649
  def clear_cache(self) -> None:
574
650
  """Clear version cache (backwards compatibility)"""
575
651
  self._version_cache = None
576
652
  self._cache_time = None
653
+ # Also clear the main cache dictionary
654
+ self._cache.clear()
655
+ # Reset cache statistics
656
+ self._cache_stats = {
657
+ "hits": 0,
658
+ "misses": 0,
659
+ "errors": 0,
660
+ "cache_hits_by_source": {
661
+ VersionSource.CONFIG_FILE.value: 0,
662
+ VersionSource.CACHE.value: 0,
663
+ VersionSource.FALLBACK.value: 0,
664
+ },
665
+ }
577
666
  logger.debug("Version cache cleared")
578
667
 
579
668
  def get_cache_stats(self) -> Dict[str, int]:
@@ -603,7 +692,12 @@ class VersionReader:
603
692
  Returns:
604
693
  True if cache is expired
605
694
  """
606
- return not self._is_cache_valid()
695
+ # Check if cache entry exists and is still valid
696
+ config_key = str(self._config_path)
697
+ if config_key not in self._cache:
698
+ return True
699
+ entry = self._cache[config_key]
700
+ return not self._is_cache_entry_valid(entry)
607
701
 
608
702
  def get_config(self) -> VersionConfig:
609
703
  """Get current configuration"""