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,571 @@
1
+ """
2
+ Enterprise Testing Workflow with AI Integration
3
+ Context7 MCP-powered automated testing orchestration
4
+ """
5
+
6
+ import asyncio
7
+ import logging
8
+ from dataclasses import dataclass
9
+ from datetime import datetime
10
+ from enum import Enum
11
+ from typing import Dict, List
12
+
13
+ # Configure logging
14
+ logging.basicConfig(level=logging.INFO)
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ class TestStatus(Enum):
19
+ PENDING = "pending"
20
+ RUNNING = "running"
21
+ PASSED = "passed"
22
+ FAILED = "failed"
23
+ SKIPPED = "skipped"
24
+
25
+
26
+ @dataclass
27
+ class TestResult:
28
+ name: str
29
+ status: TestStatus
30
+ execution_time: float
31
+ assertions: int
32
+ errors: List[str]
33
+ browser: str
34
+ viewport: Dict[str, int]
35
+ timestamp: datetime
36
+
37
+
38
+ @dataclass
39
+ class TestSuite:
40
+ name: str
41
+ tests: List[TestResult]
42
+ total_time: float
43
+ pass_rate: float
44
+ coverage_percentage: float
45
+
46
+
47
+ class EnterpriseTestOrchestrator:
48
+ """AI-powered enterprise test orchestration with Context7 integration"""
49
+
50
+ def __init__(self, context7_client=None):
51
+ self.context7_client = context7_client
52
+ self.test_results = []
53
+ self.coverage_data = {}
54
+
55
+ async def create_test_plan(self, application_info: Dict) -> Dict:
56
+ """AI-powered test plan generation using Context7 patterns"""
57
+
58
+ logger.info("๐Ÿง  Generating AI-powered test plan...")
59
+
60
+ # Analyze application characteristics
61
+ app_type = self._analyze_application_type(application_info)
62
+ complexity = self._assess_complexity(application_info)
63
+
64
+ # Get Context7 testing patterns
65
+ context7_patterns = await self._get_context7_patterns(app_type)
66
+
67
+ # Generate comprehensive test plan
68
+ test_plan = {
69
+ "application_type": app_type,
70
+ "complexity_level": complexity,
71
+ "test_strategies": self._generate_test_strategies(app_type, complexity, context7_patterns),
72
+ "browser_matrix": self._create_browser_matrix(complexity),
73
+ "coverage_targets": self._set_coverage_targets(app_type),
74
+ "performance_benchmarks": self._define_performance_benchmarks(app_type),
75
+ "visual_regression_config": context7_patterns.get("visual_regression", {}),
76
+ "ai_enhancements": {
77
+ "smart_selectors": True,
78
+ "failure_classification": True,
79
+ "maintenance_prediction": True,
80
+ "performance_optimization": True,
81
+ },
82
+ }
83
+
84
+ logger.info(f"โœ… Test plan generated for {app_type} application")
85
+ return test_plan
86
+
87
+ def _analyze_application_type(self, app_info: Dict) -> str:
88
+ """AI-powered application type classification"""
89
+
90
+ # Analyze characteristics
91
+ has_forms = app_info.get("has_forms", False)
92
+ has_authentication = app_info.get("has_authentication", False)
93
+ is_single_page = app_info.get("is_single_page", False)
94
+ has_apis = app_info.get("has_apis", False)
95
+ is_e_commerce = app_info.get("is_e_commerce", False)
96
+
97
+ # AI classification logic
98
+ if is_e_commerce:
99
+ return "e-commerce"
100
+ elif has_authentication and has_forms:
101
+ return "enterprise_portal"
102
+ elif is_single_page and has_apis:
103
+ return "spa_with_apis"
104
+ elif has_forms:
105
+ return "content_management"
106
+ else:
107
+ return "brochure_website"
108
+
109
+ def _assess_complexity(self, app_info: Dict) -> str:
110
+ """AI-powered complexity assessment"""
111
+
112
+ complexity_score = 0
113
+
114
+ # Scoring factors
115
+ if app_info.get("has_forms", False):
116
+ complexity_score += 2
117
+ if app_info.get("has_authentication", False):
118
+ complexity_score += 3
119
+ if app_info.get("has_apis", False):
120
+ complexity_score += 2
121
+ if app_info.get("is_multi_language", False):
122
+ complexity_score += 2
123
+ if app_info.get("has_file_upload", False):
124
+ complexity_score += 1
125
+ if app_info.get("has_real_time_features", False):
126
+ complexity_score += 3
127
+
128
+ if complexity_score >= 7:
129
+ return "high"
130
+ elif complexity_score >= 4:
131
+ return "medium"
132
+ else:
133
+ return "low"
134
+
135
+ async def _get_context7_patterns(self, app_type: str) -> Dict:
136
+ """Fetch Context7 MCP patterns for application type"""
137
+
138
+ # Simulate Context7 integration
139
+ patterns = {
140
+ "e-commerce": {
141
+ "critical_paths": ["product_browse", "add_to_cart", "checkout"],
142
+ "visual_regression": {"ignore_regions": ["price", "inventory_count"]},
143
+ "performance_thresholds": {"lcp": 2.0, "fid": 100},
144
+ },
145
+ "enterprise_portal": {
146
+ "critical_paths": ["login", "dashboard", "data_export"],
147
+ "visual_regression": {"ignore_regions": ["user_data", "timestamps"]},
148
+ "performance_thresholds": {"lcp": 2.5, "fid": 150},
149
+ },
150
+ "spa_with_apis": {
151
+ "critical_paths": ["initial_load", "api_calls", "navigation"],
152
+ "visual_regression": {"ignore_regions": ["dynamic_content"]},
153
+ "performance_thresholds": {"lcp": 1.5, "fid": 50},
154
+ },
155
+ }
156
+
157
+ return patterns.get(app_type, {})
158
+
159
+ def _generate_test_strategies(self, app_type: str, complexity: str, patterns: Dict) -> List[Dict]:
160
+ """Generate AI-enhanced test strategies"""
161
+
162
+ strategies = [
163
+ {
164
+ "name": "functional_testing",
165
+ "priority": "high",
166
+ "automation_level": "full",
167
+ "ai_enhancements": ["smart_selectors", "failure_classification"],
168
+ },
169
+ {
170
+ "name": "visual_regression",
171
+ "priority": "medium" if complexity == "low" else "high",
172
+ "automation_level": "full",
173
+ "ai_enhancements": ["ai_comparison", "ignore_regions"],
174
+ },
175
+ {
176
+ "name": "performance_testing",
177
+ "priority": "medium",
178
+ "automation_level": "partial",
179
+ "ai_enhancements": ["performance_prediction", "bottleneck_detection"],
180
+ },
181
+ ]
182
+
183
+ # Add app-specific strategies
184
+ if app_type == "e-commerce":
185
+ strategies.append(
186
+ {
187
+ "name": "checkout_flow_testing",
188
+ "priority": "critical",
189
+ "automation_level": "full",
190
+ "ai_enhancements": ["payment_simulation", "error_handling"],
191
+ }
192
+ )
193
+
194
+ return strategies
195
+
196
+ def _create_browser_matrix(self, complexity: str) -> List[Dict]:
197
+ """AI-optimized browser testing matrix"""
198
+
199
+ base_matrix = [
200
+ {
201
+ "browser": "chromium",
202
+ "versions": ["latest"],
203
+ "viewports": ["desktop", "mobile"],
204
+ },
205
+ {"browser": "firefox", "versions": ["latest"], "viewports": ["desktop"]},
206
+ {
207
+ "browser": "webkit",
208
+ "versions": ["latest"],
209
+ "viewports": ["desktop", "mobile"],
210
+ },
211
+ ]
212
+
213
+ if complexity in ["high", "medium"]:
214
+ # Add more comprehensive testing for complex applications
215
+ base_matrix[0]["versions"].extend(["latest-1"])
216
+ base_matrix[1]["viewports"].append("mobile")
217
+
218
+ return base_matrix
219
+
220
+ def _set_coverage_targets(self, app_type: str) -> Dict:
221
+ """AI-optimized coverage targets"""
222
+
223
+ targets = {
224
+ "functional_coverage": 85,
225
+ "visual_coverage": 80,
226
+ "performance_coverage": 70,
227
+ }
228
+
229
+ if app_type == "e-commerce":
230
+ targets["functional_coverage"] = 95
231
+ targets["visual_coverage"] = 85
232
+ elif app_type == "enterprise_portal":
233
+ targets["functional_coverage"] = 90
234
+
235
+ return targets
236
+
237
+ def _define_performance_benchmarks(self, app_type: str) -> Dict:
238
+ """Context7-powered performance benchmarks"""
239
+
240
+ benchmarks = {
241
+ "lcp": {"target": 2.5, "warning": 4.0},
242
+ "fid": {"target": 100, "warning": 300},
243
+ "cls": {"target": 0.1, "warning": 0.25},
244
+ "tti": {"target": 3.8, "warning": 7.3},
245
+ }
246
+
247
+ if app_type == "spa_with_apis":
248
+ benchmarks["lcp"]["target"] = 1.5
249
+ benchmarks["fid"]["target"] = 50
250
+
251
+ return benchmarks
252
+
253
+ async def execute_test_suite(self, test_plan: Dict) -> TestSuite:
254
+ """Execute AI-orchestrated test suite"""
255
+
256
+ logger.info("๐Ÿš€ Executing AI-orchestrated test suite...")
257
+
258
+ test_results = []
259
+ total_start_time = datetime.now()
260
+
261
+ # Execute test strategies
262
+ for strategy in test_plan["test_strategies"]:
263
+ strategy_results = await self._execute_strategy(strategy, test_plan)
264
+ test_results.extend(strategy_results)
265
+
266
+ total_time = (datetime.now() - total_start_time).total_seconds()
267
+
268
+ # Calculate metrics
269
+ passed_tests = [t for t in test_results if t.status == TestStatus.PASSED]
270
+ pass_rate = len(passed_tests) / len(test_results) * 100 if test_results else 0
271
+
272
+ # Calculate coverage
273
+ coverage_percentage = self._calculate_coverage(test_results, test_plan)
274
+
275
+ test_suite = TestSuite(
276
+ name=f"Enterprise Test Suite - {test_plan['application_type']}",
277
+ tests=test_results,
278
+ total_time=total_time,
279
+ pass_rate=pass_rate,
280
+ coverage_percentage=coverage_percentage,
281
+ )
282
+
283
+ logger.info(f"โœ… Test suite completed: {pass_rate:.1f}% pass rate, {coverage_percentage:.1f}% coverage")
284
+ return test_suite
285
+
286
+ async def _execute_strategy(self, strategy: Dict, test_plan: Dict) -> List[TestResult]:
287
+ """Execute individual test strategy with AI enhancements"""
288
+
289
+ logger.info(f"๐Ÿงช Executing strategy: {strategy['name']}")
290
+
291
+ # Mock test execution (in real implementation, this would run actual Playwright tests)
292
+ test_results = []
293
+
294
+ # Simulate test execution for each browser in matrix
295
+ for browser_config in test_plan["browser_matrix"]:
296
+ for viewport in ["desktop", "mobile"]:
297
+ test_name = f"{strategy['name']}_{browser_config['browser']}_{viewport}"
298
+
299
+ # Simulate test execution
300
+ execution_time = 2.5 + len(strategy["name"]) * 0.1 # Simulate variable execution times
301
+ status = TestStatus.PASSED if execution_time < 5 else TestStatus.FAILED
302
+
303
+ test_result = TestResult(
304
+ name=test_name,
305
+ status=status,
306
+ execution_time=execution_time,
307
+ assertions=5 + len(strategy["ai_enhancements"]),
308
+ errors=[] if status == TestStatus.PASSED else ["Timeout error"],
309
+ browser=browser_config["browser"],
310
+ viewport={
311
+ "width": 1920 if viewport == "desktop" else 375,
312
+ "height": 1080 if viewport == "desktop" else 667,
313
+ },
314
+ timestamp=datetime.now(),
315
+ )
316
+
317
+ test_results.append(test_result)
318
+
319
+ return test_results
320
+
321
+ def _calculate_coverage(self, test_results: List[TestResult], test_plan: Dict) -> float:
322
+ """AI-powered coverage calculation"""
323
+
324
+ # Simplified coverage calculation
325
+ total_tests = len(test_results)
326
+ passed_tests = len([t for t in test_results if t.status == TestStatus.PASSED])
327
+
328
+ # Factor in different test types
329
+ strategies_count = len(test_plan["test_strategies"])
330
+ browser_coverage = len(test_plan["browser_matrix"])
331
+
332
+ coverage = (
333
+ passed_tests / total_tests * 0.6 + (strategies_count / 3) * 0.2 + (browser_coverage / 3) * 0.2
334
+ ) * 100
335
+
336
+ return min(coverage, 100.0)
337
+
338
+ async def generate_intelligence_report(self, test_suite: TestSuite) -> Dict:
339
+ """Generate AI-powered testing intelligence report"""
340
+
341
+ logger.info("๐Ÿ“Š Generating AI intelligence report...")
342
+
343
+ # Analyze test results
344
+ failed_tests = [t for t in test_suite.tests if t.status == TestStatus.FAILED]
345
+ performance_issues = [t for t in test_suite.tests if t.execution_time > 5.0]
346
+
347
+ # AI-powered insights
348
+ insights = {
349
+ "summary": {
350
+ "total_tests": len(test_suite.tests),
351
+ "pass_rate": test_suite.pass_rate,
352
+ "coverage": test_suite.coverage_percentage,
353
+ "execution_time": test_suite.total_time,
354
+ },
355
+ "quality_metrics": {
356
+ "reliability_score": self._calculate_reliability_score(test_suite),
357
+ "performance_score": self._calculate_performance_score(test_suite),
358
+ "stability_score": self._calculate_stability_score(test_suite),
359
+ },
360
+ "ai_insights": {
361
+ "failure_patterns": self._analyze_failure_patterns(failed_tests),
362
+ "performance_bottlenecks": self._identify_performance_bottlenecks(performance_issues),
363
+ "maintenance_recommendations": self._generate_maintenance_recommendations(test_suite),
364
+ "optimization_opportunities": self._identify_optimization_opportunities(test_suite),
365
+ },
366
+ "context7_recommendations": {
367
+ "latest_patterns": "Applied Context7 MCP best practices",
368
+ "version_updates": "Playwright patterns are current",
369
+ "community_insights": "Integrated collective testing wisdom",
370
+ },
371
+ }
372
+
373
+ return insights
374
+
375
+ def _calculate_reliability_score(self, test_suite: TestSuite) -> float:
376
+ """AI-powered reliability scoring"""
377
+
378
+ base_score = test_suite.pass_rate
379
+
380
+ # Factor in coverage
381
+ coverage_factor = test_suite.coverage_percentage / 100
382
+
383
+ # Factor in consistency (standard deviation of execution times)
384
+ execution_times = [t.execution_time for t in test_suite.tests]
385
+ avg_time = sum(execution_times) / len(execution_times) if execution_times else 1
386
+ variance = sum((t - avg_time) ** 2 for t in execution_times) / len(execution_times) if execution_times else 0
387
+ consistency_factor = 1 - min(variance / avg_time**2, 1) if avg_time > 0 else 0
388
+
389
+ reliability_score = base_score * 0.6 + coverage_factor * 100 * 0.2 + consistency_factor * 100 * 0.2
390
+ return min(reliability_score, 100.0)
391
+
392
+ def _calculate_performance_score(self, test_suite: TestSuite) -> float:
393
+ """AI-powered performance scoring"""
394
+
395
+ execution_times = [t.execution_time for t in test_suite.tests]
396
+
397
+ if not execution_times:
398
+ return 100.0
399
+
400
+ avg_time = sum(execution_times) / len(execution_times)
401
+
402
+ # Score based on average execution time (lower is better)
403
+ if avg_time <= 2.0:
404
+ return 100.0
405
+ elif avg_time <= 5.0:
406
+ return 80.0
407
+ elif avg_time <= 10.0:
408
+ return 60.0
409
+ else:
410
+ return 40.0
411
+
412
+ def _calculate_stability_score(self, test_suite: TestSuite) -> float:
413
+ """AI-powered stability scoring"""
414
+
415
+ # Factor in test failure patterns
416
+ failed_tests = [t for t in test_suite.tests if t.status == TestStatus.FAILED]
417
+
418
+ if not failed_tests:
419
+ return 100.0
420
+
421
+ # Check if failures are consistent or random
422
+ browser_failures = {}
423
+ for test in failed_tests:
424
+ browser_failures[test.browser] = browser_failures.get(test.browser, 0) + 1
425
+
426
+ # More consistent failures across browsers indicate application issues
427
+ # Random failures indicate test instability
428
+ max_failures = max(browser_failures.values()) if browser_failures else 0
429
+ total_failures = len(failed_tests)
430
+
431
+ if max_failures == total_failures:
432
+ # All failures in one browser - likely browser compatibility issue
433
+ return 70.0
434
+ elif max_failures > total_failures * 0.7:
435
+ # Most failures in one browser
436
+ return 80.0
437
+ else:
438
+ # Distributed failures - test instability
439
+ return 50.0
440
+
441
+ def _analyze_failure_patterns(self, failed_tests: List[TestResult]) -> List[str]:
442
+ """AI-powered failure pattern analysis"""
443
+
444
+ patterns = []
445
+
446
+ if not failed_tests:
447
+ return ["No failures detected"]
448
+
449
+ # Analyze browser patterns
450
+ browser_failures = {}
451
+ for test in failed_tests:
452
+ browser_failures[test.browser] = browser_failures.get(test.browser, 0) + 1
453
+
454
+ if len(browser_failures) == 1:
455
+ patterns.append(f"Browser-specific issues: {list(browser_failures.keys())[0]}")
456
+
457
+ # Analyze timing patterns
458
+ slow_tests = [t for t in failed_tests if t.execution_time > 5.0]
459
+ if slow_tests:
460
+ patterns.append(f"Performance-related failures: {len(slow_tests)} slow tests")
461
+
462
+ return patterns
463
+
464
+ def _identify_performance_bottlenecks(self, performance_issues: List[TestResult]) -> List[str]:
465
+ """AI-powered performance bottleneck identification"""
466
+
467
+ bottlenecks = []
468
+
469
+ if not performance_issues:
470
+ return bottlenecks
471
+
472
+ avg_execution_time = sum(t.execution_time for t in performance_issues) / len(performance_issues)
473
+
474
+ if avg_execution_time > 10.0:
475
+ bottlenecks.append("Severe performance degradation detected")
476
+ elif avg_execution_time > 5.0:
477
+ bottlenecks.append("Moderate performance issues identified")
478
+
479
+ return bottlenecks
480
+
481
+ def _generate_maintenance_recommendations(self, test_suite: TestSuite) -> List[str]:
482
+ """AI-powered maintenance recommendations"""
483
+
484
+ recommendations = []
485
+
486
+ # Coverage recommendations
487
+ if test_suite.coverage_percentage < 80:
488
+ recommendations.append("Increase test coverage by adding more test scenarios")
489
+
490
+ # Reliability recommendations
491
+ if test_suite.pass_rate < 90:
492
+ recommendations.append("Investigate failing tests and improve test stability")
493
+
494
+ # Performance recommendations
495
+ avg_time = sum(t.execution_time for t in test_suite.tests) / len(test_suite.tests) if test_suite.tests else 0
496
+ if avg_time > 5.0:
497
+ recommendations.append("Optimize test execution time through parallelization")
498
+
499
+ return recommendations
500
+
501
+ def _identify_optimization_opportunities(self, test_suite: TestSuite) -> List[str]:
502
+ """AI-powered optimization opportunity identification"""
503
+
504
+ opportunities = []
505
+
506
+ # Test parallelization opportunities
507
+ if test_suite.total_time > 60:
508
+ opportunities.append("Implement test parallelization to reduce execution time")
509
+
510
+ # Smart selector opportunities
511
+ opportunities.append("Implement AI-powered smart selectors for better test reliability")
512
+
513
+ # Visual regression optimization
514
+ opportunities.append("Optimize visual regression tests with AI-driven ignore regions")
515
+
516
+ return opportunities
517
+
518
+
519
+ # Main execution example
520
+ async def main():
521
+ """Example enterprise testing workflow"""
522
+
523
+ # Initialize orchestrator
524
+ orchestrator = EnterpriseTestOrchestrator()
525
+
526
+ # Define application information
527
+ application_info = {
528
+ "name": "Enterprise Web Application",
529
+ "url": "https://example.com",
530
+ "has_forms": True,
531
+ "has_authentication": True,
532
+ "is_single_page": True,
533
+ "has_apis": True,
534
+ "is_e_commerce": False,
535
+ "is_multi_language": True,
536
+ "has_file_upload": True,
537
+ "has_real_time_features": False,
538
+ }
539
+
540
+ print("๐ŸŽฏ Enterprise AI-Powered Testing Workflow")
541
+ print("=" * 50)
542
+
543
+ # Step 1: Generate AI-powered test plan
544
+ test_plan = await orchestrator.create_test_plan(application_info)
545
+ print(f"๐Ÿ“‹ Test Plan Generated: {test_plan['application_type']} ({test_plan['complexity_level']} complexity)")
546
+
547
+ # Step 2: Execute test suite
548
+ test_suite = await orchestrator.execute_test_suite(test_plan)
549
+ print(f"๐Ÿงช Test Suite Completed: {test_suite.pass_rate:.1f}% pass rate")
550
+
551
+ # Step 3: Generate intelligence report
552
+ intelligence_report = await orchestrator.generate_intelligence_report(test_suite)
553
+
554
+ print("\n๐Ÿ“Š AI Intelligence Report:")
555
+ print(f" Reliability Score: {intelligence_report['quality_metrics']['reliability_score']:.1f}/100")
556
+ print(f" Performance Score: {intelligence_report['quality_metrics']['performance_score']:.1f}/100")
557
+ print(f" Stability Score: {intelligence_report['quality_metrics']['stability_score']:.1f}/100")
558
+
559
+ print("\n๐Ÿ’ก AI Recommendations:")
560
+ for rec in intelligence_report["ai_insights"]["maintenance_recommendations"]:
561
+ print(f" โ€ข {rec}")
562
+
563
+ print("\n๐Ÿš€ Optimization Opportunities:")
564
+ for opp in intelligence_report["ai_insights"]["optimization_opportunities"]:
565
+ print(f" โ€ข {opp}")
566
+
567
+ print("\nโœ… Enterprise testing workflow completed successfully")
568
+
569
+
570
+ if __name__ == "__main__":
571
+ asyncio.run(main())