moai-adk 0.34.0__py3-none-any.whl → 1.1.0__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.
Files changed (524) hide show
  1. moai_adk/__main__.py +136 -5
  2. moai_adk/astgrep/__init__.py +37 -0
  3. moai_adk/astgrep/analyzer.py +522 -0
  4. moai_adk/astgrep/models.py +124 -0
  5. moai_adk/astgrep/rules.py +179 -0
  6. moai_adk/cli/commands/analyze.py +11 -2
  7. moai_adk/cli/commands/doctor.py +7 -1
  8. moai_adk/cli/commands/init.py +321 -11
  9. moai_adk/cli/commands/language.py +7 -1
  10. moai_adk/cli/commands/rank.py +449 -0
  11. moai_adk/cli/commands/status.py +7 -1
  12. moai_adk/cli/commands/switch.py +325 -0
  13. moai_adk/cli/commands/update.py +296 -23
  14. moai_adk/cli/prompts/init_prompts.py +362 -66
  15. moai_adk/cli/prompts/translations/__init__.py +573 -0
  16. moai_adk/cli/ui/prompts.py +61 -2
  17. moai_adk/cli/worktree/cli.py +106 -1
  18. moai_adk/cli/worktree/manager.py +155 -0
  19. moai_adk/core/config/unified.py +244 -63
  20. moai_adk/core/credentials.py +264 -0
  21. moai_adk/core/error_recovery_system.py +22 -4
  22. moai_adk/core/git/conflict_detector.py +10 -1
  23. moai_adk/core/git/event_detector.py +16 -5
  24. moai_adk/core/integration/engine.py +2 -2
  25. moai_adk/core/integration/integration_tester.py +5 -5
  26. moai_adk/core/language_config_resolver.py +9 -3
  27. moai_adk/core/merge/analyzer.py +509 -324
  28. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  29. moai_adk/core/migration/backup_manager.py +54 -4
  30. moai_adk/core/migration/file_migrator.py +174 -2
  31. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  32. moai_adk/core/migration/version_detector.py +123 -19
  33. moai_adk/core/migration/version_migrator.py +44 -9
  34. moai_adk/core/model_allocator.py +241 -0
  35. moai_adk/core/project/backup_utils.py +12 -2
  36. moai_adk/core/project/initializer.py +44 -87
  37. moai_adk/core/project/phase_executor.py +95 -33
  38. moai_adk/core/project/validator.py +16 -1
  39. moai_adk/core/quality/trust_checker.py +30 -10
  40. moai_adk/core/rollback_manager.py +60 -25
  41. moai_adk/core/template/backup.py +88 -6
  42. moai_adk/core/template/config.py +33 -9
  43. moai_adk/core/template/merger.py +34 -8
  44. moai_adk/core/template/processor.py +334 -11
  45. moai_adk/core/template_engine.py +10 -1
  46. moai_adk/core/template_variable_synchronizer.py +16 -2
  47. moai_adk/core/version_sync.py +54 -6
  48. moai_adk/foundation/__init__.py +1 -20
  49. moai_adk/foundation/testing.py +1 -1
  50. moai_adk/loop/__init__.py +54 -0
  51. moai_adk/loop/controller.py +305 -0
  52. moai_adk/loop/feedback.py +230 -0
  53. moai_adk/loop/state.py +209 -0
  54. moai_adk/loop/storage.py +220 -0
  55. moai_adk/lsp/__init__.py +70 -0
  56. moai_adk/lsp/client.py +320 -0
  57. moai_adk/lsp/models.py +261 -0
  58. moai_adk/lsp/protocol.py +404 -0
  59. moai_adk/lsp/server_manager.py +248 -0
  60. moai_adk/project/configuration.py +8 -1
  61. moai_adk/py.typed +0 -0
  62. moai_adk/ralph/__init__.py +37 -0
  63. moai_adk/ralph/engine.py +307 -0
  64. moai_adk/rank/__init__.py +21 -0
  65. moai_adk/rank/auth.py +425 -0
  66. moai_adk/rank/client.py +557 -0
  67. moai_adk/rank/config.py +147 -0
  68. moai_adk/rank/hook.py +1503 -0
  69. moai_adk/rank/py.typed +0 -0
  70. moai_adk/statusline/__init__.py +3 -0
  71. moai_adk/statusline/enhanced_output_style_detector.py +5 -5
  72. moai_adk/statusline/main.py +20 -1
  73. moai_adk/statusline/memory_collector.py +268 -0
  74. moai_adk/statusline/renderer.py +54 -38
  75. moai_adk/tag_system/__init__.py +48 -0
  76. moai_adk/tag_system/atomic_ops.py +117 -0
  77. moai_adk/tag_system/linkage.py +335 -0
  78. moai_adk/tag_system/parser.py +176 -0
  79. moai_adk/tag_system/validator.py +200 -0
  80. moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
  81. moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
  82. moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
  83. moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
  84. moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
  85. moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
  86. moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
  87. moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
  88. moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
  89. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
  90. moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
  91. moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
  92. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
  93. moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
  94. moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
  95. moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
  96. moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
  97. moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
  98. moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
  99. moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
  100. moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
  101. moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
  102. moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
  103. moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
  104. moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
  105. moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
  106. moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
  107. moai_adk/templates/.claude/commands/moai/fix.md +264 -0
  108. moai_adk/templates/.claude/commands/moai/loop.md +363 -0
  109. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  110. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
  111. moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
  112. moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
  113. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  114. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  115. moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
  116. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
  117. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
  118. moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
  119. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  120. moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
  121. moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
  122. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
  123. moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
  124. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
  125. moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
  126. moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
  127. moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
  128. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  129. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  130. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  131. moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
  132. moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
  133. moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
  134. moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
  135. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
  136. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
  137. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
  138. moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
  139. moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
  140. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
  141. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
  142. moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
  143. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
  144. moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
  145. moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
  146. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
  147. moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
  148. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
  149. moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
  150. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
  151. moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
  152. moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
  153. moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
  154. moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
  155. moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
  156. moai_adk/templates/.claude/settings.json +154 -77
  157. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
  158. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
  159. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  160. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  161. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  162. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  163. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  164. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
  165. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
  166. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
  167. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
  168. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  169. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  170. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  171. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  172. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  173. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  174. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
  175. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
  176. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  177. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
  178. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  179. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  180. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
  181. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  182. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  183. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  184. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  185. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  186. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
  187. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  188. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  189. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  190. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  191. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
  192. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
  193. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  196. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  199. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  201. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
  204. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
  205. moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
  206. moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
  207. moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
  208. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
  209. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
  210. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  211. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
  212. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
  213. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  214. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  215. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  216. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  217. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  218. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  219. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  220. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
  221. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
  222. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  223. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
  224. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
  225. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
  226. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
  227. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
  228. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  229. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  230. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
  231. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
  232. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
  233. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  234. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
  235. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
  236. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
  237. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
  238. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  239. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
  240. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
  241. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
  242. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  243. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  244. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
  245. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
  246. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
  247. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  248. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  249. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  250. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  251. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  252. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
  253. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  254. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  255. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  256. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  257. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
  258. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
  259. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
  260. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  261. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  262. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  277. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  278. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  279. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  280. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  281. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  282. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  283. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  284. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  285. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  286. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  287. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  288. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  289. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  290. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  291. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  292. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  293. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  294. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  295. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  296. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  297. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
  298. moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
  299. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  300. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  301. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
  302. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  303. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  304. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  305. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  306. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  307. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  308. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
  309. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  310. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  311. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  312. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  313. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  314. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
  315. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  316. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  317. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  318. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  319. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  320. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  321. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
  322. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  323. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  324. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  325. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  326. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  327. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  328. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
  329. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  330. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  331. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  332. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  333. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  334. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  335. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
  336. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  337. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  338. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  339. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  340. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  341. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  342. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  343. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  344. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  345. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
  346. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  347. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  348. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  349. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  351. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  352. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  353. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
  354. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  355. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  357. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  358. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  359. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  360. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  361. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  362. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  363. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  364. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  365. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  366. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  367. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  368. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
  370. moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
  374. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
  375. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
  376. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
  378. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
  379. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  380. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  381. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  391. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  429. moai_adk/templates/.git-hooks/pre-push +162 -59
  430. moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
  431. moai_adk/templates/.gitignore +65 -107
  432. moai_adk/templates/.lsp.json +152 -0
  433. moai_adk/templates/.mcp.json +2 -20
  434. moai_adk/templates/.moai/announcements/en.json +18 -0
  435. moai_adk/templates/.moai/announcements/ja.json +18 -0
  436. moai_adk/templates/.moai/announcements/ko.json +18 -0
  437. moai_adk/templates/.moai/announcements/zh.json +18 -0
  438. moai_adk/templates/.moai/config/config.yaml +8 -2
  439. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +2 -2
  441. moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
  442. moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
  443. moai_adk/templates/.moai/config/sections/project.yaml +2 -2
  444. moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
  445. moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
  446. moai_adk/templates/.moai/config/sections/system.yaml +46 -1
  447. moai_adk/templates/.moai/config/sections/user.yaml +1 -1
  448. moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
  449. moai_adk/templates/.moai/llm-configs/glm.json +22 -0
  450. moai_adk/templates/CLAUDE.ja.md +343 -0
  451. moai_adk/templates/CLAUDE.ko.md +343 -0
  452. moai_adk/templates/CLAUDE.md +200 -499
  453. moai_adk/templates/CLAUDE.zh.md +343 -0
  454. moai_adk/utils/common.py +37 -0
  455. moai_adk/version.py +1 -1
  456. moai_adk-1.1.0.dist-info/METADATA +2443 -0
  457. moai_adk-1.1.0.dist-info/RECORD +701 -0
  458. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
  459. moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
  460. moai_adk/core/config/auto_spec_config.py +0 -340
  461. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  462. moai_adk/core/spec/confidence_scoring.py +0 -680
  463. moai_adk/core/spec/ears_template_engine.py +0 -1247
  464. moai_adk/core/spec/quality_validator.py +0 -687
  465. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
  466. moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
  467. moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
  468. moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
  469. moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
  470. moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
  471. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
  472. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
  473. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
  474. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
  475. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  476. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  477. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
  478. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
  479. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
  480. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
  481. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  482. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  483. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  484. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  485. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  486. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
  487. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  488. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  489. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  490. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  491. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  492. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  493. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  494. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  495. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  496. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  497. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  498. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
  499. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  500. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  501. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  502. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  503. moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
  504. moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
  505. moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
  506. moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
  507. moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
  508. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
  509. moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
  510. moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
  511. moai_adk-0.34.0.dist-info/METADATA +0 -2999
  512. moai_adk-0.34.0.dist-info/RECORD +0 -463
  513. moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
  514. /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
  515. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  516. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  517. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  518. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  519. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  520. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  521. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  522. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  523. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  524. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,376 @@
1
+ # type: ignore
2
+ """
3
+ Statusline configuration loader for Claude Code
4
+
5
+ Loads and manages statusline configuration from .moai/config/statusline-config.yaml
6
+
7
+ Performance: Thread-safe singleton with double-checked locking pattern
8
+ """
9
+
10
+ import logging
11
+ import threading
12
+ from dataclasses import dataclass
13
+ from pathlib import Path
14
+ from typing import Any, Dict, Optional
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ @dataclass
20
+ class CacheConfig:
21
+ """Cache TTL configuration"""
22
+
23
+ git_ttl_seconds: int = 5
24
+ metrics_ttl_seconds: int = 10
25
+ alfred_ttl_seconds: int = 1
26
+ todo_ttl_seconds: int = 3
27
+ memory_ttl_seconds: int = 5
28
+ output_style_ttl_seconds: int = 60
29
+ version_ttl_seconds: int = 60
30
+ update_ttl_seconds: int = 300
31
+
32
+
33
+ @dataclass
34
+ class ColorConfig:
35
+ """Color configuration"""
36
+
37
+ enabled: bool = True
38
+ theme: str = "auto" # auto | light | dark | high-contrast
39
+ palette: Dict[str, str] = None
40
+
41
+ def __post_init__(self):
42
+ if self.palette is None:
43
+ self.palette = {
44
+ "model": "38;5;33", # Blue
45
+ "output_style": "38;5;219", # Pink/Magenta
46
+ "feature_branch": "38;5;226", # Yellow
47
+ "develop_branch": "38;5;51", # Cyan
48
+ "main_branch": "38;5;46", # Green
49
+ "staged": "38;5;46", # Green
50
+ "modified": "38;5;208", # Orange
51
+ "untracked": "38;5;196", # Red
52
+ "update_available": "38;5;208", # Orange
53
+ "memory_usage": "38;5;172", # Brown/Orange
54
+ "duration": "38;5;240", # Gray
55
+ "todo_count": "38;5;123", # Purple
56
+ "separator": "38;5;250", # Light Gray
57
+ }
58
+
59
+
60
+ @dataclass
61
+ class DisplayConfig:
62
+ """Information display settings - Custom ordered status bar"""
63
+
64
+ model: bool = True # 🤖 Model name (glm-4.6, claude-3.5-sonnet, etc.)
65
+ version: bool = True # 🗿 MoAI-ADK version (0.23.0, etc.)
66
+ output_style: bool = True # ✍️ Output style (Explanatory, Concise, etc.)
67
+ memory_usage: bool = True # 💾 Session memory usage
68
+ todo_count: bool = True # 📋 Active TODO items count
69
+ branch: bool = True # 🔀 Git branch
70
+ git_status: bool = True # ✅2 M1 ?10 Git changes status
71
+ duration: bool = True # ⏱️ Session elapsed time
72
+ directory: bool = True # 📁 Project name/directory
73
+ active_task: bool = True # 🎯 Alfred active task
74
+ update_indicator: bool = True # 🔄 Update notification
75
+
76
+
77
+ @dataclass
78
+ class FormatConfig:
79
+ """Format configuration"""
80
+
81
+ max_branch_length: int = 20
82
+ truncate_with: str = "..."
83
+ separator: str = " | "
84
+
85
+ # Icon configuration for better visual recognition
86
+ icons: Dict[str, str] = None
87
+
88
+ def __post_init__(self):
89
+ if self.icons is None:
90
+ self.icons = {
91
+ "git": "🔀", # Git branch icon (more intuitive than 📊)
92
+ "staged": "✅", # Staged files
93
+ "modified": "📝", # Modified files
94
+ "untracked": "❓", # Untracked files
95
+ "added": "➕", # Added files
96
+ "deleted": "➖", # Deleted files
97
+ "renamed": "🔄", # Renamed files
98
+ "conflict": "⚠️", # Conflict files
99
+ "model": "🤖", # AI model
100
+ "output_style": "✍️", # Writing style
101
+ "duration": "⏱️", # Time duration
102
+ "memory": "💾", # Memory usage
103
+ "todo": "📋", # TODO items
104
+ "update": "🔄", # Update available
105
+ "project": "📁", # Project directory
106
+ }
107
+
108
+
109
+ @dataclass
110
+ class ErrorHandlingConfig:
111
+ """Error handling configuration"""
112
+
113
+ graceful_degradation: bool = True
114
+ log_level: str = "warning" # warning | error
115
+ fallback_text: str = ""
116
+
117
+
118
+ class StatuslineConfig:
119
+ """
120
+ Thread-safe singleton configuration loader for statusline
121
+
122
+ Loads configuration from .moai/config/statusline-config.yaml
123
+ Falls back to default values if file not found or parsing fails
124
+
125
+ Performance: Double-checked locking pattern for thread safety
126
+ """
127
+
128
+ _instance: Optional["StatuslineConfig"] = None
129
+ _config: Dict[str, Any] = {}
130
+ _lock = threading.Lock() # Thread-safe singleton lock
131
+
132
+ def __new__(cls):
133
+ # Double-checked locking pattern for thread-safe singleton
134
+ if cls._instance is None:
135
+ with cls._lock:
136
+ # Double-check after acquiring lock
137
+ if cls._instance is None:
138
+ cls._instance = super().__new__(cls)
139
+ cls._instance._load_config()
140
+ return cls._instance
141
+
142
+ def _load_config(self) -> None:
143
+ """Load configuration from YAML file"""
144
+ config_path = self._find_config_file()
145
+
146
+ if config_path and config_path.exists():
147
+ try:
148
+ self._config = self._parse_yaml(config_path)
149
+ logger.debug(f"Loaded statusline config from {config_path}")
150
+ except Exception as e:
151
+ logger.warning(f"Failed to load config from {config_path}: {e}")
152
+ self._config = self._get_default_config()
153
+ else:
154
+ logger.debug("Statusline config file not found, using defaults")
155
+ self._config = self._get_default_config()
156
+
157
+ @staticmethod
158
+ def _find_config_file() -> Optional[Path]:
159
+ """
160
+ Find statusline config file starting from current directory up to project root
161
+
162
+ Returns:
163
+ Path to config file or None if not found
164
+ """
165
+ # Try common locations
166
+ locations = [
167
+ Path.cwd() / ".moai" / "config" / "statusline-config.yaml",
168
+ Path.cwd() / ".moai" / "config" / "statusline-config.yml",
169
+ Path.home() / ".moai" / "config" / "statusline-config.yaml",
170
+ ]
171
+
172
+ for path in locations:
173
+ if path.exists():
174
+ return path
175
+
176
+ return None
177
+
178
+ @staticmethod
179
+ def _parse_yaml(path: Path) -> Dict[str, Any]:
180
+ """
181
+ Parse YAML file
182
+
183
+ Args:
184
+ path: Path to YAML file
185
+
186
+ Returns:
187
+ Parsed configuration dictionary
188
+ """
189
+ try:
190
+ import yaml
191
+
192
+ with open(path, "r", encoding="utf-8") as f:
193
+ data = yaml.safe_load(f)
194
+ return data or {}
195
+ except ImportError:
196
+ logger.debug("PyYAML not available, attempting JSON fallback")
197
+ return StatuslineConfig._parse_json_fallback(path)
198
+
199
+ @staticmethod
200
+ def _parse_json_fallback(path: Path) -> Dict[str, Any]:
201
+ """
202
+ Parse YAML as JSON fallback (limited support)
203
+
204
+ Args:
205
+ path: Path to file
206
+
207
+ Returns:
208
+ Parsed configuration dictionary
209
+ """
210
+ import json
211
+
212
+ try:
213
+ with open(path, "r", encoding="utf-8") as f:
214
+ return json.load(f)
215
+ except Exception as e:
216
+ logger.debug(f"JSON fallback failed: {e}")
217
+ return {}
218
+
219
+ @staticmethod
220
+ def _get_default_config() -> Dict[str, Any]:
221
+ """
222
+ Get default configuration
223
+
224
+ Returns:
225
+ Default configuration dictionary
226
+ """
227
+ return {
228
+ "statusline": {
229
+ "enabled": True,
230
+ "mode": "extended",
231
+ "refresh_interval_ms": 300,
232
+ "colors": {
233
+ "enabled": True,
234
+ "theme": "auto",
235
+ "palette": {
236
+ "model": "38;5;33",
237
+ "feature_branch": "38;5;226",
238
+ "develop_branch": "38;5;51",
239
+ "main_branch": "38;5;46",
240
+ "staged": "38;5;46",
241
+ "modified": "38;5;208",
242
+ "untracked": "38;5;196",
243
+ "update_available": "38;5;208",
244
+ },
245
+ },
246
+ "cache": {
247
+ "git_ttl_seconds": 5,
248
+ "metrics_ttl_seconds": 10,
249
+ "alfred_ttl_seconds": 1,
250
+ "todo_ttl_seconds": 3,
251
+ "memory_ttl_seconds": 5,
252
+ "output_style_ttl_seconds": 60,
253
+ "version_ttl_seconds": 60,
254
+ "update_ttl_seconds": 300,
255
+ },
256
+ "display": {
257
+ "model": True, # 🤖 Model name (glm-4.6, claude-3.5-sonnet, etc.)
258
+ "version": True, # 🗿 MoAI-ADK version (0.23.0, etc.)
259
+ "output_style": True, # ✍️ Output style (Explanatory, Concise, etc.)
260
+ "memory_usage": True, # 💾 Session memory usage
261
+ "todo_count": True, # 📋 Active TODO items count
262
+ "branch": True, # 🔀 Git branch
263
+ "git_status": True, # ✅2 M1 ?10 Git changes status
264
+ "duration": True, # ⏱️ Session elapsed time
265
+ "directory": True, # 📁 Project name/directory
266
+ "active_task": True, # 🎯 Alfred active task
267
+ "update_indicator": True, # 🔄 Update notification
268
+ },
269
+ "error_handling": {
270
+ "graceful_degradation": True,
271
+ "log_level": "warning",
272
+ "fallback_text": "",
273
+ },
274
+ "format": {
275
+ "max_branch_length": 20,
276
+ "truncate_with": "...",
277
+ "separator": " | ",
278
+ "icons": {
279
+ "git": "🔀", # Git branch icon (more intuitive than 📊)
280
+ "staged": "✅", # Staged files
281
+ "modified": "📝", # Modified files
282
+ "untracked": "❓", # Untracked files
283
+ "added": "➕", # Added files
284
+ "deleted": "➖", # Deleted files
285
+ "renamed": "🔄", # Renamed files
286
+ "conflict": "⚠️", # Conflict files
287
+ "model": "🤖", # AI model
288
+ "output_style": "✍️", # Writing style
289
+ "duration": "⏱️", # Time duration
290
+ "memory": "💾", # Memory usage
291
+ "todo": "📋", # TODO items
292
+ "update": "🔄", # Update available
293
+ "project": "📁", # Project directory
294
+ },
295
+ },
296
+ }
297
+ }
298
+
299
+ def get(self, key: str, default: Any = None) -> Any:
300
+ """
301
+ Get configuration value by dot-notation key
302
+
303
+ Args:
304
+ key: Configuration key (e.g., "statusline.mode", "statusline.cache.git_ttl_seconds")
305
+ default: Default value if key not found
306
+
307
+ Returns:
308
+ Configuration value or default
309
+ """
310
+ keys = key.split(".")
311
+ value = self._config
312
+
313
+ for k in keys:
314
+ if isinstance(value, dict):
315
+ value = value.get(k)
316
+ if value is None:
317
+ return default
318
+ else:
319
+ return default
320
+
321
+ return value if value is not None else default
322
+
323
+ def get_cache_config(self) -> CacheConfig:
324
+ """Get cache configuration"""
325
+ cache_data = self.get("statusline.cache", {})
326
+ return CacheConfig(
327
+ git_ttl_seconds=cache_data.get("git_ttl_seconds", 5),
328
+ metrics_ttl_seconds=cache_data.get("metrics_ttl_seconds", 10),
329
+ alfred_ttl_seconds=cache_data.get("alfred_ttl_seconds", 1),
330
+ version_ttl_seconds=cache_data.get("version_ttl_seconds", 60),
331
+ update_ttl_seconds=cache_data.get("update_ttl_seconds", 300),
332
+ )
333
+
334
+ def get_color_config(self) -> ColorConfig:
335
+ """Get color configuration"""
336
+ color_data = self.get("statusline.colors", {})
337
+ return ColorConfig(
338
+ enabled=color_data.get("enabled", True),
339
+ theme=color_data.get("theme", "auto"),
340
+ palette=color_data.get("palette", {}),
341
+ )
342
+
343
+ def get_display_config(self) -> DisplayConfig:
344
+ """Get display configuration"""
345
+ display_data = self.get("statusline.display", {})
346
+ return DisplayConfig(
347
+ model=display_data.get("model", True),
348
+ version=display_data.get("version", True),
349
+ output_style=display_data.get("output_style", True),
350
+ memory_usage=display_data.get("memory_usage", True),
351
+ todo_count=display_data.get("todo_count", True),
352
+ branch=display_data.get("branch", True),
353
+ git_status=display_data.get("git_status", True),
354
+ duration=display_data.get("duration", True),
355
+ directory=display_data.get("directory", True),
356
+ active_task=display_data.get("active_task", True),
357
+ update_indicator=display_data.get("update_indicator", True),
358
+ )
359
+
360
+ def get_format_config(self) -> FormatConfig:
361
+ """Get format configuration"""
362
+ format_data = self.get("statusline.format", {})
363
+ return FormatConfig(
364
+ max_branch_length=format_data.get("max_branch_length", 20),
365
+ truncate_with=format_data.get("truncate_with", "..."),
366
+ separator=format_data.get("separator", " | "),
367
+ )
368
+
369
+ def get_error_handling_config(self) -> ErrorHandlingConfig:
370
+ """Get error handling configuration"""
371
+ error_data = self.get("statusline.error_handling", {})
372
+ return ErrorHandlingConfig(
373
+ graceful_degradation=error_data.get("graceful_degradation", True),
374
+ log_level=error_data.get("log_level", "warning"),
375
+ fallback_text=error_data.get("fallback_text", ""),
376
+ )
@@ -6,7 +6,7 @@ Provides centralized configuration management with fallbacks and validation.
6
6
 
7
7
  import json
8
8
  from pathlib import Path
9
- from typing import Any, Dict, Optional
9
+ from typing import Any, Dict
10
10
 
11
11
  try:
12
12
  import yaml
@@ -15,6 +15,7 @@ try:
15
15
  except ImportError:
16
16
  YAML_AVAILABLE = False
17
17
 
18
+ from .atomic_write import atomic_write_json
18
19
  from .path_utils import find_project_root
19
20
 
20
21
  # Default configuration
@@ -73,7 +74,7 @@ DEFAULT_CONFIG = {
73
74
  class ConfigManager:
74
75
  """Configuration manager for Alfred hooks with validation and fallbacks."""
75
76
 
76
- def __init__(self, config_path: Optional[Path] = None):
77
+ def __init__(self, config_path: Path | None = None):
77
78
  """Initialize configuration manager.
78
79
 
79
80
  Args:
@@ -95,7 +96,7 @@ class ConfigManager:
95
96
  # Default to YAML for new projects
96
97
  self.config_path = yaml_path if YAML_AVAILABLE else json_path
97
98
 
98
- self._config: Optional[Dict[str, Any]] = None
99
+ self._config: Dict[str, Any] | None = None
99
100
 
100
101
  def load_config(self) -> Dict[str, Any]:
101
102
  """Load configuration from file with fallback to defaults.
@@ -121,14 +122,16 @@ class ConfigManager:
121
122
  else:
122
123
  file_config = json.load(f)
123
124
  config = self._merge_configs(DEFAULT_CONFIG.copy(), file_config)
124
- except (
125
- json.JSONDecodeError,
126
- yaml.YAMLError if YAML_AVAILABLE else Exception,
127
- IOError,
128
- OSError,
129
- ):
125
+ except (json.JSONDecodeError, IOError, OSError):
130
126
  # Use defaults if file is corrupted or unreadable
131
127
  config = DEFAULT_CONFIG.copy()
128
+ except Exception as e:
129
+ # Handle YAML errors or other parsing issues
130
+ if YAML_AVAILABLE and isinstance(e, yaml.YAMLError):
131
+ config = DEFAULT_CONFIG.copy()
132
+ else:
133
+ # Re-raise unexpected exceptions
134
+ raise
132
135
  else:
133
136
  # Use defaults if file doesn't exist
134
137
  config = DEFAULT_CONFIG.copy()
@@ -295,7 +298,7 @@ class ConfigManager:
295
298
  exit_codes = self.get("hooks.exit_codes", {})
296
299
  return exit_codes.get(code_type, 0)
297
300
 
298
- def update_config(self, updates: Dict[str, Any]) -> bool:
301
+ def update_config(self, updates: dict[str, Any]) -> bool:
299
302
  """Update configuration and save to file.
300
303
 
301
304
  Args:
@@ -311,12 +314,9 @@ class ConfigManager:
311
314
  # Merge updates
312
315
  updated = self._merge_configs(current, updates)
313
316
 
314
- # Create parent directory if needed
315
- self.config_path.parent.mkdir(parents=True, exist_ok=True)
316
-
317
- # Write updated config
318
- with open(self.config_path, "w", encoding="utf-8") as f:
319
- json.dump(updated, f, indent=2)
317
+ # Write updated config using atomic write (H3)
318
+ # atomic_write_json will create parent directories if needed
319
+ atomic_write_json(self.config_path, updated, indent=2)
320
320
 
321
321
  # Clear cache to force reload
322
322
  self._config = None
@@ -339,9 +339,11 @@ class ConfigManager:
339
339
 
340
340
  return True
341
341
 
342
- def _merge_configs(self, base: Dict[str, Any], override: Dict[str, Any]) -> Dict[str, Any]:
342
+ def _merge_configs(self, base: dict[str, Any], override: dict[str, Any]) -> Dict[str, Any]:
343
343
  """Recursively merge two configuration dictionaries.
344
344
 
345
+ This method delegates to common.merge_configs() for consistent behavior.
346
+
345
347
  Args:
346
348
  base: Base configuration dictionary
347
349
  override: Override configuration dictionary
@@ -349,22 +351,16 @@ class ConfigManager:
349
351
  Returns:
350
352
  Merged configuration dictionary
351
353
  """
352
- result = base.copy()
353
-
354
- for key, value in override.items():
355
- if key in result and isinstance(result[key], dict) and isinstance(value, dict):
356
- result[key] = self._merge_configs(result[key], value)
357
- else:
358
- result[key] = value
354
+ from .common import merge_configs
359
355
 
360
- return result
356
+ return merge_configs(base, override)
361
357
 
362
358
 
363
359
  # Module-level helper functions
364
- _config_manager: Optional[ConfigManager] = None
360
+ _config_manager: ConfigManager | None = None
365
361
 
366
362
 
367
- def get_config_manager(config_path: Optional[Path] = None) -> ConfigManager:
363
+ def get_config_manager(config_path: Path | None = None) -> ConfigManager:
368
364
  """Get or create a ConfigManager instance.
369
365
 
370
366
  Args:
@@ -379,7 +375,7 @@ def get_config_manager(config_path: Optional[Path] = None) -> ConfigManager:
379
375
  return _config_manager
380
376
 
381
377
 
382
- def get_config(key_path: str = "", config_path: Optional[Path] = None) -> Any:
378
+ def get_config(key_path: str = "", config_path: Path | None = None) -> Any:
383
379
  """Get configuration value.
384
380
 
385
381
  Args:
@@ -17,7 +17,7 @@ import logging
17
17
  from dataclasses import dataclass
18
18
  from enum import Enum
19
19
  from pathlib import Path
20
- from typing import Any, Dict, List, Optional, Tuple
20
+ from typing import Any, Dict, List, Tuple
21
21
 
22
22
 
23
23
  class ValidationLevel(Enum):
@@ -36,8 +36,8 @@ class ValidationIssue:
36
36
  level: ValidationLevel
37
37
  path: str
38
38
  message: str
39
- suggestion: Optional[str] = None
40
- current_value: Optional[str] = None
39
+ suggestion: str | None = None
40
+ current_value: str | None = None
41
41
 
42
42
 
43
43
  @dataclass
@@ -109,7 +109,7 @@ class ConfigurationValidator:
109
109
  },
110
110
  }
111
111
 
112
- def validate_config(self, config: Dict[str, Any]) -> Tuple[bool, List[ValidationIssue]]:
112
+ def validate_config(self, config: dict[str, Any]) -> Tuple[bool, List[ValidationIssue]]:
113
113
  """Validate complete configuration and return issues"""
114
114
  issues = []
115
115
 
@@ -135,7 +135,7 @@ class ConfigurationValidator:
135
135
  is_valid = not any(issue.level in [ValidationLevel.ERROR, ValidationLevel.CRITICAL] for issue in issues)
136
136
  return is_valid, issues
137
137
 
138
- def _validate_structure(self, config: Dict[str, Any]) -> List[ValidationIssue]:
138
+ def _validate_structure(self, config: dict[str, Any]) -> List[ValidationIssue]:
139
139
  """Validate top-level configuration structure"""
140
140
  issues = []
141
141
 
@@ -159,7 +159,7 @@ class ConfigurationValidator:
159
159
 
160
160
  return issues
161
161
 
162
- def _validate_timeout_manager(self, timeout_config: Dict[str, Any]) -> List[ValidationIssue]:
162
+ def _validate_timeout_manager(self, timeout_config: dict[str, Any]) -> List[ValidationIssue]:
163
163
  """Validate timeout manager configuration"""
164
164
  issues = []
165
165
  base_path = ".timeout_manager"
@@ -238,7 +238,7 @@ class ConfigurationValidator:
238
238
 
239
239
  return issues
240
240
 
241
- def _validate_hook_configs(self, hook_configs: Dict[str, Any]) -> List[ValidationIssue]:
241
+ def _validate_hook_configs(self, hook_configs: dict[str, Any]) -> List[ValidationIssue]:
242
242
  """Validate hook-specific configurations"""
243
243
  issues = []
244
244
  base_path = ".hook_configs"
@@ -249,7 +249,7 @@ class ConfigurationValidator:
249
249
 
250
250
  return issues
251
251
 
252
- def _validate_single_hook_config(self, hook_name: str, config: Dict[str, Any], path: str) -> List[ValidationIssue]:
252
+ def _validate_single_hook_config(self, hook_name: str, config: dict[str, Any], path: str) -> List[ValidationIssue]:
253
253
  """Validate configuration for a single hook"""
254
254
  issues = []
255
255
 
@@ -360,7 +360,7 @@ class ConfigurationValidator:
360
360
 
361
361
  return issues
362
362
 
363
- def _validate_resources(self, resource_config: Dict[str, Any]) -> List[ValidationIssue]:
363
+ def _validate_resources(self, resource_config: dict[str, Any]) -> List[ValidationIssue]:
364
364
  """Validate resource configuration"""
365
365
  issues = []
366
366
  base_path = ".resources"
@@ -422,7 +422,7 @@ class ConfigurationValidator:
422
422
 
423
423
  return issues
424
424
 
425
- def _validate_performance(self, performance_config: Dict[str, Any]) -> List[ValidationIssue]:
425
+ def _validate_performance(self, performance_config: dict[str, Any]) -> List[ValidationIssue]:
426
426
  """Validate performance-related configuration"""
427
427
  issues = []
428
428
  base_path = ".performance"
@@ -474,7 +474,7 @@ class ConfigurationValidator:
474
474
  policy_timeouts = {"fast": 2000, "normal": 5000, "slow": 15000, "custom": 5000}
475
475
  return policy_timeouts.get(policy, 5000)
476
476
 
477
- def normalize_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
477
+ def normalize_config(self, config: dict[str, Any]) -> Dict[str, Any]:
478
478
  """Normalize and apply defaults to configuration"""
479
479
  normalized = config.copy()
480
480
 
@@ -534,7 +534,7 @@ class ConfigurationValidator:
534
534
 
535
535
  return normalized
536
536
 
537
- def generate_report(self, issues: List[ValidationIssue]) -> str:
537
+ def generate_report(self, issues: list[ValidationIssue]) -> str:
538
538
  """Generate human-readable validation report"""
539
539
  if not issues:
540
540
  return "✅ Configuration validation passed with no issues found."
@@ -542,7 +542,7 @@ class ConfigurationValidator:
542
542
  lines = ["📋 Configuration Validation Report", ""]
543
543
 
544
544
  # Group issues by severity
545
- by_level: Dict[ValidationLevel, List[ValidationIssue]] = {}
545
+ by_level: dict[ValidationLevel, List[ValidationIssue]] = {}
546
546
  for issue in issues:
547
547
  if issue.level not in by_level:
548
548
  by_level[issue.level] = []
@@ -616,7 +616,7 @@ def get_config_validator() -> ConfigurationValidator:
616
616
 
617
617
  # Convenience functions
618
618
  def validate_hook_config(
619
- config_path: Optional[Path] = None,
619
+ config_path: Path | None = None,
620
620
  ) -> Tuple[bool, List[ValidationIssue]]:
621
621
  """Validate hooks configuration"""
622
622
  validator = get_config_validator()