moai-adk 0.35.1__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 (502) hide show
  1. moai_adk/__init__.py +10 -0
  2. moai_adk/__main__.py +199 -0
  3. moai_adk/cli/__init__.py +6 -0
  4. moai_adk/cli/commands/__init__.py +17 -0
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +272 -0
  7. moai_adk/cli/commands/init.py +372 -0
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +104 -0
  10. moai_adk/cli/commands/update.py +2686 -0
  11. moai_adk/cli/main.py +13 -0
  12. moai_adk/cli/prompts/__init__.py +5 -0
  13. moai_adk/cli/prompts/init_prompts.py +219 -0
  14. moai_adk/cli/spec_status.py +263 -0
  15. moai_adk/cli/ui/__init__.py +44 -0
  16. moai_adk/cli/ui/progress.py +422 -0
  17. moai_adk/cli/ui/prompts.py +389 -0
  18. moai_adk/cli/ui/theme.py +129 -0
  19. moai_adk/cli/worktree/__init__.py +27 -0
  20. moai_adk/cli/worktree/__main__.py +31 -0
  21. moai_adk/cli/worktree/cli.py +683 -0
  22. moai_adk/cli/worktree/exceptions.py +89 -0
  23. moai_adk/cli/worktree/manager.py +493 -0
  24. moai_adk/cli/worktree/models.py +65 -0
  25. moai_adk/cli/worktree/registry.py +422 -0
  26. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  27. moai_adk/core/__init__.py +1 -0
  28. moai_adk/core/analysis/__init__.py +9 -0
  29. moai_adk/core/analysis/session_analyzer.py +400 -0
  30. moai_adk/core/claude_integration.py +393 -0
  31. moai_adk/core/command_helpers.py +270 -0
  32. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  33. moai_adk/core/config/__init__.py +19 -0
  34. moai_adk/core/config/auto_spec_config.py +340 -0
  35. moai_adk/core/config/migration.py +244 -0
  36. moai_adk/core/config/unified.py +436 -0
  37. moai_adk/core/context_manager.py +273 -0
  38. moai_adk/core/diagnostics/__init__.py +19 -0
  39. moai_adk/core/diagnostics/slash_commands.py +159 -0
  40. moai_adk/core/enterprise_features.py +1404 -0
  41. moai_adk/core/error_recovery_system.py +1902 -0
  42. moai_adk/core/event_driven_hook_system.py +1371 -0
  43. moai_adk/core/git/__init__.py +31 -0
  44. moai_adk/core/git/branch.py +25 -0
  45. moai_adk/core/git/branch_manager.py +129 -0
  46. moai_adk/core/git/checkpoint.py +134 -0
  47. moai_adk/core/git/commit.py +67 -0
  48. moai_adk/core/git/conflict_detector.py +413 -0
  49. moai_adk/core/git/event_detector.py +79 -0
  50. moai_adk/core/git/manager.py +216 -0
  51. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  52. moai_adk/core/input_validation_middleware.py +1006 -0
  53. moai_adk/core/integration/__init__.py +22 -0
  54. moai_adk/core/integration/engine.py +157 -0
  55. moai_adk/core/integration/integration_tester.py +226 -0
  56. moai_adk/core/integration/models.py +88 -0
  57. moai_adk/core/integration/utils.py +211 -0
  58. moai_adk/core/issue_creator.py +305 -0
  59. moai_adk/core/jit_context_loader.py +956 -0
  60. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  61. moai_adk/core/language_config.py +202 -0
  62. moai_adk/core/language_config_resolver.py +572 -0
  63. moai_adk/core/language_validator.py +543 -0
  64. moai_adk/core/mcp/setup.py +116 -0
  65. moai_adk/core/merge/__init__.py +9 -0
  66. moai_adk/core/merge/analyzer.py +605 -0
  67. moai_adk/core/migration/__init__.py +18 -0
  68. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  69. moai_adk/core/migration/backup_manager.py +277 -0
  70. moai_adk/core/migration/custom_element_scanner.py +358 -0
  71. moai_adk/core/migration/file_migrator.py +209 -0
  72. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  73. moai_adk/core/migration/selective_restorer.py +470 -0
  74. moai_adk/core/migration/template_utils.py +74 -0
  75. moai_adk/core/migration/user_selection_ui.py +338 -0
  76. moai_adk/core/migration/version_detector.py +139 -0
  77. moai_adk/core/migration/version_migrator.py +228 -0
  78. moai_adk/core/performance/__init__.py +6 -0
  79. moai_adk/core/performance/cache_system.py +316 -0
  80. moai_adk/core/performance/parallel_processor.py +116 -0
  81. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  82. moai_adk/core/project/__init__.py +1 -0
  83. moai_adk/core/project/backup_utils.py +70 -0
  84. moai_adk/core/project/checker.py +300 -0
  85. moai_adk/core/project/detector.py +293 -0
  86. moai_adk/core/project/initializer.py +387 -0
  87. moai_adk/core/project/phase_executor.py +716 -0
  88. moai_adk/core/project/validator.py +139 -0
  89. moai_adk/core/quality/__init__.py +6 -0
  90. moai_adk/core/quality/trust_checker.py +377 -0
  91. moai_adk/core/quality/validators/__init__.py +6 -0
  92. moai_adk/core/quality/validators/base_validator.py +19 -0
  93. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  94. moai_adk/core/robust_json_parser.py +611 -0
  95. moai_adk/core/rollback_manager.py +918 -0
  96. moai_adk/core/session_manager.py +651 -0
  97. moai_adk/core/skill_loading_system.py +579 -0
  98. moai_adk/core/spec/confidence_scoring.py +680 -0
  99. moai_adk/core/spec/ears_template_engine.py +1247 -0
  100. moai_adk/core/spec/quality_validator.py +687 -0
  101. moai_adk/core/spec_status_manager.py +478 -0
  102. moai_adk/core/template/__init__.py +7 -0
  103. moai_adk/core/template/backup.py +174 -0
  104. moai_adk/core/template/config.py +191 -0
  105. moai_adk/core/template/languages.py +43 -0
  106. moai_adk/core/template/merger.py +233 -0
  107. moai_adk/core/template/processor.py +1200 -0
  108. moai_adk/core/template_engine.py +310 -0
  109. moai_adk/core/template_variable_synchronizer.py +417 -0
  110. moai_adk/core/unified_permission_manager.py +745 -0
  111. moai_adk/core/user_behavior_analytics.py +851 -0
  112. moai_adk/core/version_sync.py +429 -0
  113. moai_adk/foundation/__init__.py +56 -0
  114. moai_adk/foundation/backend.py +1027 -0
  115. moai_adk/foundation/database.py +1115 -0
  116. moai_adk/foundation/devops.py +1585 -0
  117. moai_adk/foundation/ears.py +431 -0
  118. moai_adk/foundation/frontend.py +870 -0
  119. moai_adk/foundation/git/commit_templates.py +557 -0
  120. moai_adk/foundation/git.py +376 -0
  121. moai_adk/foundation/langs.py +484 -0
  122. moai_adk/foundation/ml_ops.py +1162 -0
  123. moai_adk/foundation/testing.py +1524 -0
  124. moai_adk/foundation/trust/trust_principles.py +676 -0
  125. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  126. moai_adk/project/__init__.py +0 -0
  127. moai_adk/project/configuration.py +1084 -0
  128. moai_adk/project/documentation.py +566 -0
  129. moai_adk/project/schema.py +447 -0
  130. moai_adk/statusline/__init__.py +38 -0
  131. moai_adk/statusline/alfred_detector.py +105 -0
  132. moai_adk/statusline/config.py +376 -0
  133. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  134. moai_adk/statusline/git_collector.py +190 -0
  135. moai_adk/statusline/main.py +322 -0
  136. moai_adk/statusline/metrics_tracker.py +78 -0
  137. moai_adk/statusline/renderer.py +343 -0
  138. moai_adk/statusline/update_checker.py +129 -0
  139. moai_adk/statusline/version_reader.py +741 -0
  140. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
  141. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  142. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  143. moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
  144. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  145. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  146. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  147. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  148. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  149. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  150. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  151. moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
  152. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  153. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  154. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  155. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  156. moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
  157. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  158. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  159. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  160. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  161. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  164. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  165. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  166. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  167. moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
  168. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  169. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  170. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  171. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  172. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  173. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  185. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  186. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  187. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  188. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  189. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
  190. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  191. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  192. moai_adk/templates/.claude/settings.json +172 -0
  193. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
  194. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  195. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  196. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  200. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  201. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  202. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  203. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  204. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  205. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
  206. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  207. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  210. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  211. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  212. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  213. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  214. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  215. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
  216. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  217. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  221. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  222. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  223. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  224. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  230. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  231. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  232. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  284. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
  285. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
  286. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  287. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  288. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  289. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  290. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
  291. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  292. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  293. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
  294. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  295. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
  297. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  298. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
  304. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
  305. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
  306. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  307. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  308. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
  309. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  310. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  311. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
  312. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  313. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  314. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
  315. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  316. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  318. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  319. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  320. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  321. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  331. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  332. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  333. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  334. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  338. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  339. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  340. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  341. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  342. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  343. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  344. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  345. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  346. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
  347. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  348. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  349. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  350. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  351. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  352. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  353. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  354. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  355. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  356. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  357. moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
  358. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
  359. moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
  360. moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
  361. moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
  362. moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
  363. moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
  364. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
  365. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
  366. moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
  367. moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
  368. moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
  369. moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
  370. moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
  371. moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
  372. moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
  373. moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
  374. moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
  375. moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
  376. moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
  377. moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
  378. moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
  379. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
  380. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
  381. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
  382. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
  383. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
  384. moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
  385. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
  386. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
  387. moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
  388. moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
  389. moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
  390. moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
  391. moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  433. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  458. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  459. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  460. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  461. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  462. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  463. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  464. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  465. moai_adk/templates/.git-hooks/pre-commit +128 -0
  466. moai_adk/templates/.git-hooks/pre-push +365 -0
  467. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  468. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  469. moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
  470. moai_adk/templates/.gitignore +222 -0
  471. moai_adk/templates/.mcp.json +13 -0
  472. moai_adk/templates/.moai/config/config.yaml +58 -0
  473. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  474. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  475. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  476. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  477. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  478. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
  479. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  480. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  481. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  482. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  483. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  484. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  485. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  486. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  487. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  488. moai_adk/templates/CLAUDE.md +642 -0
  489. moai_adk/utils/__init__.py +30 -0
  490. moai_adk/utils/banner.py +38 -0
  491. moai_adk/utils/common.py +294 -0
  492. moai_adk/utils/link_validator.py +241 -0
  493. moai_adk/utils/logger.py +147 -0
  494. moai_adk/utils/safe_file_reader.py +206 -0
  495. moai_adk/utils/timeout.py +160 -0
  496. moai_adk/utils/toon_utils.py +256 -0
  497. moai_adk/version.py +22 -0
  498. moai_adk-0.35.1.dist-info/METADATA +3018 -0
  499. moai_adk-0.35.1.dist-info/RECORD +502 -0
  500. moai_adk-0.35.1.dist-info/WHEEL +4 -0
  501. moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
  502. moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,668 @@
1
+ #!/bin/bash
2
+
3
+ # Enterprise Code Quality Gate Script
4
+ # Comprehensive quality validation with TRUST 5 framework
5
+ # Usage: ./quality-gate.sh [options] <project-path>
6
+
7
+ set -euo pipefail
8
+
9
+ # Configuration
10
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
12
+ LOG_FILE="$PROJECT_ROOT/.moai/logs/quality-gate.log"
13
+ CONFIG_FILE="$PROJECT_ROOT/.moai/config/quality-config.yaml"
14
+
15
+ # Colors for output
16
+ RED='\033[0;31m'
17
+ GREEN='\033[0;32m'
18
+ YELLOW='\033[1;33m'
19
+ BLUE='\033[0;34m'
20
+ PURPLE='\033[0;35m'
21
+ CYAN='\033[0;36m'
22
+ NC='\033[0m' # No Color
23
+
24
+ # Quality thresholds
25
+ QUALITY_THRESHOLD=${QUALITY_THRESHOLD:-0.85}
26
+ COVERAGE_THRESHOLD=${COVERAGE_THRESHOLD:-0.80}
27
+ SECURITY_THRESHOLD=${SECURITY_THRESHOLD:-0.90}
28
+
29
+ # Default values
30
+ PROJECT_PATH="src/"
31
+ OUTPUT_DIR=".moai/reports/quality"
32
+ GENERATE_REPORTS=true
33
+ CI_MODE=false
34
+ VERBOSE=false
35
+ FAIL_ON_THRESHOLD=true
36
+
37
+ # Logging function
38
+ log() {
39
+ echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
40
+ }
41
+
42
+ # Print colored output
43
+ print_status() {
44
+ local status=$1
45
+ local message=$2
46
+ case $status in
47
+ "PASS")
48
+ echo -e "${GREEN}✓${NC} $message"
49
+ ;;
50
+ "FAIL")
51
+ echo -e "${RED}✗${NC} $message"
52
+ ;;
53
+ "WARN")
54
+ echo -e "${YELLOW}⚠${NC} $message"
55
+ ;;
56
+ "INFO")
57
+ echo -e "${BLUE}ℹ${NC} $message"
58
+ ;;
59
+ "HIGHLIGHT")
60
+ echo -e "${PURPLE}★${NC} $message"
61
+ ;;
62
+ "DEBUG")
63
+ [[ "$VERBOSE" == "true" ]] && echo -e "${CYAN}🐛${NC} $message"
64
+ ;;
65
+ esac
66
+ }
67
+
68
+ # Print section header
69
+ print_section() {
70
+ local title=$1
71
+ echo
72
+ echo -e "${BLUE}=== $title ===${NC}"
73
+ echo
74
+ }
75
+
76
+ # Print quality gauge
77
+ print_quality_gauge() {
78
+ local score=$1
79
+ local threshold=$2
80
+ local label=$3
81
+
82
+ # Calculate gauge
83
+ local percentage=$(awk "BEGIN {printf \"%.0f\", $score * 100}")
84
+ local filled=$(awk "BEGIN {printf \"%.0f\", $percentage / 5}")
85
+ local empty=$((20 - filled))
86
+
87
+ # Build gauge
88
+ local gauge=""
89
+ for ((i=1; i<=filled; i++)); do
90
+ if (( i <= 16 )); then
91
+ gauge="${gauge}$(echo -e "${GREEN}█${NC}")"
92
+ elif (( i <= 18 )); then
93
+ gauge="${gauge}$(echo -e "${YELLOW}█${NC}")"
94
+ else
95
+ gauge="${gauge}$(echo -e "${RED}█${NC}")"
96
+ fi
97
+ done
98
+ for ((i=1; i<=empty; i++)); do
99
+ gauge="${gauge}░"
100
+ done
101
+
102
+ # Determine status
103
+ local status
104
+ if (( $(awk "BEGIN {print ($score >= $threshold)}") )); then
105
+ status="PASS"
106
+ else
107
+ status="FAIL"
108
+ fi
109
+
110
+ printf "%-25s %s %3d%% " "$label" "$gauge" "$percentage"
111
+ print_status "$status" ""
112
+ }
113
+
114
+ # Check dependencies
115
+ check_dependencies() {
116
+ local deps=("python3" "jq" "find")
117
+ local missing=()
118
+
119
+ for dep in "${deps[@]}"; do
120
+ if ! command -v "$dep" &> /dev/null; then
121
+ missing+=("$dep")
122
+ fi
123
+ done
124
+
125
+ if [ ${#missing[@]} -gt 0 ]; then
126
+ print_status "FAIL" "Missing dependencies: ${missing[*]}"
127
+ return 1
128
+ fi
129
+
130
+ # Check Python packages
131
+ local python_deps=("moai-core-quality")
132
+ for dep in "${python_deps[@]}"; do
133
+ if ! python3 -c "import $dep" 2>/dev/null; then
134
+ missing+=("python3-$dep")
135
+ fi
136
+ done
137
+
138
+ if [ ${#missing[@]} -gt 0 ]; then
139
+ print_status "FAIL" "Missing Python packages: ${missing[*]}"
140
+ print_status "INFO" "Install with: pip install ${missing[*]}"
141
+ return 1
142
+ fi
143
+
144
+ print_status "PASS" "All dependencies available"
145
+ return 0
146
+ }
147
+
148
+ # Validate project structure
149
+ validate_project_structure() {
150
+ local project_path=$1
151
+
152
+ if [ ! -d "$project_path" ]; then
153
+ print_status "FAIL" "Project path not found: $project_path"
154
+ return 1
155
+ fi
156
+
157
+ # Check for code files
158
+ local code_files
159
+ code_files=$(find "$project_path" -name "*.py" -o -name "*.js" -o -name "*.ts" -o -name "*.go" | wc -l)
160
+
161
+ if [ "$code_files" -eq 0 ]; then
162
+ print_status "WARN" "No code files found in $project_path"
163
+ return 1
164
+ fi
165
+
166
+ print_status "PASS" "Found $code_files code files"
167
+ return 0
168
+ }
169
+
170
+ # Load configuration
171
+ load_configuration() {
172
+ if [ -f "$CONFIG_FILE" ]; then
173
+ print_status "INFO" "Loading configuration from $CONFIG_FILE"
174
+
175
+ # Extract configuration values using jq
176
+ local quality_threshold_config
177
+ quality_threshold_config=$(jq -r '.quality_threshold // empty' "$CONFIG_FILE" 2>/dev/null || echo "")
178
+
179
+ if [ -n "$quality_threshold_config" ] && [ "$quality_threshold_config" != "null" ]; then
180
+ QUALITY_THRESHOLD=$quality_threshold_config
181
+ print_status "INFO" "Quality threshold set to $QUALITY_THRESHOLD"
182
+ fi
183
+
184
+ local coverage_threshold_config
185
+ coverage_threshold_config=$(jq -r '.test_coverage_threshold // empty' "$CONFIG_FILE" 2>/dev/null || echo "")
186
+
187
+ if [ -n "$coverage_threshold_config" ] && [ "$coverage_threshold_config" != "null" ]; then
188
+ COVERAGE_THRESHOLD=$coverage_threshold_config
189
+ print_status "INFO" "Coverage threshold set to $COVERAGE_THRESHOLD"
190
+ fi
191
+ else
192
+ print_status "INFO" "Using default configuration (no config file found)"
193
+ fi
194
+ }
195
+
196
+ # Detect project languages
197
+ detect_languages() {
198
+ local project_path=$1
199
+ local languages=()
200
+
201
+ # Detect Python
202
+ if find "$project_path" -name "*.py" -type f | head -1 | grep -q .; then
203
+ languages+=("python")
204
+ fi
205
+
206
+ # Detect JavaScript/TypeScript
207
+ if find "$project_path" -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" | head -1 | grep -q .; then
208
+ languages+=("javascript")
209
+ fi
210
+
211
+ # Detect TypeScript specifically
212
+ if find "$project_path" -name "*.ts" -o -name "*.tsx" | head -1 | grep -q .; then
213
+ languages+=("typescript")
214
+ fi
215
+
216
+ # Detect Go
217
+ if find "$project_path" -name "*.go" | head -1 | grep -q .; then
218
+ languages+=("go")
219
+ fi
220
+
221
+ # Detect Java
222
+ if find "$project_path" -name "*.java" | head -1 | grep -q .; then
223
+ languages+=("java")
224
+ fi
225
+
226
+ printf '%s\n' "${languages[@]}"
227
+ }
228
+
229
+ # Run quality analysis
230
+ run_quality_analysis() {
231
+ local project_path=$1
232
+ local languages=("${@:2}")
233
+
234
+ print_section "Running Quality Analysis"
235
+
236
+ # Create Python script for quality analysis
237
+ local analysis_script=$(cat << 'EOF'
238
+ import asyncio
239
+ import json
240
+ import sys
241
+ from pathlib import Path
242
+ from moai_core_quality import QualityOrchestrator, QualityConfig
243
+
244
+ async def main():
245
+ project_path = sys.argv[1]
246
+ languages = sys.argv[2].split(',')
247
+ quality_threshold = float(sys.argv[3])
248
+ coverage_threshold = float(sys.argv[4])
249
+ security_threshold = float(sys.argv[5])
250
+ output_dir = sys.argv[6]
251
+ ci_mode = sys.argv[7].lower() == 'true'
252
+
253
+ # Configure quality analysis
254
+ config = QualityConfig(
255
+ quality_threshold=quality_threshold,
256
+ test_coverage_threshold=coverage_threshold,
257
+ security_threshold=security_threshold,
258
+ languages=languages,
259
+ generate_reports=True,
260
+ output_directory=output_dir
261
+ )
262
+
263
+ # Initialize orchestrator
264
+ orchestrator = QualityOrchestrator(config)
265
+
266
+ print(f"Analyzing {project_path} with languages: {languages}")
267
+ print(f"Quality threshold: {quality_threshold}")
268
+
269
+ try:
270
+ # Run comprehensive analysis
271
+ result = await orchestrator.analyze_codebase(
272
+ path=project_path,
273
+ languages=languages,
274
+ quality_threshold=quality_threshold
275
+ )
276
+
277
+ # Prepare analysis data
278
+ analysis_data = {
279
+ "overall_score": result.overall_score,
280
+ "trust5_validation": {
281
+ principle: validation.score
282
+ for principle, validation in result.trust5_validation.principles.items()
283
+ },
284
+ "metrics": {
285
+ "test_coverage": result.metrics.test_coverage,
286
+ "security_score": result.metrics.security_score,
287
+ "maintainability": result.metrics.maintainability_index,
288
+ "technical_debt": result.metrics.technical_debt_hours,
289
+ "complexity": result.metrics.cyclomatic_complexity
290
+ },
291
+ "passed": result.trust5_validation.passed,
292
+ "recommendations": len(result.proactive_analysis.recommendations),
293
+ "critical_issues": len([
294
+ r for r in result.proactive_analysis.recommendations
295
+ if r.severity == "critical"
296
+ ])
297
+ }
298
+
299
+ # Print summary
300
+ print(f"\nQuality Analysis Results:")
301
+ print(f"Overall Score: {result.overall_score:.2f}")
302
+ print(f"Quality Gate: {'PASSED' if result.trust5_validation.passed else 'FAILED'}")
303
+ print(f"Test Coverage: {result.metrics.test_coverage:.1%}")
304
+ print(f"Security Score: {result.metrics.security_score:.2f}")
305
+
306
+ # Generate reports if not in CI mode
307
+ if not ci_mode:
308
+ await orchestrator.generate_report(
309
+ result=result,
310
+ output_path=f"{output_dir}/quality-report.html",
311
+ format="html"
312
+ )
313
+
314
+ # Save detailed results
315
+ with open(f"{output_dir}/quality-analysis.json", "w") as f:
316
+ json.dump(analysis_data, f, indent=2)
317
+
318
+ # Output JSON for CI integration
319
+ print(json.dumps(analysis_data))
320
+
321
+ # Exit code based on quality gate
322
+ sys.exit(0 if result.trust5_validation.passed else 1)
323
+
324
+ except Exception as e:
325
+ print(f"Error during quality analysis: {e}", file=sys.stderr)
326
+ sys.exit(2)
327
+
328
+ if __name__ == "__main__":
329
+ asyncio.run(main())
330
+ EOF
331
+ )
332
+
333
+ # Create output directory
334
+ mkdir -p "$OUTPUT_DIR"
335
+
336
+ # Run analysis
337
+ local languages_str
338
+ languages_str=$(IFS=,; echo "${languages[*]}")
339
+
340
+ local analysis_result
341
+ analysis_result=$(python3 -c "$analysis_script" \
342
+ "$PROJECT_PATH" \
343
+ "$languages_str" \
344
+ "$QUALITY_THRESHOLD" \
345
+ "$COVERAGE_THRESHOLD" \
346
+ "$SECURITY_THRESHOLD" \
347
+ "$OUTPUT_DIR" \
348
+ "$CI_MODE" 2>&1)
349
+
350
+ local exit_code=$?
351
+
352
+ if [ $exit_code -eq 0 ]; then
353
+ # Parse JSON results (last line should be JSON)
354
+ local json_result
355
+ json_result=$(echo "$analysis_result" | tail -1)
356
+
357
+ # Display results
358
+ echo "$analysis_result" | head -n -1
359
+
360
+ # Store results for CI
361
+ if [ "$CI_MODE" == "true" ]; then
362
+ echo "$json_result" > "$OUTPUT_DIR/quality-results.json"
363
+
364
+ # Set GitHub Actions outputs if available
365
+ if command -v jq &> /dev/null; then
366
+ local overall_score
367
+ overall_score=$(echo "$json_result" | jq -r '.overall_score // 0')
368
+ local quality_passed
369
+ quality_passed=$(echo "$json_result" | jq -r '.passed // false')
370
+ local test_coverage
371
+ test_coverage=$(echo "$json_result" | jq -r '.metrics.test_coverage // 0')
372
+
373
+ echo "quality_score=$overall_score" >> "$GITHUB_OUTPUT"
374
+ echo "quality_passed=$quality_passed" >> "$GITHUB_OUTPUT"
375
+ echo "test_coverage=$test_coverage" >> "$GITHUB_OUTPUT"
376
+ fi
377
+ fi
378
+
379
+ return 0
380
+ else
381
+ print_status "FAIL" "Quality analysis failed"
382
+ echo "$analysis_result"
383
+ return $exit_code
384
+ fi
385
+ }
386
+
387
+ # Display quality summary
388
+ display_quality_summary() {
389
+ local output_dir=$1
390
+
391
+ if [ ! -f "$output_dir/quality-results.json" ]; then
392
+ print_status "WARN" "No quality results found"
393
+ return 1
394
+ fi
395
+
396
+ print_section "Quality Summary"
397
+
398
+ local overall_score
399
+ overall_score=$(jq -r '.overall_score // 0' "$output_dir/quality-results.json")
400
+
401
+ local quality_passed
402
+ quality_passed=$(jq -r '.passed // false' "$output_dir/quality-results.json")
403
+
404
+ # Display gauges
405
+ print_quality_gauge "$overall_score" "$QUALITY_THRESHOLD" "Overall Quality"
406
+
407
+ # TRUST 5 principles
408
+ print_section "TRUST 5 Framework"
409
+
410
+ local trust5_data
411
+ trust5_data=$(jq -r '.trust5_validation // {}' "$output_dir/quality-results.json")
412
+
413
+ for principle in testable readable unified secured trackable; do
414
+ local score
415
+ score=$(echo "$trust5_data" | jq -r ".${principle} // 0")
416
+ print_quality_gauge "$score" "0.80" "$principle"
417
+ done
418
+
419
+ # Key metrics
420
+ print_section "Key Metrics"
421
+
422
+ local metrics
423
+ metrics=$(jq -r '.metrics // {}' "$output_dir/quality-results.json")
424
+
425
+ local test_coverage
426
+ test_coverage=$(echo "$metrics" | jq -r '.test_coverage // 0')
427
+ print_quality_gauge "$test_coverage" "$COVERAGE_THRESHOLD" "Test Coverage"
428
+
429
+ local security_score
430
+ security_score=$(echo "$metrics" | jq -r '.security_score // 0')
431
+ print_quality_gauge "$security_score" "$SECURITY_THRESHOLD" "Security Score"
432
+
433
+ local technical_debt
434
+ technical_debt=$(echo "$metrics" | jq -r '.technical_debt // 0')
435
+ printf "%-25s %s hours\n" "Technical Debt" "$technical_debt"
436
+
437
+ local recommendations
438
+ recommendations=$(jq -r '.recommendations // 0' "$output_dir/quality-results.json")
439
+ printf "%-25s %s\n" "Recommendations" "$recommendations"
440
+
441
+ local critical_issues
442
+ critical_issues=$(jq -r '.critical_issues // 0' "$output_dir/quality-results.json")
443
+ printf "%-25s %s\n" "Critical Issues" "$critical_issues"
444
+
445
+ # Quality gate status
446
+ echo
447
+ if [ "$quality_passed" == "true" ]; then
448
+ print_status "PASS" "Quality gate passed"
449
+ else
450
+ print_status "FAIL" "Quality gate failed"
451
+ if [ "$FAIL_ON_THRESHOLD" == "true" ]; then
452
+ print_status "INFO" "Use --no-fail to continue despite quality gate failure"
453
+ fi
454
+ fi
455
+ }
456
+
457
+ # Generate final report
458
+ generate_final_report() {
459
+ local output_dir=$1
460
+
461
+ if [ ! -f "$output_dir/quality-results.json" ]; then
462
+ return 1
463
+ fi
464
+
465
+ print_section "Generating Reports"
466
+
467
+ # Generate HTML report summary
468
+ local report_html=$(cat << EOF
469
+ <!DOCTYPE html>
470
+ <html>
471
+ <head>
472
+ <title>Quality Gate Report</title>
473
+ <style>
474
+ body { font-family: Arial, sans-serif; margin: 20px; }
475
+ .header { background: #f5f5f5; padding: 20px; border-radius: 5px; }
476
+ .gauge { margin: 10px 0; }
477
+ .passed { color: #28a745; font-weight: bold; }
478
+ .failed { color: #dc3545; font-weight: bold; }
479
+ .metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin: 20px 0; }
480
+ .metric { background: #f8f9fa; padding: 15px; border-radius: 5px; text-align: center; }
481
+ </style>
482
+ </head>
483
+ <body>
484
+ <div class="header">
485
+ <h1>Code Quality Gate Report</h1>
486
+ <p>Generated on $(date)</p>
487
+ <p>Project: $PROJECT_PATH</p>
488
+ </div>
489
+
490
+ <div class="metrics">
491
+ <div class="metric">
492
+ <h3>Overall Quality</h3>
493
+ <div class="$([ "$(jq -r '.passed // false' "$output_dir/quality-results.json")" == "true" ] && echo "passed" || echo "failed")">
494
+ $(jq -r '.overall_score // 0' "$output_dir/quality-results.json")
495
+ </div>
496
+ </div>
497
+
498
+ <div class="metric">
499
+ <h3>Test Coverage</h3>
500
+ <div>$(jq -r '.metrics.test_coverage // 0' "$output_dir/quality-results.json" | awk '{printf "%.1f%%", $1 * 100}')</div>
501
+ </div>
502
+
503
+ <div class="metric">
504
+ <h3>Security Score</h3>
505
+ <div>$(jq -r '.metrics.security_score // 0' "$output_dir/quality-results.json")</div>
506
+ </div>
507
+
508
+ <div class="metric">
509
+ <h3>Technical Debt</h3>
510
+ <div>$(jq -r '.metrics.technical_debt // 0' "$output_dir/quality-results.json") hours</div>
511
+ </div>
512
+ </div>
513
+
514
+ <p><a href="quality-report.html">View Detailed Report</a></p>
515
+ </body>
516
+ </html>
517
+ EOF
518
+ )
519
+
520
+ echo "$report_html" > "$output_DIR/quality-summary.html"
521
+ print_status "PASS" "Quality summary report generated: $OUTPUT_DIR/quality-summary.html"
522
+
523
+ # Print report location
524
+ print_status "INFO" "Detailed report available at: $OUTPUT_DIR/quality-report.html"
525
+ }
526
+
527
+ # Parse command line arguments
528
+ parse_arguments() {
529
+ while [[ $# -gt 0 ]]; do
530
+ case $1 in
531
+ --threshold)
532
+ QUALITY_THRESHOLD="$2"
533
+ shift 2
534
+ ;;
535
+ --coverage-threshold)
536
+ COVERAGE_THRESHOLD="$2"
537
+ shift 2
538
+ ;;
539
+ --security-threshold)
540
+ SECURITY_THRESHOLD="$2"
541
+ shift 2
542
+ ;;
543
+ --output-dir)
544
+ OUTPUT_DIR="$2"
545
+ shift 2
546
+ ;;
547
+ --config)
548
+ CONFIG_FILE="$2"
549
+ shift 2
550
+ ;;
551
+ --ci)
552
+ CI_MODE=true
553
+ shift
554
+ ;;
555
+ --no-fail)
556
+ FAIL_ON_THRESHOLD=false
557
+ shift
558
+ ;;
559
+ --verbose)
560
+ VERBOSE=true
561
+ shift
562
+ ;;
563
+ --help|-h)
564
+ cat << EOF
565
+ Usage: $0 [options] [project-path]
566
+
567
+ Options:
568
+ --threshold FLOAT Quality threshold (default: 0.85)
569
+ --coverage-threshold FLOAT Test coverage threshold (default: 0.80)
570
+ --security-threshold FLOAT Security score threshold (default: 0.90)
571
+ --output-dir DIR Output directory for reports (default: .moai/reports/quality)
572
+ --config FILE Configuration file path
573
+ --ci Enable CI mode (minimal output, JSON results)
574
+ --no-fail Don't fail on quality gate violation
575
+ --verbose Enable verbose logging
576
+ --help, -h Show this help message
577
+
578
+ Examples:
579
+ $0 # Analyze src/ with default settings
580
+ $0 --threshold 0.90 src/ # Use higher quality threshold
581
+ $0 --ci --no-fail src/ # CI mode without failing
582
+ $0 --verbose --output-dir ./reports src/ # Verbose with custom output
583
+
584
+ Exit codes:
585
+ 0 - Quality gate passed
586
+ 1 - Quality gate failed
587
+ 2 - Analysis error occurred
588
+ EOF
589
+ exit 0
590
+ ;;
591
+ -*)
592
+ print_status "FAIL" "Unknown option: $1"
593
+ echo "Use --help for usage information"
594
+ exit 2
595
+ ;;
596
+ *)
597
+ PROJECT_PATH="$1"
598
+ shift
599
+ ;;
600
+ esac
601
+ done
602
+ }
603
+
604
+ # Main execution
605
+ main() {
606
+ local exit_code=0
607
+
608
+ # Parse arguments
609
+ parse_arguments "$@"
610
+
611
+ print_section "Enterprise Code Quality Gate"
612
+
613
+ log "Starting quality gate analysis for $PROJECT_PATH"
614
+
615
+ # Check dependencies
616
+ if ! check_dependencies; then
617
+ exit 2
618
+ fi
619
+
620
+ # Load configuration
621
+ load_configuration
622
+
623
+ # Validate project structure
624
+ if ! validate_project_structure "$PROJECT_PATH"; then
625
+ exit 2
626
+ fi
627
+
628
+ # Detect languages
629
+ print_status "INFO" "Detecting project languages..."
630
+ local languages
631
+ readarray -t languages < <(detect_languages "$PROJECT_PATH")
632
+
633
+ if [ ${#languages[@]} -eq 0 ]; then
634
+ print_status "FAIL" "No supported programming languages detected"
635
+ exit 2
636
+ fi
637
+
638
+ print_status "INFO" "Detected languages: ${languages[*]}"
639
+
640
+ # Run quality analysis
641
+ if ! run_quality_analysis "$PROJECT_PATH" "${languages[@]}"; then
642
+ exit_code=$?
643
+ if [ $exit_code -eq 1 ]; then
644
+ print_status "FAIL" "Quality gate failed"
645
+ else
646
+ print_status "FAIL" "Quality analysis encountered an error"
647
+ fi
648
+ fi
649
+
650
+ # Display summary
651
+ if [ "$CI_MODE" != "true" ]; then
652
+ display_quality_summary "$OUTPUT_DIR"
653
+ generate_final_report "$OUTPUT_DIR"
654
+ fi
655
+
656
+ log "Quality gate analysis completed with exit code: $exit_code"
657
+
658
+ # Final exit decision
659
+ if [ "$FAIL_ON_THRESHOLD" == "false" ]; then
660
+ print_status "INFO" "Ignoring quality gate failure due to --no-fail flag"
661
+ exit 0
662
+ fi
663
+
664
+ exit $exit_code
665
+ }
666
+
667
+ # Execute main function
668
+ main "$@"