moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,429 @@
1
+ """
2
+ Version Synchronization System for MoAI-ADK
3
+
4
+ Ensures version consistency across multiple configuration files and provides
5
+ automatic synchronization capabilities.
6
+
7
+ Key Features:
8
+ - Version consistency validation across pyproject.toml, __init__.py, and config.json
9
+ - Automatic synchronization when inconsistencies detected
10
+ - Cache invalidation for statusline version readers
11
+ - Version change detection and notification system
12
+ - Fallback strategies for version resolution
13
+ """
14
+
15
+ import json
16
+ import logging
17
+ import re
18
+ from dataclasses import dataclass, field
19
+ from datetime import datetime
20
+ from enum import Enum
21
+ from pathlib import Path
22
+ from typing import Any, Dict, List, Optional, Tuple
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+
27
+ class VersionSource(Enum):
28
+ """Enum for version source tracking"""
29
+
30
+ PYPROJECT_TOML = "pyproject_toml"
31
+ CONFIG_JSON = "config_json"
32
+ PACKAGE_METADATA = "package_metadata"
33
+ FALLBACK = "fallback"
34
+
35
+
36
+ @dataclass
37
+ class VersionInfo:
38
+ """Version information with metadata"""
39
+
40
+ version: str
41
+ source: VersionSource
42
+ file_path: Path
43
+ raw_content: str
44
+ timestamp: datetime = field(default_factory=datetime.now)
45
+ is_valid: bool = True
46
+
47
+ def __post_init__(self):
48
+ """Validate version format after initialization"""
49
+ self.is_valid = self._is_valid_version(self.version)
50
+
51
+ def _is_valid_version(self, version: str) -> bool:
52
+ """Check if version follows semantic versioning"""
53
+ pattern = r"^\d+\.\d+\.\d+(?:-[a-zA-Z0-9]+)?$"
54
+ return bool(re.match(pattern, version))
55
+
56
+
57
+ class VersionSynchronizer:
58
+ """
59
+ Version synchronization system for MoAI-ADK
60
+
61
+ Ensures version consistency across multiple files and provides
62
+ automatic synchronization capabilities.
63
+ """
64
+
65
+ def __init__(self, working_dir: Optional[Path] = None):
66
+ """
67
+ Initialize version synchronizer
68
+
69
+ Args:
70
+ working_dir: Project directory. If None, uses current working directory
71
+ """
72
+ if working_dir is None:
73
+ working_dir = Path.cwd()
74
+
75
+ self.working_dir = working_dir
76
+ self.pyproject_path = working_dir / "pyproject.toml"
77
+ self.config_path = working_dir / ".moai" / "config" / "config.json"
78
+ self.init_path = working_dir / "src" / "moai_adk" / "__init__.py"
79
+
80
+ # Version file paths in order of priority
81
+ # Note: __init__.py reads version dynamically, so we don't synchronize it
82
+ self.version_files = [
83
+ (self.pyproject_path, VersionSource.PYPROJECT_TOML),
84
+ (self.config_path, VersionSource.CONFIG_JSON),
85
+ ]
86
+
87
+ # Statusline cache directories to invalidate
88
+ self.cache_directories = [
89
+ working_dir / ".moai" / "cache",
90
+ working_dir / ".claude" / "cache",
91
+ ]
92
+
93
+ logger.info(f"VersionSynchronizer initialized for: {working_dir}")
94
+
95
+ def check_consistency(self) -> Tuple[bool, List[VersionInfo]]:
96
+ """
97
+ Check version consistency across all version files
98
+
99
+ Returns:
100
+ Tuple of (is_consistent, version_info_list)
101
+ """
102
+ version_infos = []
103
+
104
+ for file_path, source in self.version_files:
105
+ try:
106
+ version_info = self._extract_version(file_path, source)
107
+ if version_info:
108
+ version_infos.append(version_info)
109
+ except Exception as e:
110
+ logger.warning(f"Failed to extract version from {file_path}: {e}")
111
+ continue
112
+
113
+ if not version_infos:
114
+ logger.error("No version information found in any file")
115
+ return False, []
116
+
117
+ # Check if all valid versions are the same
118
+ valid_versions = [info.version for info in version_infos if info.is_valid]
119
+ is_consistent = len(set(valid_versions)) <= 1
120
+
121
+ if not is_consistent:
122
+ logger.warning(f"Version inconsistency detected: {valid_versions}")
123
+
124
+ return is_consistent, version_infos
125
+
126
+ def get_master_version(self) -> Optional[VersionInfo]:
127
+ """
128
+ Get master version from pyproject.toml (primary source)
129
+
130
+ Returns:
131
+ VersionInfo from pyproject.toml or None if not found
132
+ """
133
+ try:
134
+ version_info = self._extract_version(self.pyproject_path, VersionSource.PYPROJECT_TOML)
135
+ if version_info and version_info.is_valid:
136
+ logger.info(f"Master version from pyproject.toml: {version_info.version}")
137
+ return version_info
138
+ except Exception as e:
139
+ logger.error(f"Failed to get master version from pyproject.toml: {e}")
140
+
141
+ return None
142
+
143
+ def synchronize_all(self, target_version: Optional[str] = None, dry_run: bool = False) -> bool:
144
+ """
145
+ Synchronize all version files to match master version
146
+
147
+ Args:
148
+ target_version: Target version to synchronize to. If None, uses pyproject.toml version
149
+ dry_run: If True, only shows what would be changed without making changes
150
+
151
+ Returns:
152
+ True if synchronization successful
153
+ """
154
+ if target_version is None:
155
+ master_info = self.get_master_version()
156
+ if not master_info:
157
+ logger.error("No master version found for synchronization")
158
+ return False
159
+ target_version = master_info.version
160
+
161
+ logger.info(f"Synchronizing all files to version: {target_version}")
162
+
163
+ sync_results = []
164
+
165
+ for file_path, source in self.version_files:
166
+ if source == VersionSource.PYPROJECT_TOML:
167
+ continue # Skip pyproject.toml as it's the source
168
+
169
+ try:
170
+ success = self._synchronize_file(file_path, source, target_version, dry_run)
171
+ sync_results.append((file_path, success))
172
+
173
+ if not dry_run and success:
174
+ logger.info(f"Synchronized {file_path} to version {target_version}")
175
+ elif dry_run:
176
+ logger.info(f"[DRY RUN] Would synchronize {file_path} to version {target_version}")
177
+
178
+ except Exception as e:
179
+ logger.error(f"Failed to synchronize {file_path}: {e}")
180
+ sync_results.append((file_path, False))
181
+
182
+ # Clear caches after successful synchronization
183
+ if not dry_run and all(success for _, success in sync_results):
184
+ self._clear_caches()
185
+ logger.info("All version files synchronized successfully")
186
+ return True
187
+
188
+ logger.error("Some files failed to synchronize")
189
+ return False
190
+
191
+ def _extract_version(self, file_path: Path, source: VersionSource) -> Optional[VersionInfo]:
192
+ """Extract version from specific file based on source type"""
193
+ if not file_path.exists():
194
+ logger.debug(f"File not found: {file_path}")
195
+ return None
196
+
197
+ try:
198
+ with open(file_path, "r", encoding="utf-8") as f:
199
+ content = f.read()
200
+
201
+ if source == VersionSource.PYPROJECT_TOML:
202
+ version = self._extract_from_pyproject(content)
203
+ elif source == VersionSource.CONFIG_JSON:
204
+ version = self._extract_from_config(content)
205
+ elif source == VersionSource.PACKAGE_METADATA:
206
+ version = self._extract_from_init(content)
207
+ else:
208
+ return None
209
+
210
+ if version:
211
+ return VersionInfo(
212
+ version=version,
213
+ source=source,
214
+ file_path=file_path,
215
+ raw_content=content,
216
+ )
217
+
218
+ except Exception as e:
219
+ logger.error(f"Error reading {file_path}: {e}")
220
+
221
+ return None
222
+
223
+ def _extract_from_pyproject(self, content: str) -> Optional[str]:
224
+ """Extract version from pyproject.toml"""
225
+ pattern = r'^version\s*=\s*["\']([^"\']+)["\']'
226
+ match = re.search(pattern, content, re.MULTILINE)
227
+ return match.group(1) if match else None
228
+
229
+ def _extract_from_config(self, content: str) -> Optional[str]:
230
+ """Extract version from .moai/config/config.json"""
231
+ try:
232
+ config_data = json.loads(content)
233
+ moai_config = config_data.get("moai", {})
234
+ return moai_config.get("version")
235
+ except json.JSONDecodeError:
236
+ logger.error("Invalid JSON in config.json")
237
+ return None
238
+
239
+ def _extract_from_init(self, content: str) -> Optional[str]:
240
+ """Extract version from __init__.py"""
241
+ pattern = r'__version__\s*=\s*["\']([^"\']+)["\']'
242
+ match = re.search(pattern, content)
243
+ return match.group(1) if match else None
244
+
245
+ def _synchronize_file(self, file_path: Path, source: VersionSource, target_version: str, dry_run: bool) -> bool:
246
+ """Synchronize specific file to target version"""
247
+ current_info = self._extract_version(file_path, source)
248
+ if not current_info:
249
+ logger.warning(f"No current version found in {file_path}")
250
+ return True # Nothing to synchronize
251
+
252
+ if current_info.version == target_version:
253
+ logger.debug(f"Version already synchronized in {file_path}")
254
+ return True
255
+
256
+ if dry_run:
257
+ return True
258
+
259
+ try:
260
+ new_content = self._update_version_in_content(current_info.raw_content, source, target_version)
261
+
262
+ with open(file_path, "w", encoding="utf-8") as f:
263
+ f.write(new_content)
264
+
265
+ return True
266
+
267
+ except Exception as e:
268
+ logger.error(f"Failed to update {file_path}: {e}")
269
+ return False
270
+
271
+ def _update_version_in_content(self, content: str, source: VersionSource, target_version: str) -> str:
272
+ """Update version in content based on source type"""
273
+ if source == VersionSource.CONFIG_JSON:
274
+ # Update moai.version in JSON
275
+ try:
276
+ config_data = json.loads(content)
277
+ if "moai" not in config_data:
278
+ config_data["moai"] = {}
279
+ config_data["moai"]["version"] = target_version
280
+ return json.dumps(config_data, indent=2)
281
+ except json.JSONDecodeError:
282
+ # Fallback: regex replacement
283
+ pattern = r'("moai"\s*:\s*\{[^}]*"version"\s*:\s*")[^"\']+(")'
284
+ return re.sub(pattern, f"\\1{target_version}\\2", content, flags=re.DOTALL)
285
+
286
+ elif source == VersionSource.PACKAGE_METADATA:
287
+ # Update __version__ in Python (fallback version)
288
+ pattern = r'(__version__\s*=\s*["\'])([^"\']+)(["\'])'
289
+ return re.sub(pattern, f"\\1{target_version}\\3", content)
290
+
291
+ return content
292
+
293
+ def _clear_caches(self) -> None:
294
+ """Clear all relevant caches"""
295
+ cleared_count = 0
296
+
297
+ for cache_dir in self.cache_directories:
298
+ if cache_dir.exists():
299
+ try:
300
+ import shutil
301
+
302
+ cache_size = sum(1 for _ in cache_dir.rglob("*") if _.is_file())
303
+ shutil.rmtree(cache_dir)
304
+ cache_dir.mkdir(exist_ok=True)
305
+ cleared_count += cache_size
306
+ logger.info(f"Cleared cache directory: {cache_dir} ({cache_size} files)")
307
+ except Exception as e:
308
+ logger.warning(f"Failed to clear cache directory {cache_dir}: {e}")
309
+
310
+ # Clear version reader cache if available
311
+ try:
312
+ from ..statusline.version_reader import VersionReader
313
+
314
+ reader = VersionReader(working_dir=self.working_dir)
315
+ reader.clear_cache()
316
+ logger.info("Cleared VersionReader cache")
317
+ cleared_count += 1
318
+ except ImportError:
319
+ pass
320
+ except Exception as e:
321
+ logger.warning(f"Failed to clear VersionReader cache: {e}")
322
+
323
+ logger.info(f"Cache clearing completed: {cleared_count} cache entries cleared")
324
+
325
+ def validate_version_format(self, version: str) -> Tuple[bool, Optional[str]]:
326
+ """
327
+ Validate version format and return normalized version
328
+
329
+ Args:
330
+ version: Version string to validate
331
+
332
+ Returns:
333
+ Tuple of (is_valid, normalized_version)
334
+ """
335
+ if not version:
336
+ return False, None
337
+
338
+ # Remove 'v' prefix if present
339
+ normalized = version[1:] if version.startswith("v") else version
340
+
341
+ # Validate semantic versioning
342
+ pattern = r"^(\d+)\.(\d+)\.(\d+)(?:[-.]([a-zA-Z0-9]+))?$"
343
+ match = re.match(pattern, normalized)
344
+
345
+ if match:
346
+ return True, normalized
347
+
348
+ return False, None
349
+
350
+ def get_version_report(self) -> Dict[str, Any]:
351
+ """
352
+ Generate comprehensive version report
353
+
354
+ Returns:
355
+ Dictionary containing version information and status
356
+ """
357
+ is_consistent, version_infos = self.check_consistency()
358
+
359
+ report: Dict[str, Any] = {
360
+ "timestamp": datetime.now().isoformat(),
361
+ "working_directory": str(self.working_dir),
362
+ "is_consistent": is_consistent,
363
+ "version_count": len(version_infos),
364
+ "versions": [],
365
+ "issues": [],
366
+ "recommendations": [],
367
+ }
368
+
369
+ # Add version information
370
+ versions_list: List[Dict[str, Any]] = report["versions"] # type: ignore[assignment]
371
+ for info in version_infos:
372
+ versions_list.append(
373
+ {
374
+ "version": info.version,
375
+ "source": info.source.value,
376
+ "file": str(info.file_path),
377
+ "is_valid": info.is_valid,
378
+ "last_modified": info.timestamp.isoformat(),
379
+ }
380
+ )
381
+
382
+ # Add issues and recommendations
383
+ issues_list: List[str] = report["issues"] # type: ignore[assignment]
384
+ recommendations_list: List[str] = report["recommendations"] # type: ignore[assignment]
385
+
386
+ if not version_infos:
387
+ issues_list.append("No version information found in any file")
388
+ recommendations_list.append("Initialize version in pyproject.toml")
389
+
390
+ if not is_consistent:
391
+ issues_list.append("Version inconsistency detected across files")
392
+ recommendations_list.append("Run synchronize_all() to fix inconsistencies")
393
+
394
+ invalid_versions = [info for info in version_infos if not info.is_valid]
395
+ if invalid_versions:
396
+ issues_list.append(f"Invalid version format in {len(invalid_versions)} files")
397
+ recommendations_list.append("Fix version format to follow semantic versioning")
398
+
399
+ return report
400
+
401
+
402
+ # Convenience functions for common operations
403
+ def check_project_versions(working_dir: Optional[Path] = None) -> Dict[str, Any]:
404
+ """
405
+ Check version consistency for the project
406
+
407
+ Args:
408
+ working_dir: Project directory (defaults to current directory)
409
+
410
+ Returns:
411
+ Version report dictionary
412
+ """
413
+ synchronizer = VersionSynchronizer(working_dir)
414
+ return synchronizer.get_version_report()
415
+
416
+
417
+ def synchronize_project_versions(working_dir: Optional[Path] = None, dry_run: bool = False) -> bool:
418
+ """
419
+ Synchronize all version files in the project
420
+
421
+ Args:
422
+ working_dir: Project directory (defaults to current directory)
423
+ dry_run: If True, only show what would be changed
424
+
425
+ Returns:
426
+ True if synchronization successful
427
+ """
428
+ synchronizer = VersionSynchronizer(working_dir)
429
+ return synchronizer.synchronize_all(dry_run=dry_run)
@@ -0,0 +1,56 @@
1
+ """
2
+ MoAI Foundation module - Core foundation-level implementations.
3
+ Includes: EARS methodology, programming language ecosystem, Git workflows.
4
+ """
5
+
6
+ from .ears import EARSAnalyzer, EARSParser, EARSValidator
7
+ from .git import (
8
+ BranchingStrategySelector,
9
+ ConventionalCommitValidator,
10
+ GitInfo,
11
+ GitPerformanceOptimizer,
12
+ GitVersionDetector,
13
+ GitWorkflowManager,
14
+ TDDCommitPhase,
15
+ ValidateResult,
16
+ )
17
+ from .langs import (
18
+ AntiPatternDetector,
19
+ EcosystemAnalyzer,
20
+ FrameworkRecommender,
21
+ LanguageInfo,
22
+ LanguageVersionManager,
23
+ Pattern,
24
+ PatternAnalyzer,
25
+ PerformanceOptimizer,
26
+ TestingStrategy,
27
+ TestingStrategyAdvisor,
28
+ )
29
+
30
+ __all__ = [
31
+ # EARS
32
+ "EARSParser",
33
+ "EARSValidator",
34
+ "EARSAnalyzer",
35
+ # Language Ecosystem
36
+ "LanguageVersionManager",
37
+ "FrameworkRecommender",
38
+ "PatternAnalyzer",
39
+ "AntiPatternDetector",
40
+ "EcosystemAnalyzer",
41
+ "PerformanceOptimizer",
42
+ "TestingStrategyAdvisor",
43
+ # Git Workflow
44
+ "GitVersionDetector",
45
+ "ConventionalCommitValidator",
46
+ "BranchingStrategySelector",
47
+ "GitWorkflowManager",
48
+ "GitPerformanceOptimizer",
49
+ # Data structures
50
+ "LanguageInfo",
51
+ "Pattern",
52
+ "TestingStrategy",
53
+ "GitInfo",
54
+ "ValidateResult",
55
+ "TDDCommitPhase",
56
+ ]