moai-adk 0.35.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (502) hide show
  1. moai_adk/__init__.py +10 -0
  2. moai_adk/__main__.py +199 -0
  3. moai_adk/cli/__init__.py +6 -0
  4. moai_adk/cli/commands/__init__.py +17 -0
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +272 -0
  7. moai_adk/cli/commands/init.py +372 -0
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +104 -0
  10. moai_adk/cli/commands/update.py +2686 -0
  11. moai_adk/cli/main.py +13 -0
  12. moai_adk/cli/prompts/__init__.py +5 -0
  13. moai_adk/cli/prompts/init_prompts.py +219 -0
  14. moai_adk/cli/spec_status.py +263 -0
  15. moai_adk/cli/ui/__init__.py +44 -0
  16. moai_adk/cli/ui/progress.py +422 -0
  17. moai_adk/cli/ui/prompts.py +389 -0
  18. moai_adk/cli/ui/theme.py +129 -0
  19. moai_adk/cli/worktree/__init__.py +27 -0
  20. moai_adk/cli/worktree/__main__.py +31 -0
  21. moai_adk/cli/worktree/cli.py +683 -0
  22. moai_adk/cli/worktree/exceptions.py +89 -0
  23. moai_adk/cli/worktree/manager.py +493 -0
  24. moai_adk/cli/worktree/models.py +65 -0
  25. moai_adk/cli/worktree/registry.py +422 -0
  26. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  27. moai_adk/core/__init__.py +1 -0
  28. moai_adk/core/analysis/__init__.py +9 -0
  29. moai_adk/core/analysis/session_analyzer.py +400 -0
  30. moai_adk/core/claude_integration.py +393 -0
  31. moai_adk/core/command_helpers.py +270 -0
  32. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  33. moai_adk/core/config/__init__.py +19 -0
  34. moai_adk/core/config/auto_spec_config.py +340 -0
  35. moai_adk/core/config/migration.py +244 -0
  36. moai_adk/core/config/unified.py +436 -0
  37. moai_adk/core/context_manager.py +273 -0
  38. moai_adk/core/diagnostics/__init__.py +19 -0
  39. moai_adk/core/diagnostics/slash_commands.py +159 -0
  40. moai_adk/core/enterprise_features.py +1404 -0
  41. moai_adk/core/error_recovery_system.py +1902 -0
  42. moai_adk/core/event_driven_hook_system.py +1371 -0
  43. moai_adk/core/git/__init__.py +31 -0
  44. moai_adk/core/git/branch.py +25 -0
  45. moai_adk/core/git/branch_manager.py +129 -0
  46. moai_adk/core/git/checkpoint.py +134 -0
  47. moai_adk/core/git/commit.py +67 -0
  48. moai_adk/core/git/conflict_detector.py +413 -0
  49. moai_adk/core/git/event_detector.py +79 -0
  50. moai_adk/core/git/manager.py +216 -0
  51. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  52. moai_adk/core/input_validation_middleware.py +1006 -0
  53. moai_adk/core/integration/__init__.py +22 -0
  54. moai_adk/core/integration/engine.py +157 -0
  55. moai_adk/core/integration/integration_tester.py +226 -0
  56. moai_adk/core/integration/models.py +88 -0
  57. moai_adk/core/integration/utils.py +211 -0
  58. moai_adk/core/issue_creator.py +305 -0
  59. moai_adk/core/jit_context_loader.py +956 -0
  60. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  61. moai_adk/core/language_config.py +202 -0
  62. moai_adk/core/language_config_resolver.py +572 -0
  63. moai_adk/core/language_validator.py +543 -0
  64. moai_adk/core/mcp/setup.py +116 -0
  65. moai_adk/core/merge/__init__.py +9 -0
  66. moai_adk/core/merge/analyzer.py +605 -0
  67. moai_adk/core/migration/__init__.py +18 -0
  68. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  69. moai_adk/core/migration/backup_manager.py +277 -0
  70. moai_adk/core/migration/custom_element_scanner.py +358 -0
  71. moai_adk/core/migration/file_migrator.py +209 -0
  72. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  73. moai_adk/core/migration/selective_restorer.py +470 -0
  74. moai_adk/core/migration/template_utils.py +74 -0
  75. moai_adk/core/migration/user_selection_ui.py +338 -0
  76. moai_adk/core/migration/version_detector.py +139 -0
  77. moai_adk/core/migration/version_migrator.py +228 -0
  78. moai_adk/core/performance/__init__.py +6 -0
  79. moai_adk/core/performance/cache_system.py +316 -0
  80. moai_adk/core/performance/parallel_processor.py +116 -0
  81. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  82. moai_adk/core/project/__init__.py +1 -0
  83. moai_adk/core/project/backup_utils.py +70 -0
  84. moai_adk/core/project/checker.py +300 -0
  85. moai_adk/core/project/detector.py +293 -0
  86. moai_adk/core/project/initializer.py +387 -0
  87. moai_adk/core/project/phase_executor.py +716 -0
  88. moai_adk/core/project/validator.py +139 -0
  89. moai_adk/core/quality/__init__.py +6 -0
  90. moai_adk/core/quality/trust_checker.py +377 -0
  91. moai_adk/core/quality/validators/__init__.py +6 -0
  92. moai_adk/core/quality/validators/base_validator.py +19 -0
  93. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  94. moai_adk/core/robust_json_parser.py +611 -0
  95. moai_adk/core/rollback_manager.py +918 -0
  96. moai_adk/core/session_manager.py +651 -0
  97. moai_adk/core/skill_loading_system.py +579 -0
  98. moai_adk/core/spec/confidence_scoring.py +680 -0
  99. moai_adk/core/spec/ears_template_engine.py +1247 -0
  100. moai_adk/core/spec/quality_validator.py +687 -0
  101. moai_adk/core/spec_status_manager.py +478 -0
  102. moai_adk/core/template/__init__.py +7 -0
  103. moai_adk/core/template/backup.py +174 -0
  104. moai_adk/core/template/config.py +191 -0
  105. moai_adk/core/template/languages.py +43 -0
  106. moai_adk/core/template/merger.py +233 -0
  107. moai_adk/core/template/processor.py +1200 -0
  108. moai_adk/core/template_engine.py +310 -0
  109. moai_adk/core/template_variable_synchronizer.py +417 -0
  110. moai_adk/core/unified_permission_manager.py +745 -0
  111. moai_adk/core/user_behavior_analytics.py +851 -0
  112. moai_adk/core/version_sync.py +429 -0
  113. moai_adk/foundation/__init__.py +56 -0
  114. moai_adk/foundation/backend.py +1027 -0
  115. moai_adk/foundation/database.py +1115 -0
  116. moai_adk/foundation/devops.py +1585 -0
  117. moai_adk/foundation/ears.py +431 -0
  118. moai_adk/foundation/frontend.py +870 -0
  119. moai_adk/foundation/git/commit_templates.py +557 -0
  120. moai_adk/foundation/git.py +376 -0
  121. moai_adk/foundation/langs.py +484 -0
  122. moai_adk/foundation/ml_ops.py +1162 -0
  123. moai_adk/foundation/testing.py +1524 -0
  124. moai_adk/foundation/trust/trust_principles.py +676 -0
  125. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  126. moai_adk/project/__init__.py +0 -0
  127. moai_adk/project/configuration.py +1084 -0
  128. moai_adk/project/documentation.py +566 -0
  129. moai_adk/project/schema.py +447 -0
  130. moai_adk/statusline/__init__.py +38 -0
  131. moai_adk/statusline/alfred_detector.py +105 -0
  132. moai_adk/statusline/config.py +376 -0
  133. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  134. moai_adk/statusline/git_collector.py +190 -0
  135. moai_adk/statusline/main.py +322 -0
  136. moai_adk/statusline/metrics_tracker.py +78 -0
  137. moai_adk/statusline/renderer.py +343 -0
  138. moai_adk/statusline/update_checker.py +129 -0
  139. moai_adk/statusline/version_reader.py +741 -0
  140. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
  141. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  142. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  143. moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
  144. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  145. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  146. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  147. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  148. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  149. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  150. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  151. moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
  152. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  153. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  154. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  155. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  156. moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
  157. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  158. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  159. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  160. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  161. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  164. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  165. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  166. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  167. moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
  168. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  169. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  170. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  171. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  172. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  173. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  185. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  186. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  187. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  188. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  189. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
  190. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  191. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  192. moai_adk/templates/.claude/settings.json +172 -0
  193. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
  194. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  195. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  196. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  200. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  201. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  202. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  203. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  204. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  205. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
  206. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  207. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  210. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  211. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  212. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  213. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  214. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  215. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
  216. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  217. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  221. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  222. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  223. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  224. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  230. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  231. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  232. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  284. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
  285. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
  286. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  287. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  288. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  289. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  290. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
  291. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  292. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  293. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
  294. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  295. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
  297. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  298. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
  304. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
  305. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
  306. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  307. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  308. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
  309. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  310. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  311. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
  312. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  313. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  314. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
  315. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  316. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  318. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  319. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  320. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  321. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  331. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  332. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  333. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  334. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  338. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  339. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  340. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  341. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  342. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  343. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  344. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  345. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  346. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
  347. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  348. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  349. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  350. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  351. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  352. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  353. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  354. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  355. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  356. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  357. moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
  358. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
  359. moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
  360. moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
  361. moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
  362. moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
  363. moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
  364. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
  365. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
  366. moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
  367. moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
  368. moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
  369. moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
  370. moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
  371. moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
  372. moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
  373. moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
  374. moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
  375. moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
  376. moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
  377. moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
  378. moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
  379. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
  380. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
  381. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
  382. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
  383. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
  384. moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
  385. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
  386. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
  387. moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
  388. moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
  389. moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
  390. moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
  391. moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  433. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  458. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  459. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  460. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  461. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  462. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  463. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  464. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  465. moai_adk/templates/.git-hooks/pre-commit +128 -0
  466. moai_adk/templates/.git-hooks/pre-push +365 -0
  467. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  468. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  469. moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
  470. moai_adk/templates/.gitignore +222 -0
  471. moai_adk/templates/.mcp.json +13 -0
  472. moai_adk/templates/.moai/config/config.yaml +58 -0
  473. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  474. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  475. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  476. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  477. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  478. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
  479. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  480. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  481. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  482. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  483. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  484. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  485. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  486. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  487. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  488. moai_adk/templates/CLAUDE.md +642 -0
  489. moai_adk/utils/__init__.py +30 -0
  490. moai_adk/utils/banner.py +38 -0
  491. moai_adk/utils/common.py +294 -0
  492. moai_adk/utils/link_validator.py +241 -0
  493. moai_adk/utils/logger.py +147 -0
  494. moai_adk/utils/safe_file_reader.py +206 -0
  495. moai_adk/utils/timeout.py +160 -0
  496. moai_adk/utils/toon_utils.py +256 -0
  497. moai_adk/version.py +22 -0
  498. moai_adk-0.35.1.dist-info/METADATA +3018 -0
  499. moai_adk-0.35.1.dist-info/RECORD +502 -0
  500. moai_adk-0.35.1.dist-info/WHEEL +4 -0
  501. moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
  502. moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,639 @@
1
+ #!/usr/bin/env python3
2
+ """Configuration Validator for Hooks System
3
+
4
+ Validates and normalizes configuration settings for timeout management,
5
+ resource limits, and hook behavior patterns.
6
+
7
+ Features:
8
+ - Schema validation for timeout configurations
9
+ - Default value normalization
10
+ - Configuration migration support
11
+ - Validation error reporting
12
+ - Performance impact assessment
13
+ """
14
+
15
+ import json
16
+ import logging
17
+ from dataclasses import dataclass
18
+ from enum import Enum
19
+ from pathlib import Path
20
+ from typing import Any, Dict, List, Optional, Tuple
21
+
22
+
23
+ class ValidationLevel(Enum):
24
+ """Severity levels for validation issues"""
25
+
26
+ INFO = "info"
27
+ WARNING = "warning"
28
+ ERROR = "error"
29
+ CRITICAL = "critical"
30
+
31
+
32
+ @dataclass
33
+ class ValidationIssue:
34
+ """Configuration validation issue with context"""
35
+
36
+ level: ValidationLevel
37
+ path: str
38
+ message: str
39
+ suggestion: Optional[str] = None
40
+ current_value: Optional[str] = None
41
+
42
+
43
+ @dataclass
44
+ class TimeoutConfigSchema:
45
+ """Schema for timeout configuration validation"""
46
+
47
+ min_timeout_ms: int = 500
48
+ max_timeout_ms: int = 30000
49
+ default_timeout_ms: int = 5000
50
+ recommended_retry_count: int = 2
51
+ max_retry_count: int = 5
52
+ default_retry_delay_ms: int = 200
53
+ max_retry_delay_ms: int = 5000
54
+
55
+
56
+ @dataclass
57
+ class ResourceConfigSchema:
58
+ """Schema for resource configuration validation"""
59
+
60
+ default_memory_limit_mb: int = 100
61
+ max_memory_limit_mb: int = 1000
62
+ default_max_workers: int = 4
63
+ max_max_workers: int = 16
64
+ cache_size_default: int = 100
65
+ cache_size_max: int = 1000
66
+
67
+
68
+ class ConfigurationValidator:
69
+ """Validates and normalizes hooks configuration
70
+
71
+ Features:
72
+ - Comprehensive schema validation
73
+ - Automatic value normalization
74
+ - Performance impact analysis
75
+ - Migration support for older configs
76
+ - Detailed validation reporting
77
+ """
78
+
79
+ def __init__(self):
80
+ self._logger = logging.getLogger(__name__)
81
+ self._timeout_schema = TimeoutConfigSchema()
82
+ self._resource_schema = ResourceConfigSchema()
83
+
84
+ # Hook-specific configuration templates
85
+ self._hook_templates = {
86
+ "session_start": {
87
+ "policy": "normal",
88
+ "timeout_ms": 5000,
89
+ "retry_count": 1,
90
+ "retry_delay_ms": 200,
91
+ "graceful_degradation": True,
92
+ "memory_limit_mb": 100,
93
+ },
94
+ "session_end": {
95
+ "policy": "normal",
96
+ "timeout_ms": 5000,
97
+ "retry_count": 1,
98
+ "retry_delay_ms": 500,
99
+ "graceful_degradation": True,
100
+ "memory_limit_mb": 150,
101
+ },
102
+ "pre_tool": {
103
+ "policy": "fast",
104
+ "timeout_ms": 2000,
105
+ "retry_count": 1,
106
+ "retry_delay_ms": 100,
107
+ "graceful_degradation": True,
108
+ "memory_limit_mb": 50,
109
+ },
110
+ }
111
+
112
+ def validate_config(self, config: Dict[str, Any]) -> Tuple[bool, List[ValidationIssue]]:
113
+ """Validate complete configuration and return issues"""
114
+ issues = []
115
+
116
+ # Validate top-level structure
117
+ issues.extend(self._validate_structure(config))
118
+
119
+ # Validate timeout manager configuration
120
+ if "timeout_manager" in config:
121
+ issues.extend(self._validate_timeout_manager(config["timeout_manager"]))
122
+
123
+ # Validate hook-specific configurations
124
+ if "hook_configs" in config:
125
+ issues.extend(self._validate_hook_configs(config["hook_configs"]))
126
+
127
+ # Validate resource configurations
128
+ if "resources" in config:
129
+ issues.extend(self._validate_resources(config["resources"]))
130
+
131
+ # Validate performance settings
132
+ if "performance" in config:
133
+ issues.extend(self._validate_performance(config["performance"]))
134
+
135
+ is_valid = not any(issue.level in [ValidationLevel.ERROR, ValidationLevel.CRITICAL] for issue in issues)
136
+ return is_valid, issues
137
+
138
+ def _validate_structure(self, config: Dict[str, Any]) -> List[ValidationIssue]:
139
+ """Validate top-level configuration structure"""
140
+ issues = []
141
+
142
+ # Check for required sections (optional for backward compatibility)
143
+ expected_sections = [
144
+ "timeout_manager",
145
+ "hook_configs",
146
+ "resources",
147
+ "performance",
148
+ ]
149
+ for section in expected_sections:
150
+ if section not in config:
151
+ issues.append(
152
+ ValidationIssue(
153
+ level=ValidationLevel.INFO,
154
+ path=f".{section}",
155
+ message=f"Missing optional '{section}' configuration section",
156
+ suggestion=f"Add '{section}' section to enable advanced features",
157
+ )
158
+ )
159
+
160
+ return issues
161
+
162
+ def _validate_timeout_manager(self, timeout_config: Dict[str, Any]) -> List[ValidationIssue]:
163
+ """Validate timeout manager configuration"""
164
+ issues = []
165
+ base_path = ".timeout_manager"
166
+
167
+ # Validate global timeout settings
168
+ if "global_timeout_ms" in timeout_config:
169
+ timeout_ms = timeout_config["global_timeout_ms"]
170
+ if not isinstance(timeout_ms, int) or timeout_ms < 0:
171
+ issues.append(
172
+ ValidationIssue(
173
+ level=ValidationLevel.ERROR,
174
+ path=f"{base_path}.global_timeout_ms",
175
+ message="Global timeout must be a non-negative integer",
176
+ current_value=str(timeout_ms),
177
+ suggestion="Use a positive integer like 5000 (5 seconds)",
178
+ )
179
+ )
180
+ elif timeout_ms < self._timeout_schema.min_timeout_ms:
181
+ issues.append(
182
+ ValidationIssue(
183
+ level=ValidationLevel.WARNING,
184
+ path=f"{base_path}.global_timeout_ms",
185
+ message=f"Global timeout is very low ({timeout_ms}ms)",
186
+ current_value=str(timeout_ms),
187
+ suggestion=f"Consider using at least {self._timeout_schema.min_timeout_ms}ms",
188
+ )
189
+ )
190
+ elif timeout_ms > self._timeout_schema.max_timeout_ms:
191
+ issues.append(
192
+ ValidationIssue(
193
+ level=ValidationLevel.WARNING,
194
+ path=f"{base_path}.global_timeout_ms",
195
+ message=f"Global timeout is very high ({timeout_ms}ms)",
196
+ current_value=str(timeout_ms),
197
+ suggestion=f"Consider using at most {self._timeout_schema.max_timeout_ms}ms",
198
+ )
199
+ )
200
+
201
+ # Validate default retry count
202
+ if "default_retry_count" in timeout_config:
203
+ retry_count = timeout_config["default_retry_count"]
204
+ if not isinstance(retry_count, int) or retry_count < 0:
205
+ issues.append(
206
+ ValidationIssue(
207
+ level=ValidationLevel.ERROR,
208
+ path=f"{base_path}.default_retry_count",
209
+ message="Default retry count must be a non-negative integer",
210
+ current_value=str(retry_count),
211
+ suggestion="Use an integer between 0 and 3",
212
+ )
213
+ )
214
+ elif retry_count > self._timeout_schema.max_retry_count:
215
+ issues.append(
216
+ ValidationIssue(
217
+ level=ValidationLevel.WARNING,
218
+ path=f"{base_path}.default_retry_count",
219
+ message=f"High retry count may cause performance issues ({retry_count})",
220
+ current_value=str(retry_count),
221
+ suggestion=f"Consider using at most {self._timeout_schema.max_retry_count} retries",
222
+ )
223
+ )
224
+
225
+ # Validate graceful degradation setting
226
+ if "graceful_degradation" in timeout_config:
227
+ graceful = timeout_config["graceful_degradation"]
228
+ if not isinstance(graceful, bool):
229
+ issues.append(
230
+ ValidationIssue(
231
+ level=ValidationLevel.ERROR,
232
+ path=f"{base_path}.graceful_degradation",
233
+ message="Graceful degradation must be a boolean",
234
+ current_value=str(graceful),
235
+ suggestion="Use true or false",
236
+ )
237
+ )
238
+
239
+ return issues
240
+
241
+ def _validate_hook_configs(self, hook_configs: Dict[str, Any]) -> List[ValidationIssue]:
242
+ """Validate hook-specific configurations"""
243
+ issues = []
244
+ base_path = ".hook_configs"
245
+
246
+ for hook_name, config in hook_configs.items():
247
+ hook_path = f"{base_path}.{hook_name}"
248
+ issues.extend(self._validate_single_hook_config(hook_name, config, hook_path))
249
+
250
+ return issues
251
+
252
+ def _validate_single_hook_config(self, hook_name: str, config: Dict[str, Any], path: str) -> List[ValidationIssue]:
253
+ """Validate configuration for a single hook"""
254
+ issues = []
255
+
256
+ # Get template for this hook type
257
+ self._get_hook_template(hook_name)
258
+
259
+ # Validate policy
260
+ if "policy" in config:
261
+ policy = config["policy"]
262
+ valid_policies = ["fast", "normal", "slow", "custom"]
263
+ if policy not in valid_policies:
264
+ issues.append(
265
+ ValidationIssue(
266
+ level=ValidationLevel.ERROR,
267
+ path=f"{path}.policy",
268
+ message=f"Invalid policy '{policy}'",
269
+ current_value=str(policy),
270
+ suggestion=f"Use one of: {', '.join(valid_policies)}",
271
+ )
272
+ )
273
+
274
+ # Validate timeout_ms
275
+ if "timeout_ms" in config:
276
+ timeout_ms = config["timeout_ms"]
277
+ if not isinstance(timeout_ms, int) or timeout_ms <= 0:
278
+ issues.append(
279
+ ValidationIssue(
280
+ level=ValidationLevel.ERROR,
281
+ path=f"{path}.timeout_ms",
282
+ message="Timeout must be a positive integer",
283
+ current_value=str(timeout_ms),
284
+ suggestion="Use a positive integer in milliseconds",
285
+ )
286
+ )
287
+ else:
288
+ # Policy-based timeout validation
289
+ if "policy" in config:
290
+ policy = config["policy"]
291
+ recommended = self._get_recommended_timeout(policy)
292
+ if timeout_ms < recommended * 0.5:
293
+ issues.append(
294
+ ValidationIssue(
295
+ level=ValidationLevel.WARNING,
296
+ path=f"{path}.timeout_ms",
297
+ message=f"Timeout is very low for '{policy}' policy",
298
+ current_value=str(timeout_ms),
299
+ suggestion=f"Consider using at least {recommended}ms",
300
+ )
301
+ )
302
+ elif timeout_ms > recommended * 3:
303
+ issues.append(
304
+ ValidationIssue(
305
+ level=ValidationLevel.WARNING,
306
+ path=f"{path}.timeout_ms",
307
+ message=f"Timeout is very high for '{policy}' policy",
308
+ current_value=str(timeout_ms),
309
+ suggestion=f"Consider using at most {recommended * 2}ms",
310
+ )
311
+ )
312
+
313
+ # Validate retry_count
314
+ if "retry_count" in config:
315
+ retry_count = config["retry_count"]
316
+ if not isinstance(retry_count, int) or retry_count < 0:
317
+ issues.append(
318
+ ValidationIssue(
319
+ level=ValidationLevel.ERROR,
320
+ path=f"{path}.retry_count",
321
+ message="Retry count must be a non-negative integer",
322
+ current_value=str(retry_count),
323
+ suggestion="Use an integer between 0 and 3",
324
+ )
325
+ )
326
+ elif retry_count > self._timeout_schema.max_retry_count:
327
+ issues.append(
328
+ ValidationIssue(
329
+ level=ValidationLevel.WARNING,
330
+ path=f"{path}.retry_count",
331
+ message=f"High retry count may cause delays ({retry_count})",
332
+ current_value=str(retry_count),
333
+ suggestion=f"Consider using at most {self._timeout_schema.max_retry_count} retries",
334
+ )
335
+ )
336
+
337
+ # Validate retry_delay_ms
338
+ if "retry_delay_ms" in config:
339
+ delay_ms = config["retry_delay_ms"]
340
+ if not isinstance(delay_ms, int) or delay_ms < 0:
341
+ issues.append(
342
+ ValidationIssue(
343
+ level=ValidationLevel.ERROR,
344
+ path=f"{path}.retry_delay_ms",
345
+ message="Retry delay must be a non-negative integer",
346
+ current_value=str(delay_ms),
347
+ suggestion="Use a positive integer in milliseconds",
348
+ )
349
+ )
350
+ elif delay_ms > self._timeout_schema.max_retry_delay_ms:
351
+ issues.append(
352
+ ValidationIssue(
353
+ level=ValidationLevel.WARNING,
354
+ path=f"{path}.retry_delay_ms",
355
+ message=f"High retry delay may cause poor performance ({delay_ms}ms)",
356
+ current_value=str(delay_ms),
357
+ suggestion=f"Consider using at most {self._timeout_schema.max_retry_delay_ms}ms",
358
+ )
359
+ )
360
+
361
+ return issues
362
+
363
+ def _validate_resources(self, resource_config: Dict[str, Any]) -> List[ValidationIssue]:
364
+ """Validate resource configuration"""
365
+ issues = []
366
+ base_path = ".resources"
367
+
368
+ # Validate memory limits
369
+ if "memory_limits" in resource_config:
370
+ memory_config = resource_config["memory_limits"]
371
+ if "default_mb" in memory_config:
372
+ default_mb = memory_config["default_mb"]
373
+ if not isinstance(default_mb, int) or default_mb <= 0:
374
+ issues.append(
375
+ ValidationIssue(
376
+ level=ValidationLevel.ERROR,
377
+ path=f"{base_path}.memory_limits.default_mb",
378
+ message="Default memory limit must be a positive integer",
379
+ current_value=str(default_mb),
380
+ suggestion="Use a positive integer in MB",
381
+ )
382
+ )
383
+
384
+ if "max_mb" in memory_config:
385
+ max_mb = memory_config["max_mb"]
386
+ if not isinstance(max_mb, int) or max_mb <= 0:
387
+ issues.append(
388
+ ValidationIssue(
389
+ level=ValidationLevel.ERROR,
390
+ path=f"{base_path}.memory_limits.max_mb",
391
+ message="Maximum memory limit must be a positive integer",
392
+ current_value=str(max_mb),
393
+ suggestion="Use a positive integer in MB",
394
+ )
395
+ )
396
+
397
+ # Validate worker configurations
398
+ if "workers" in resource_config:
399
+ workers_config = resource_config["workers"]
400
+ if "default_max_workers" in workers_config:
401
+ max_workers = workers_config["default_max_workers"]
402
+ if not isinstance(max_workers, int) or max_workers <= 0:
403
+ issues.append(
404
+ ValidationIssue(
405
+ level=ValidationLevel.ERROR,
406
+ path=f"{base_path}.workers.default_max_workers",
407
+ message="Default max workers must be a positive integer",
408
+ current_value=str(max_workers),
409
+ suggestion="Use a positive integer between 1 and 8",
410
+ )
411
+ )
412
+ elif max_workers > self._resource_schema.max_max_workers:
413
+ issues.append(
414
+ ValidationIssue(
415
+ level=ValidationLevel.WARNING,
416
+ path=f"{base_path}.workers.default_max_workers",
417
+ message=f"High worker count may impact system performance ({max_workers})",
418
+ current_value=str(max_workers),
419
+ suggestion=f"Consider using at most {self._resource_schema.max_max_workers} workers",
420
+ )
421
+ )
422
+
423
+ return issues
424
+
425
+ def _validate_performance(self, performance_config: Dict[str, Any]) -> List[ValidationIssue]:
426
+ """Validate performance-related configuration"""
427
+ issues = []
428
+ base_path = ".performance"
429
+
430
+ # Validate cache configuration
431
+ if "cache" in performance_config:
432
+ cache_config = performance_config["cache"]
433
+ if "size_limit" in cache_config:
434
+ size_limit = cache_config["size_limit"]
435
+ if not isinstance(size_limit, int) or size_limit <= 0:
436
+ issues.append(
437
+ ValidationIssue(
438
+ level=ValidationLevel.ERROR,
439
+ path=f"{base_path}.cache.size_limit",
440
+ message="Cache size limit must be a positive integer",
441
+ current_value=str(size_limit),
442
+ suggestion="Use a positive integer for cache size",
443
+ )
444
+ )
445
+
446
+ # Validate monitoring settings
447
+ if "monitoring" in performance_config:
448
+ monitoring_config = performance_config["monitoring"]
449
+ if "enabled" in monitoring_config:
450
+ enabled = monitoring_config["enabled"]
451
+ if not isinstance(enabled, bool):
452
+ issues.append(
453
+ ValidationIssue(
454
+ level=ValidationLevel.ERROR,
455
+ path=f"{base_path}.monitoring.enabled",
456
+ message="Monitoring enabled flag must be boolean",
457
+ current_value=str(enabled),
458
+ suggestion="Use true or false",
459
+ )
460
+ )
461
+
462
+ return issues
463
+
464
+ def _get_hook_template(self, hook_name: str) -> Dict[str, Any]:
465
+ """Get configuration template for a hook type"""
466
+ # Match hook patterns to templates
467
+ for template_name, template in self._hook_templates.items():
468
+ if template_name in hook_name.lower():
469
+ return template
470
+ return self._hook_templates["session_start"] # Default template
471
+
472
+ def _get_recommended_timeout(self, policy: str) -> int:
473
+ """Get recommended timeout for a policy"""
474
+ policy_timeouts = {"fast": 2000, "normal": 5000, "slow": 15000, "custom": 5000}
475
+ return policy_timeouts.get(policy, 5000)
476
+
477
+ def normalize_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
478
+ """Normalize and apply defaults to configuration"""
479
+ normalized = config.copy()
480
+
481
+ # Ensure timeout_manager section exists
482
+ if "timeout_manager" not in normalized:
483
+ normalized["timeout_manager"] = {}
484
+
485
+ timeout_manager = normalized["timeout_manager"]
486
+
487
+ # Apply defaults to timeout_manager
488
+ if "graceful_degradation" not in timeout_manager:
489
+ timeout_manager["graceful_degradation"] = True
490
+
491
+ if "default_retry_count" not in timeout_manager:
492
+ timeout_manager["default_retry_count"] = self._timeout_schema.recommended_retry_count
493
+
494
+ if "default_retry_delay_ms" not in timeout_manager:
495
+ timeout_manager["default_retry_delay_ms"] = self._timeout_schema.default_retry_delay_ms
496
+
497
+ # Ensure hook_configs section exists
498
+ if "hook_configs" not in normalized:
499
+ normalized["hook_configs"] = {}
500
+
501
+ # Apply defaults to known hook types
502
+ for hook_type, template in self._hook_templates.items():
503
+ if hook_type not in normalized["hook_configs"]:
504
+ # Look for existing hooks with this type
505
+ matching_hooks = [k for k in normalized["hook_configs"].keys() if hook_type in k.lower()]
506
+ if not matching_hooks:
507
+ # Add template as default
508
+ normalized["hook_configs"][hook_type] = template.copy()
509
+
510
+ # Ensure resources section exists
511
+ if "resources" not in normalized:
512
+ normalized["resources"] = {}
513
+
514
+ resources = normalized["resources"]
515
+ if "memory_limits" not in resources:
516
+ resources["memory_limits"] = {
517
+ "default_mb": self._resource_schema.default_memory_limit_mb,
518
+ "max_mb": self._resource_schema.max_memory_limit_mb,
519
+ }
520
+
521
+ if "workers" not in resources:
522
+ resources["workers"] = {"default_max_workers": self._resource_schema.default_max_workers}
523
+
524
+ # Ensure performance section exists
525
+ if "performance" not in normalized:
526
+ normalized["performance"] = {}
527
+
528
+ performance = normalized["performance"]
529
+ if "cache" not in performance:
530
+ performance["cache"] = {"size_limit": self._resource_schema.cache_size_default}
531
+
532
+ if "monitoring" not in performance:
533
+ performance["monitoring"] = {"enabled": True}
534
+
535
+ return normalized
536
+
537
+ def generate_report(self, issues: List[ValidationIssue]) -> str:
538
+ """Generate human-readable validation report"""
539
+ if not issues:
540
+ return "✅ Configuration validation passed with no issues found."
541
+
542
+ lines = ["📋 Configuration Validation Report", ""]
543
+
544
+ # Group issues by severity
545
+ by_level: Dict[ValidationLevel, List[ValidationIssue]] = {}
546
+ for issue in issues:
547
+ if issue.level not in by_level:
548
+ by_level[issue.level] = []
549
+ by_level[issue.level].append(issue)
550
+
551
+ # Display issues by severity (most critical first)
552
+ level_order = [
553
+ ValidationLevel.CRITICAL,
554
+ ValidationLevel.ERROR,
555
+ ValidationLevel.WARNING,
556
+ ValidationLevel.INFO,
557
+ ]
558
+ level_icons = {
559
+ ValidationLevel.CRITICAL: "🚨",
560
+ ValidationLevel.ERROR: "❌",
561
+ ValidationLevel.WARNING: "âš ī¸",
562
+ ValidationLevel.INFO: "â„šī¸",
563
+ }
564
+
565
+ for level in level_order:
566
+ if level in by_level:
567
+ lines.append(f"{level_icons[level]} {level.value.upper()} ISSUES ({len(by_level[level])})")
568
+ for issue in by_level[level]:
569
+ lines.append(f" â€ĸ {issue.path}: {issue.message}")
570
+ if issue.suggestion:
571
+ lines.append(f" 💡 Suggestion: {issue.suggestion}")
572
+ lines.append("")
573
+
574
+ return "\n".join(lines)
575
+
576
+ def validate_and_fix_config_file(self, config_path: Path) -> Tuple[bool, Dict[str, Any], List[ValidationIssue]]:
577
+ """Validate and optionally fix a configuration file"""
578
+ try:
579
+ with open(config_path, "r", encoding="utf-8") as f:
580
+ config = json.load(f)
581
+
582
+ # Validate configuration
583
+ is_valid, issues = self.validate_config(config)
584
+
585
+ if not is_valid:
586
+ self._logger.warning(f"Configuration validation failed with {len(issues)} issues")
587
+
588
+ # Normalize configuration (apply defaults, fix minor issues)
589
+ normalized_config = self.normalize_config(config)
590
+
591
+ return is_valid, normalized_config, issues
592
+
593
+ except Exception as e:
594
+ error_issues = [
595
+ ValidationIssue(
596
+ level=ValidationLevel.CRITICAL,
597
+ path=".file",
598
+ message=f"Failed to load configuration file: {e}",
599
+ suggestion="Check file format and permissions",
600
+ )
601
+ ]
602
+ return False, {}, error_issues
603
+
604
+
605
+ # Global validator instance
606
+ _validator = None
607
+
608
+
609
+ def get_config_validator() -> ConfigurationValidator:
610
+ """Get the global configuration validator instance"""
611
+ global _validator
612
+ if _validator is None:
613
+ _validator = ConfigurationValidator()
614
+ return _validator
615
+
616
+
617
+ # Convenience functions
618
+ def validate_hook_config(
619
+ config_path: Optional[Path] = None,
620
+ ) -> Tuple[bool, List[ValidationIssue]]:
621
+ """Validate hooks configuration"""
622
+ validator = get_config_validator()
623
+
624
+ if config_path is None:
625
+ config_path = Path(".moai/config/config.yaml")
626
+
627
+ if not config_path.exists():
628
+ # Return success with info about missing file
629
+ return True, [
630
+ ValidationIssue(
631
+ level=ValidationLevel.INFO,
632
+ path=".file",
633
+ message="Configuration file not found, using defaults",
634
+ suggestion="Create a configuration file to customize hook behavior",
635
+ )
636
+ ]
637
+
638
+ is_valid, normalized_config, issues = validator.validate_and_fix_config_file(config_path)
639
+ return is_valid, issues