moai-adk 0.32.8__py3-none-any.whl → 0.41.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.

Potentially problematic release.


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

Files changed (545) hide show
  1. moai_adk/cli/commands/init.py +4 -1
  2. moai_adk/cli/commands/update.py +31 -26
  3. moai_adk/cli/worktree/cli.py +54 -43
  4. moai_adk/cli/worktree/manager.py +17 -14
  5. moai_adk/cli/worktree/registry.py +313 -19
  6. moai_adk/core/config/unified.py +237 -63
  7. moai_adk/core/error_recovery_system.py +22 -4
  8. moai_adk/core/git/conflict_detector.py +10 -1
  9. moai_adk/core/git/event_detector.py +16 -5
  10. moai_adk/core/language_config_resolver.py +96 -3
  11. moai_adk/core/merge/analyzer.py +509 -324
  12. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  13. moai_adk/core/migration/backup_manager.py +54 -4
  14. moai_adk/core/migration/file_migrator.py +174 -2
  15. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  16. moai_adk/core/migration/version_detector.py +123 -19
  17. moai_adk/core/migration/version_migrator.py +44 -9
  18. moai_adk/core/project/backup_utils.py +9 -1
  19. moai_adk/core/project/initializer.py +33 -96
  20. moai_adk/core/project/phase_executor.py +79 -33
  21. moai_adk/core/quality/trust_checker.py +30 -10
  22. moai_adk/core/realtime_monitoring_dashboard.py +3 -3
  23. moai_adk/core/rollback_manager.py +46 -19
  24. moai_adk/core/template/backup.py +4 -3
  25. moai_adk/core/template/config.py +33 -9
  26. moai_adk/core/template/merger.py +34 -8
  27. moai_adk/core/template/processor.py +144 -9
  28. moai_adk/core/template_engine.py +10 -1
  29. moai_adk/core/template_variable_synchronizer.py +16 -2
  30. moai_adk/core/version_sync.py +54 -6
  31. moai_adk/project/configuration.py +1 -1
  32. moai_adk/statusline/config.py +5 -2
  33. moai_adk/statusline/main.py +58 -0
  34. moai_adk/statusline/renderer.py +38 -78
  35. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
  36. moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
  37. moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
  38. moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
  39. moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
  40. moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
  41. moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
  42. moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
  43. moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
  44. moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
  45. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  46. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
  47. moai_adk/templates/.claude/agents/moai/expert-security.md +55 -4
  48. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  49. moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
  50. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
  51. moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
  52. moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
  53. moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
  54. moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
  55. moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
  56. moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
  57. moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
  58. moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
  59. moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
  60. moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
  61. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
  62. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
  63. moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
  64. moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
  65. moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
  66. moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
  67. moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
  68. moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
  69. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  70. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -0
  71. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  72. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  73. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +12 -14
  74. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  75. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
  76. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
  77. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  78. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  79. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  80. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
  81. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
  82. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
  83. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
  84. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
  85. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
  86. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +28 -24
  87. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +236 -32
  88. moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
  89. moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
  90. moai_adk/templates/.claude/settings.json +43 -6
  91. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
  92. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  93. moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
  94. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  95. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  96. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +251 -196
  97. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  98. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  99. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  100. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  101. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  102. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  103. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  104. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +18 -13
  105. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  106. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  107. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +20 -14
  108. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  109. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  110. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +123 -425
  111. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  112. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  113. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  114. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  115. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  116. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  117. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  118. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  119. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +16 -15
  120. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +104 -315
  121. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  122. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  123. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
  124. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  125. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +196 -154
  126. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  127. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  128. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  129. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  130. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  131. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  132. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  133. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +2 -2
  134. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  135. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
  136. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  137. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  138. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  139. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  140. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  141. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
  142. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  143. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  144. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +33 -134
  145. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  146. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
  147. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
  148. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  149. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  150. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  151. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  152. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  153. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  154. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  155. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  156. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  157. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  158. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  159. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  160. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  161. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  162. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  163. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  164. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  165. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  166. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +17 -16
  167. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +430 -0
  168. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
  169. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  170. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
  171. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
  172. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  173. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  174. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  175. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  176. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  177. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  178. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  179. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
  180. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
  181. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  182. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
  183. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -0
  184. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  185. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  186. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +377 -0
  187. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  188. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  189. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
  190. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  191. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  192. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
  193. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  194. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  195. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
  196. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  197. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  198. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
  199. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
  200. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  201. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
  202. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
  203. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  204. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  205. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
  206. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
  207. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  208. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
  209. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
  210. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
  211. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  212. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  213. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
  214. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
  215. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  216. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  217. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
  218. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  219. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  220. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  221. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  222. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  223. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  224. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  225. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
  226. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  227. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  228. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  229. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  230. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  231. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  232. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
  233. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  234. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  235. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +93 -227
  236. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +25 -6
  237. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  238. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  239. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  240. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  241. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +16 -13
  242. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
  243. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +283 -0
  244. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  245. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  246. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  247. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  248. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  249. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  250. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  251. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  252. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  253. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  254. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  255. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  256. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  257. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  258. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  259. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  260. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  261. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  262. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  277. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +425 -0
  278. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  279. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  280. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +228 -0
  281. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  282. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  283. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  284. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  285. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  286. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  287. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +249 -0
  288. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  289. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  290. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  291. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  292. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  293. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +230 -0
  294. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  295. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  296. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  297. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  298. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  299. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  300. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +205 -0
  301. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  302. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  303. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  304. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  305. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  306. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  307. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +223 -0
  308. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  309. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  310. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  311. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  312. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  313. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  314. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +206 -0
  315. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  316. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  317. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  318. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  319. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  320. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  321. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  322. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  323. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  324. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +209 -0
  325. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  326. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  327. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  328. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  329. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  330. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  331. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  332. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
  333. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  334. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
  335. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
  336. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
  337. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
  338. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  339. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  340. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  341. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  342. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  343. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  344. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  345. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  346. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  347. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  348. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  349. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  350. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  351. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  352. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  353. moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
  354. moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
  355. moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
  356. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
  357. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
  358. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
  359. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
  360. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
  361. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
  362. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
  363. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
  364. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
  365. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
  366. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
  367. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
  368. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
  369. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
  370. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
  371. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
  372. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
  373. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
  374. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
  375. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
  376. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
  377. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
  378. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
  379. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
  380. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
  381. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
  382. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
  383. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
  384. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
  385. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
  386. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
  387. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
  388. moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +189 -424
  390. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +187 -314
  393. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +284 -212
  396. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
  397. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
  398. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
  399. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +336 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +12 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +221 -367
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  420. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  433. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +227 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  458. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  459. moai_adk/templates/.git-hooks/pre-push +168 -50
  460. moai_adk/templates/.gitignore +0 -3
  461. moai_adk/templates/.lsp.json +152 -0
  462. moai_adk/templates/.mcp.json +5 -12
  463. moai_adk/templates/.moai/config/config.yaml +20 -306
  464. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  465. moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
  466. moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
  467. moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
  468. moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
  469. moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
  470. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
  471. moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
  472. moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
  473. moai_adk/templates/.moai/config/sections/language.yaml +7 -7
  474. moai_adk/templates/.moai/config/sections/project.yaml +1 -1
  475. moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
  476. moai_adk/templates/.moai/config/sections/system.yaml +11 -1
  477. moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
  478. moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
  479. moai_adk/templates/CLAUDE.md +578 -154
  480. moai_adk/utils/common.py +33 -0
  481. moai_adk/version.py +1 -1
  482. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/METADATA +905 -109
  483. moai_adk-0.41.0.dist-info/RECORD +683 -0
  484. moai_adk/core/config/auto_spec_config.py +0 -340
  485. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  486. moai_adk/core/spec/confidence_scoring.py +0 -680
  487. moai_adk/core/spec/ears_template_engine.py +0 -1247
  488. moai_adk/core/spec/quality_validator.py +0 -687
  489. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  490. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
  491. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
  492. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
  493. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
  494. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
  495. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
  496. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
  497. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
  498. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
  499. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
  500. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  501. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
  502. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
  503. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
  504. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
  505. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
  506. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
  507. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  508. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  509. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  510. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  511. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  512. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -135
  513. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  514. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  515. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  516. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  517. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  518. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  519. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  520. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  521. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  522. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  523. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  524. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -410
  525. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  526. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  527. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  528. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  529. moai_adk/templates/.moai/cache/personalization.json +0 -10
  530. moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
  531. moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
  532. moai_adk/templates/.moai/config/presets/team.yaml +0 -33
  533. moai_adk-0.32.8.dist-info/RECORD +0 -396
  534. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  535. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  536. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  537. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  538. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  539. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  540. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  541. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  542. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  543. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +0 -0
  544. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +0 -0
  545. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,804 @@
1
+ #!/usr/bin/env python3
2
+ """Tool Registry for MoAI-ADK Hooks
3
+
4
+ Provides unified registry for formatters, linters, and language tools.
5
+ Supports 16+ languages with automatic tool detection and fallback.
6
+
7
+ Features:
8
+ - Automatic tool availability detection
9
+ - Graceful fallback when tools unavailable
10
+ - Extensible registry pattern
11
+ - Cross-platform support (macOS, Linux, Windows)
12
+ """
13
+
14
+ import shlex
15
+ import shutil
16
+ import subprocess
17
+ from dataclasses import dataclass, field
18
+ from enum import Enum
19
+ from pathlib import Path
20
+ from typing import Dict, List, Optional
21
+
22
+
23
+ class ToolType(Enum):
24
+ """Tool type classification."""
25
+
26
+ FORMATTER = "formatter"
27
+ LINTER = "linter"
28
+ TYPE_CHECKER = "type_checker"
29
+ SECURITY_SCANNER = "security_scanner"
30
+ AST_ANALYZER = "ast_analyzer"
31
+
32
+
33
+ @dataclass
34
+ class ToolConfig:
35
+ """Configuration for a single tool."""
36
+
37
+ name: str
38
+ command: str
39
+ args: List[str] = field(default_factory=list)
40
+ file_args_position: str = "end" # "end", "start", or "replace:{placeholder}"
41
+ check_args: List[str] = field(default_factory=list) # Args to check if tool exists
42
+ fix_args: List[str] = field(default_factory=list) # Args to auto-fix issues
43
+ extensions: List[str] = field(default_factory=list)
44
+ tool_type: ToolType = ToolType.FORMATTER
45
+ priority: int = 1 # Lower = higher priority
46
+ timeout_seconds: int = 30
47
+ requires_config: bool = False # Needs config file to work
48
+ config_files: List[str] = field(default_factory=list) # e.g., ["pyproject.toml"]
49
+
50
+
51
+ @dataclass
52
+ class ToolResult:
53
+ """Result of tool execution."""
54
+
55
+ success: bool
56
+ tool_name: str
57
+ output: str = ""
58
+ error: str = ""
59
+ exit_code: int = 0
60
+ file_modified: bool = False
61
+ issues_found: int = 0
62
+ issues_fixed: int = 0
63
+
64
+
65
+ class ToolRegistry:
66
+ """Registry for language tools (formatters, linters, etc.)."""
67
+
68
+ def __init__(self) -> None:
69
+ self._tools: Dict[str, List[ToolConfig]] = {}
70
+ self._extension_map: Dict[str, str] = {}
71
+ self._tool_cache: Dict[str, bool] = {}
72
+ self._register_default_tools()
73
+
74
+ def _register_default_tools(self) -> None:
75
+ """Register all default tools for supported languages."""
76
+ # Python tools
77
+ self._register_python_tools()
78
+ # JavaScript/TypeScript tools
79
+ self._register_js_ts_tools()
80
+ # Go tools
81
+ self._register_go_tools()
82
+ # Rust tools
83
+ self._register_rust_tools()
84
+ # Java/Kotlin tools
85
+ self._register_jvm_tools()
86
+ # Swift tools
87
+ self._register_swift_tools()
88
+ # C/C++ tools
89
+ self._register_cpp_tools()
90
+ # Ruby tools
91
+ self._register_ruby_tools()
92
+ # PHP tools
93
+ self._register_php_tools()
94
+ # Elixir tools
95
+ self._register_elixir_tools()
96
+ # Scala tools
97
+ self._register_scala_tools()
98
+ # R tools
99
+ self._register_r_tools()
100
+ # Dart/Flutter tools
101
+ self._register_dart_tools()
102
+ # C# tools
103
+ self._register_csharp_tools()
104
+ # Markdown tools
105
+ self._register_markdown_tools()
106
+ # AST-Grep tools (cross-language)
107
+ self._register_ast_grep_tools()
108
+
109
+ def _register_python_tools(self) -> None:
110
+ """Register Python formatting and linting tools."""
111
+ extensions = [".py", ".pyi"]
112
+ for ext in extensions:
113
+ self._extension_map[ext] = "python"
114
+
115
+ self._tools["python"] = [
116
+ # Ruff - fastest Python linter and formatter
117
+ ToolConfig(
118
+ name="ruff-format",
119
+ command="ruff",
120
+ args=["format"],
121
+ extensions=extensions,
122
+ tool_type=ToolType.FORMATTER,
123
+ priority=1,
124
+ timeout_seconds=30,
125
+ ),
126
+ ToolConfig(
127
+ name="ruff-check",
128
+ command="ruff",
129
+ args=["check", "--fix"],
130
+ extensions=extensions,
131
+ tool_type=ToolType.LINTER,
132
+ priority=1,
133
+ timeout_seconds=30,
134
+ ),
135
+ # Black - fallback formatter
136
+ ToolConfig(
137
+ name="black",
138
+ command="black",
139
+ args=[],
140
+ extensions=extensions,
141
+ tool_type=ToolType.FORMATTER,
142
+ priority=2,
143
+ timeout_seconds=30,
144
+ ),
145
+ # isort - import sorter
146
+ ToolConfig(
147
+ name="isort",
148
+ command="isort",
149
+ args=[],
150
+ extensions=extensions,
151
+ tool_type=ToolType.FORMATTER,
152
+ priority=3,
153
+ timeout_seconds=15,
154
+ ),
155
+ # mypy - type checker
156
+ ToolConfig(
157
+ name="mypy",
158
+ command="mypy",
159
+ args=["--ignore-missing-imports"],
160
+ extensions=extensions,
161
+ tool_type=ToolType.TYPE_CHECKER,
162
+ priority=1,
163
+ timeout_seconds=60,
164
+ ),
165
+ ]
166
+
167
+ def _register_js_ts_tools(self) -> None:
168
+ """Register JavaScript/TypeScript tools."""
169
+ js_extensions = [".js", ".jsx", ".mjs", ".cjs"]
170
+ ts_extensions = [".ts", ".tsx", ".mts", ".cts"]
171
+
172
+ for ext in js_extensions:
173
+ self._extension_map[ext] = "javascript"
174
+ for ext in ts_extensions:
175
+ self._extension_map[ext] = "typescript"
176
+
177
+ # Shared tools for both JS and TS
178
+ shared_tools = [
179
+ # Biome - fast all-in-one tool
180
+ ToolConfig(
181
+ name="biome-format",
182
+ command="biome",
183
+ args=["format", "--write"],
184
+ extensions=js_extensions + ts_extensions,
185
+ tool_type=ToolType.FORMATTER,
186
+ priority=1,
187
+ timeout_seconds=30,
188
+ ),
189
+ ToolConfig(
190
+ name="biome-lint",
191
+ command="biome",
192
+ args=["lint", "--apply"],
193
+ extensions=js_extensions + ts_extensions,
194
+ tool_type=ToolType.LINTER,
195
+ priority=1,
196
+ timeout_seconds=30,
197
+ ),
198
+ # Prettier - universal formatter
199
+ ToolConfig(
200
+ name="prettier",
201
+ command="prettier",
202
+ args=["--write"],
203
+ extensions=js_extensions + ts_extensions,
204
+ tool_type=ToolType.FORMATTER,
205
+ priority=2,
206
+ timeout_seconds=30,
207
+ ),
208
+ # ESLint
209
+ ToolConfig(
210
+ name="eslint",
211
+ command="eslint",
212
+ args=["--fix"],
213
+ extensions=js_extensions + ts_extensions,
214
+ tool_type=ToolType.LINTER,
215
+ priority=2,
216
+ timeout_seconds=60,
217
+ ),
218
+ ]
219
+
220
+ self._tools["javascript"] = shared_tools.copy()
221
+ self._tools["typescript"] = shared_tools.copy()
222
+
223
+ def _register_go_tools(self) -> None:
224
+ """Register Go tools."""
225
+ extensions = [".go"]
226
+ for ext in extensions:
227
+ self._extension_map[ext] = "go"
228
+
229
+ self._tools["go"] = [
230
+ ToolConfig(
231
+ name="gofmt",
232
+ command="gofmt",
233
+ args=["-w"],
234
+ extensions=extensions,
235
+ tool_type=ToolType.FORMATTER,
236
+ priority=1,
237
+ timeout_seconds=15,
238
+ ),
239
+ ToolConfig(
240
+ name="goimports",
241
+ command="goimports",
242
+ args=["-w"],
243
+ extensions=extensions,
244
+ tool_type=ToolType.FORMATTER,
245
+ priority=2,
246
+ timeout_seconds=15,
247
+ ),
248
+ ToolConfig(
249
+ name="golangci-lint",
250
+ command="golangci-lint",
251
+ args=["run", "--fix"],
252
+ file_args_position="start",
253
+ extensions=extensions,
254
+ tool_type=ToolType.LINTER,
255
+ priority=1,
256
+ timeout_seconds=120,
257
+ ),
258
+ ]
259
+
260
+ def _register_rust_tools(self) -> None:
261
+ """Register Rust tools."""
262
+ extensions = [".rs"]
263
+ for ext in extensions:
264
+ self._extension_map[ext] = "rust"
265
+
266
+ self._tools["rust"] = [
267
+ ToolConfig(
268
+ name="rustfmt",
269
+ command="rustfmt",
270
+ args=[],
271
+ extensions=extensions,
272
+ tool_type=ToolType.FORMATTER,
273
+ priority=1,
274
+ timeout_seconds=30,
275
+ ),
276
+ ToolConfig(
277
+ name="clippy",
278
+ command="cargo",
279
+ args=["clippy", "--fix", "--allow-dirty", "--allow-staged"],
280
+ extensions=extensions,
281
+ tool_type=ToolType.LINTER,
282
+ priority=1,
283
+ timeout_seconds=180,
284
+ ),
285
+ ]
286
+
287
+ def _register_jvm_tools(self) -> None:
288
+ """Register Java and Kotlin tools."""
289
+ java_extensions = [".java"]
290
+ kotlin_extensions = [".kt", ".kts"]
291
+
292
+ for ext in java_extensions:
293
+ self._extension_map[ext] = "java"
294
+ for ext in kotlin_extensions:
295
+ self._extension_map[ext] = "kotlin"
296
+
297
+ self._tools["java"] = [
298
+ ToolConfig(
299
+ name="google-java-format",
300
+ command="google-java-format",
301
+ args=["-i"],
302
+ extensions=java_extensions,
303
+ tool_type=ToolType.FORMATTER,
304
+ priority=1,
305
+ timeout_seconds=30,
306
+ ),
307
+ ToolConfig(
308
+ name="checkstyle",
309
+ command="checkstyle",
310
+ args=["-c", "/google_checks.xml"],
311
+ extensions=java_extensions,
312
+ tool_type=ToolType.LINTER,
313
+ priority=1,
314
+ timeout_seconds=60,
315
+ ),
316
+ ]
317
+
318
+ self._tools["kotlin"] = [
319
+ ToolConfig(
320
+ name="ktlint",
321
+ command="ktlint",
322
+ args=["-F"],
323
+ extensions=kotlin_extensions,
324
+ tool_type=ToolType.FORMATTER,
325
+ priority=1,
326
+ timeout_seconds=30,
327
+ ),
328
+ ToolConfig(
329
+ name="detekt",
330
+ command="detekt",
331
+ args=["-i"],
332
+ extensions=kotlin_extensions,
333
+ tool_type=ToolType.LINTER,
334
+ priority=1,
335
+ timeout_seconds=60,
336
+ ),
337
+ ]
338
+
339
+ def _register_swift_tools(self) -> None:
340
+ """Register Swift tools."""
341
+ extensions = [".swift"]
342
+ for ext in extensions:
343
+ self._extension_map[ext] = "swift"
344
+
345
+ self._tools["swift"] = [
346
+ ToolConfig(
347
+ name="swift-format",
348
+ command="swift-format",
349
+ args=["format", "-i"],
350
+ extensions=extensions,
351
+ tool_type=ToolType.FORMATTER,
352
+ priority=1,
353
+ timeout_seconds=30,
354
+ ),
355
+ ToolConfig(
356
+ name="swiftlint",
357
+ command="swiftlint",
358
+ args=["--fix"],
359
+ extensions=extensions,
360
+ tool_type=ToolType.LINTER,
361
+ priority=1,
362
+ timeout_seconds=60,
363
+ ),
364
+ ]
365
+
366
+ def _register_cpp_tools(self) -> None:
367
+ """Register C/C++ tools."""
368
+ extensions = [".c", ".cpp", ".cc", ".cxx", ".h", ".hpp", ".hxx"]
369
+ for ext in extensions:
370
+ self._extension_map[ext] = "cpp"
371
+
372
+ self._tools["cpp"] = [
373
+ ToolConfig(
374
+ name="clang-format",
375
+ command="clang-format",
376
+ args=["-i"],
377
+ extensions=extensions,
378
+ tool_type=ToolType.FORMATTER,
379
+ priority=1,
380
+ timeout_seconds=15,
381
+ ),
382
+ ToolConfig(
383
+ name="clang-tidy",
384
+ command="clang-tidy",
385
+ args=["--fix"],
386
+ extensions=extensions,
387
+ tool_type=ToolType.LINTER,
388
+ priority=1,
389
+ timeout_seconds=120,
390
+ ),
391
+ ]
392
+
393
+ def _register_ruby_tools(self) -> None:
394
+ """Register Ruby tools."""
395
+ extensions = [".rb", ".rake", ".gemspec"]
396
+ for ext in extensions:
397
+ self._extension_map[ext] = "ruby"
398
+
399
+ self._tools["ruby"] = [
400
+ ToolConfig(
401
+ name="rubocop",
402
+ command="rubocop",
403
+ args=["-a"],
404
+ extensions=extensions,
405
+ tool_type=ToolType.FORMATTER,
406
+ priority=1,
407
+ timeout_seconds=60,
408
+ ),
409
+ ]
410
+
411
+ def _register_php_tools(self) -> None:
412
+ """Register PHP tools."""
413
+ extensions = [".php"]
414
+ for ext in extensions:
415
+ self._extension_map[ext] = "php"
416
+
417
+ self._tools["php"] = [
418
+ ToolConfig(
419
+ name="php-cs-fixer",
420
+ command="php-cs-fixer",
421
+ args=["fix"],
422
+ extensions=extensions,
423
+ tool_type=ToolType.FORMATTER,
424
+ priority=1,
425
+ timeout_seconds=60,
426
+ ),
427
+ ToolConfig(
428
+ name="phpstan",
429
+ command="phpstan",
430
+ args=["analyze"],
431
+ extensions=extensions,
432
+ tool_type=ToolType.LINTER,
433
+ priority=1,
434
+ timeout_seconds=120,
435
+ ),
436
+ ]
437
+
438
+ def _register_elixir_tools(self) -> None:
439
+ """Register Elixir tools."""
440
+ extensions = [".ex", ".exs"]
441
+ for ext in extensions:
442
+ self._extension_map[ext] = "elixir"
443
+
444
+ self._tools["elixir"] = [
445
+ ToolConfig(
446
+ name="mix-format",
447
+ command="mix",
448
+ args=["format"],
449
+ extensions=extensions,
450
+ tool_type=ToolType.FORMATTER,
451
+ priority=1,
452
+ timeout_seconds=30,
453
+ ),
454
+ ToolConfig(
455
+ name="credo",
456
+ command="mix",
457
+ args=["credo", "--strict"],
458
+ extensions=extensions,
459
+ tool_type=ToolType.LINTER,
460
+ priority=1,
461
+ timeout_seconds=60,
462
+ ),
463
+ ]
464
+
465
+ def _register_scala_tools(self) -> None:
466
+ """Register Scala tools."""
467
+ extensions = [".scala", ".sc"]
468
+ for ext in extensions:
469
+ self._extension_map[ext] = "scala"
470
+
471
+ self._tools["scala"] = [
472
+ ToolConfig(
473
+ name="scalafmt",
474
+ command="scalafmt",
475
+ args=[],
476
+ extensions=extensions,
477
+ tool_type=ToolType.FORMATTER,
478
+ priority=1,
479
+ timeout_seconds=60,
480
+ ),
481
+ ToolConfig(
482
+ name="scalafix",
483
+ command="scalafix",
484
+ args=[],
485
+ extensions=extensions,
486
+ tool_type=ToolType.LINTER,
487
+ priority=1,
488
+ timeout_seconds=120,
489
+ ),
490
+ ]
491
+
492
+ def _register_r_tools(self) -> None:
493
+ """Register R tools."""
494
+ extensions = [".r", ".R", ".Rmd"]
495
+ for ext in extensions:
496
+ self._extension_map[ext] = "r"
497
+
498
+ self._tools["r"] = [
499
+ ToolConfig(
500
+ name="styler",
501
+ command="Rscript",
502
+ args=["-e", "styler::style_file"],
503
+ file_args_position="replace:style_file",
504
+ extensions=extensions,
505
+ tool_type=ToolType.FORMATTER,
506
+ priority=1,
507
+ timeout_seconds=60,
508
+ ),
509
+ ToolConfig(
510
+ name="lintr",
511
+ command="Rscript",
512
+ args=["-e", "lintr::lint"],
513
+ extensions=extensions,
514
+ tool_type=ToolType.LINTER,
515
+ priority=1,
516
+ timeout_seconds=60,
517
+ ),
518
+ ]
519
+
520
+ def _register_dart_tools(self) -> None:
521
+ """Register Dart/Flutter tools."""
522
+ extensions = [".dart"]
523
+ for ext in extensions:
524
+ self._extension_map[ext] = "dart"
525
+
526
+ self._tools["dart"] = [
527
+ ToolConfig(
528
+ name="dart-format",
529
+ command="dart",
530
+ args=["format"],
531
+ extensions=extensions,
532
+ tool_type=ToolType.FORMATTER,
533
+ priority=1,
534
+ timeout_seconds=30,
535
+ ),
536
+ ToolConfig(
537
+ name="dart-analyze",
538
+ command="dart",
539
+ args=["analyze"],
540
+ extensions=extensions,
541
+ tool_type=ToolType.LINTER,
542
+ priority=1,
543
+ timeout_seconds=60,
544
+ ),
545
+ ]
546
+
547
+ def _register_csharp_tools(self) -> None:
548
+ """Register C# tools."""
549
+ extensions = [".cs"]
550
+ for ext in extensions:
551
+ self._extension_map[ext] = "csharp"
552
+
553
+ self._tools["csharp"] = [
554
+ ToolConfig(
555
+ name="dotnet-format",
556
+ command="dotnet",
557
+ args=["format"],
558
+ extensions=extensions,
559
+ tool_type=ToolType.FORMATTER,
560
+ priority=1,
561
+ timeout_seconds=60,
562
+ ),
563
+ ]
564
+
565
+ def _register_markdown_tools(self) -> None:
566
+ """Register Markdown tools."""
567
+ extensions = [".md", ".mdx", ".markdown"]
568
+ for ext in extensions:
569
+ self._extension_map[ext] = "markdown"
570
+
571
+ self._tools["markdown"] = [
572
+ ToolConfig(
573
+ name="prettier-md",
574
+ command="prettier",
575
+ args=["--write", "--parser", "markdown"],
576
+ extensions=extensions,
577
+ tool_type=ToolType.FORMATTER,
578
+ priority=1,
579
+ timeout_seconds=15,
580
+ ),
581
+ ToolConfig(
582
+ name="markdownlint",
583
+ command="markdownlint",
584
+ args=["--fix"],
585
+ extensions=extensions,
586
+ tool_type=ToolType.LINTER,
587
+ priority=1,
588
+ timeout_seconds=30,
589
+ ),
590
+ ]
591
+
592
+ def _register_ast_grep_tools(self) -> None:
593
+ """Register AST-Grep tools for structural code analysis.
594
+
595
+ AST-Grep (sg) provides AST-based code search, lint, and rewriting.
596
+ Supports 40+ languages with pattern matching and code transformation.
597
+ """
598
+ # AST-Grep supports multiple languages - define common extensions
599
+ ast_grep_extensions = [
600
+ ".py",
601
+ ".pyi", # Python
602
+ ".js",
603
+ ".jsx",
604
+ ".mjs",
605
+ ".cjs", # JavaScript
606
+ ".ts",
607
+ ".tsx",
608
+ ".mts",
609
+ ".cts", # TypeScript
610
+ ".go", # Go
611
+ ".rs", # Rust
612
+ ".java", # Java
613
+ ".kt",
614
+ ".kts", # Kotlin
615
+ ".c",
616
+ ".cpp",
617
+ ".cc",
618
+ ".cxx",
619
+ ".h",
620
+ ".hpp", # C/C++
621
+ ".rb", # Ruby
622
+ ".swift", # Swift
623
+ ".cs", # C#
624
+ ".php", # PHP
625
+ ".scala", # Scala
626
+ ".ex",
627
+ ".exs", # Elixir
628
+ ".lua", # Lua
629
+ ".html",
630
+ ".vue",
631
+ ".svelte", # Web templates
632
+ ]
633
+
634
+ self._tools["ast_grep"] = [
635
+ # Security scanning with rules
636
+ ToolConfig(
637
+ name="ast-grep-scan",
638
+ command="sg",
639
+ args=["scan"],
640
+ extensions=ast_grep_extensions,
641
+ tool_type=ToolType.AST_ANALYZER,
642
+ priority=1,
643
+ timeout_seconds=60,
644
+ requires_config=True,
645
+ config_files=["sgconfig.yml", ".ast-grep/sgconfig.yml"],
646
+ ),
647
+ # Pattern-based search
648
+ ToolConfig(
649
+ name="ast-grep-run",
650
+ command="sg",
651
+ args=["run", "--pattern"],
652
+ file_args_position="end",
653
+ extensions=ast_grep_extensions,
654
+ tool_type=ToolType.AST_ANALYZER,
655
+ priority=2,
656
+ timeout_seconds=30,
657
+ ),
658
+ # Interactive testing
659
+ ToolConfig(
660
+ name="ast-grep-test",
661
+ command="sg",
662
+ args=["test"],
663
+ extensions=ast_grep_extensions,
664
+ tool_type=ToolType.AST_ANALYZER,
665
+ priority=3,
666
+ timeout_seconds=120,
667
+ requires_config=True,
668
+ config_files=["sgconfig.yml"],
669
+ ),
670
+ ]
671
+
672
+ def is_tool_available(self, tool_name: str) -> bool:
673
+ """Check if a tool is available on the system."""
674
+ if tool_name in self._tool_cache:
675
+ return self._tool_cache[tool_name]
676
+
677
+ # Extract base command from tool name
678
+ for lang_tools in self._tools.values():
679
+ for tool in lang_tools:
680
+ if tool.name == tool_name:
681
+ available = shutil.which(tool.command) is not None
682
+ self._tool_cache[tool_name] = available
683
+ return available
684
+
685
+ return False
686
+
687
+ def get_language_for_file(self, file_path: str) -> Optional[str]:
688
+ """Get language identifier for a file path."""
689
+ ext = Path(file_path).suffix.lower()
690
+ return self._extension_map.get(ext)
691
+
692
+ def get_tools_for_language(self, language: str, tool_type: Optional[ToolType] = None) -> List[ToolConfig]:
693
+ """Get available tools for a language, optionally filtered by type."""
694
+ tools = self._tools.get(language, [])
695
+
696
+ if tool_type:
697
+ tools = [t for t in tools if t.tool_type == tool_type]
698
+
699
+ # Filter by availability and sort by priority
700
+ available_tools = [t for t in tools if self.is_tool_available(t.name)]
701
+ return sorted(available_tools, key=lambda t: t.priority)
702
+
703
+ def get_tools_for_file(self, file_path: str, tool_type: Optional[ToolType] = None) -> List[ToolConfig]:
704
+ """Get available tools for a specific file."""
705
+ language = self.get_language_for_file(file_path)
706
+ if not language:
707
+ return []
708
+ return self.get_tools_for_language(language, tool_type)
709
+
710
+ def run_tool(
711
+ self,
712
+ tool: ToolConfig,
713
+ file_path: str,
714
+ cwd: Optional[str] = None,
715
+ extra_args: Optional[List[str]] = None,
716
+ ) -> ToolResult:
717
+ """Run a tool on a file and return the result."""
718
+ try:
719
+ # Build command
720
+ cmd = [tool.command] + tool.args
721
+
722
+ # Add file path based on position
723
+ if tool.file_args_position == "end":
724
+ cmd.append(file_path)
725
+ elif tool.file_args_position == "start":
726
+ cmd.insert(1, file_path)
727
+ elif tool.file_args_position.startswith("replace:"):
728
+ placeholder = tool.file_args_position.split(":")[1]
729
+ # Use shlex.quote to prevent shell injection attacks
730
+ safe_path = shlex.quote(file_path)
731
+ cmd = [c.replace(placeholder, safe_path) for c in cmd]
732
+
733
+ # Add extra args
734
+ if extra_args:
735
+ cmd.extend(extra_args)
736
+
737
+ # Get file content hash before
738
+ file_hash_before = self._get_file_hash(file_path)
739
+
740
+ # Run tool
741
+ result = subprocess.run(
742
+ cmd,
743
+ capture_output=True,
744
+ text=True,
745
+ timeout=tool.timeout_seconds,
746
+ cwd=cwd,
747
+ )
748
+
749
+ # Get file content hash after
750
+ file_hash_after = self._get_file_hash(file_path)
751
+ file_modified = file_hash_before != file_hash_after
752
+
753
+ return ToolResult(
754
+ success=result.returncode == 0,
755
+ tool_name=tool.name,
756
+ output=result.stdout,
757
+ error=result.stderr,
758
+ exit_code=result.returncode,
759
+ file_modified=file_modified,
760
+ )
761
+
762
+ except subprocess.TimeoutExpired:
763
+ return ToolResult(
764
+ success=False,
765
+ tool_name=tool.name,
766
+ error=f"Tool timed out after {tool.timeout_seconds}s",
767
+ exit_code=-1,
768
+ )
769
+ except FileNotFoundError:
770
+ return ToolResult(
771
+ success=False,
772
+ tool_name=tool.name,
773
+ error=f"Tool not found: {tool.command}",
774
+ exit_code=-1,
775
+ )
776
+ except Exception as e:
777
+ return ToolResult(
778
+ success=False,
779
+ tool_name=tool.name,
780
+ error=str(e),
781
+ exit_code=-1,
782
+ )
783
+
784
+ def _get_file_hash(self, file_path: str) -> str:
785
+ """Get hash of file contents for change detection."""
786
+ try:
787
+ import hashlib
788
+
789
+ with open(file_path, "rb") as f:
790
+ return hashlib.md5(f.read()).hexdigest()
791
+ except Exception:
792
+ return ""
793
+
794
+
795
+ # Global registry instance
796
+ _registry: Optional[ToolRegistry] = None
797
+
798
+
799
+ def get_tool_registry() -> ToolRegistry:
800
+ """Get the global tool registry instance."""
801
+ global _registry
802
+ if _registry is None:
803
+ _registry = ToolRegistry()
804
+ return _registry