moai-adk 0.35.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (502) hide show
  1. moai_adk/__init__.py +10 -0
  2. moai_adk/__main__.py +199 -0
  3. moai_adk/cli/__init__.py +6 -0
  4. moai_adk/cli/commands/__init__.py +17 -0
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +272 -0
  7. moai_adk/cli/commands/init.py +372 -0
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +104 -0
  10. moai_adk/cli/commands/update.py +2686 -0
  11. moai_adk/cli/main.py +13 -0
  12. moai_adk/cli/prompts/__init__.py +5 -0
  13. moai_adk/cli/prompts/init_prompts.py +219 -0
  14. moai_adk/cli/spec_status.py +263 -0
  15. moai_adk/cli/ui/__init__.py +44 -0
  16. moai_adk/cli/ui/progress.py +422 -0
  17. moai_adk/cli/ui/prompts.py +389 -0
  18. moai_adk/cli/ui/theme.py +129 -0
  19. moai_adk/cli/worktree/__init__.py +27 -0
  20. moai_adk/cli/worktree/__main__.py +31 -0
  21. moai_adk/cli/worktree/cli.py +683 -0
  22. moai_adk/cli/worktree/exceptions.py +89 -0
  23. moai_adk/cli/worktree/manager.py +493 -0
  24. moai_adk/cli/worktree/models.py +65 -0
  25. moai_adk/cli/worktree/registry.py +422 -0
  26. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  27. moai_adk/core/__init__.py +1 -0
  28. moai_adk/core/analysis/__init__.py +9 -0
  29. moai_adk/core/analysis/session_analyzer.py +400 -0
  30. moai_adk/core/claude_integration.py +393 -0
  31. moai_adk/core/command_helpers.py +270 -0
  32. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  33. moai_adk/core/config/__init__.py +19 -0
  34. moai_adk/core/config/auto_spec_config.py +340 -0
  35. moai_adk/core/config/migration.py +244 -0
  36. moai_adk/core/config/unified.py +436 -0
  37. moai_adk/core/context_manager.py +273 -0
  38. moai_adk/core/diagnostics/__init__.py +19 -0
  39. moai_adk/core/diagnostics/slash_commands.py +159 -0
  40. moai_adk/core/enterprise_features.py +1404 -0
  41. moai_adk/core/error_recovery_system.py +1902 -0
  42. moai_adk/core/event_driven_hook_system.py +1371 -0
  43. moai_adk/core/git/__init__.py +31 -0
  44. moai_adk/core/git/branch.py +25 -0
  45. moai_adk/core/git/branch_manager.py +129 -0
  46. moai_adk/core/git/checkpoint.py +134 -0
  47. moai_adk/core/git/commit.py +67 -0
  48. moai_adk/core/git/conflict_detector.py +413 -0
  49. moai_adk/core/git/event_detector.py +79 -0
  50. moai_adk/core/git/manager.py +216 -0
  51. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  52. moai_adk/core/input_validation_middleware.py +1006 -0
  53. moai_adk/core/integration/__init__.py +22 -0
  54. moai_adk/core/integration/engine.py +157 -0
  55. moai_adk/core/integration/integration_tester.py +226 -0
  56. moai_adk/core/integration/models.py +88 -0
  57. moai_adk/core/integration/utils.py +211 -0
  58. moai_adk/core/issue_creator.py +305 -0
  59. moai_adk/core/jit_context_loader.py +956 -0
  60. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  61. moai_adk/core/language_config.py +202 -0
  62. moai_adk/core/language_config_resolver.py +572 -0
  63. moai_adk/core/language_validator.py +543 -0
  64. moai_adk/core/mcp/setup.py +116 -0
  65. moai_adk/core/merge/__init__.py +9 -0
  66. moai_adk/core/merge/analyzer.py +605 -0
  67. moai_adk/core/migration/__init__.py +18 -0
  68. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  69. moai_adk/core/migration/backup_manager.py +277 -0
  70. moai_adk/core/migration/custom_element_scanner.py +358 -0
  71. moai_adk/core/migration/file_migrator.py +209 -0
  72. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  73. moai_adk/core/migration/selective_restorer.py +470 -0
  74. moai_adk/core/migration/template_utils.py +74 -0
  75. moai_adk/core/migration/user_selection_ui.py +338 -0
  76. moai_adk/core/migration/version_detector.py +139 -0
  77. moai_adk/core/migration/version_migrator.py +228 -0
  78. moai_adk/core/performance/__init__.py +6 -0
  79. moai_adk/core/performance/cache_system.py +316 -0
  80. moai_adk/core/performance/parallel_processor.py +116 -0
  81. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  82. moai_adk/core/project/__init__.py +1 -0
  83. moai_adk/core/project/backup_utils.py +70 -0
  84. moai_adk/core/project/checker.py +300 -0
  85. moai_adk/core/project/detector.py +293 -0
  86. moai_adk/core/project/initializer.py +387 -0
  87. moai_adk/core/project/phase_executor.py +716 -0
  88. moai_adk/core/project/validator.py +139 -0
  89. moai_adk/core/quality/__init__.py +6 -0
  90. moai_adk/core/quality/trust_checker.py +377 -0
  91. moai_adk/core/quality/validators/__init__.py +6 -0
  92. moai_adk/core/quality/validators/base_validator.py +19 -0
  93. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  94. moai_adk/core/robust_json_parser.py +611 -0
  95. moai_adk/core/rollback_manager.py +918 -0
  96. moai_adk/core/session_manager.py +651 -0
  97. moai_adk/core/skill_loading_system.py +579 -0
  98. moai_adk/core/spec/confidence_scoring.py +680 -0
  99. moai_adk/core/spec/ears_template_engine.py +1247 -0
  100. moai_adk/core/spec/quality_validator.py +687 -0
  101. moai_adk/core/spec_status_manager.py +478 -0
  102. moai_adk/core/template/__init__.py +7 -0
  103. moai_adk/core/template/backup.py +174 -0
  104. moai_adk/core/template/config.py +191 -0
  105. moai_adk/core/template/languages.py +43 -0
  106. moai_adk/core/template/merger.py +233 -0
  107. moai_adk/core/template/processor.py +1200 -0
  108. moai_adk/core/template_engine.py +310 -0
  109. moai_adk/core/template_variable_synchronizer.py +417 -0
  110. moai_adk/core/unified_permission_manager.py +745 -0
  111. moai_adk/core/user_behavior_analytics.py +851 -0
  112. moai_adk/core/version_sync.py +429 -0
  113. moai_adk/foundation/__init__.py +56 -0
  114. moai_adk/foundation/backend.py +1027 -0
  115. moai_adk/foundation/database.py +1115 -0
  116. moai_adk/foundation/devops.py +1585 -0
  117. moai_adk/foundation/ears.py +431 -0
  118. moai_adk/foundation/frontend.py +870 -0
  119. moai_adk/foundation/git/commit_templates.py +557 -0
  120. moai_adk/foundation/git.py +376 -0
  121. moai_adk/foundation/langs.py +484 -0
  122. moai_adk/foundation/ml_ops.py +1162 -0
  123. moai_adk/foundation/testing.py +1524 -0
  124. moai_adk/foundation/trust/trust_principles.py +676 -0
  125. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  126. moai_adk/project/__init__.py +0 -0
  127. moai_adk/project/configuration.py +1084 -0
  128. moai_adk/project/documentation.py +566 -0
  129. moai_adk/project/schema.py +447 -0
  130. moai_adk/statusline/__init__.py +38 -0
  131. moai_adk/statusline/alfred_detector.py +105 -0
  132. moai_adk/statusline/config.py +376 -0
  133. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  134. moai_adk/statusline/git_collector.py +190 -0
  135. moai_adk/statusline/main.py +322 -0
  136. moai_adk/statusline/metrics_tracker.py +78 -0
  137. moai_adk/statusline/renderer.py +343 -0
  138. moai_adk/statusline/update_checker.py +129 -0
  139. moai_adk/statusline/version_reader.py +741 -0
  140. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
  141. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  142. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  143. moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
  144. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  145. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  146. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  147. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  148. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  149. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  150. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  151. moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
  152. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  153. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  154. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  155. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  156. moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
  157. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  158. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  159. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  160. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  161. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  164. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  165. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  166. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  167. moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
  168. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  169. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  170. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  171. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  172. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  173. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  185. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  186. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  187. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  188. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  189. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
  190. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  191. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  192. moai_adk/templates/.claude/settings.json +172 -0
  193. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
  194. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  195. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  196. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  200. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  201. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  202. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  203. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  204. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  205. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
  206. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  207. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  210. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  211. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  212. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  213. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  214. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  215. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
  216. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  217. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  221. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  222. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  223. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  224. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  230. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  231. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  232. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  284. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
  285. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
  286. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  287. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  288. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  289. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  290. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
  291. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  292. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  293. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
  294. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  295. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
  297. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  298. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
  304. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
  305. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
  306. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  307. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  308. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
  309. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  310. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  311. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
  312. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  313. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  314. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
  315. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  316. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  318. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  319. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  320. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  321. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  331. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  332. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  333. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  334. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  338. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  339. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  340. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  341. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  342. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  343. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  344. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  345. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  346. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
  347. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  348. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  349. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  350. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  351. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  352. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  353. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  354. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  355. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  356. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  357. moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
  358. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
  359. moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
  360. moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
  361. moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
  362. moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
  363. moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
  364. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
  365. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
  366. moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
  367. moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
  368. moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
  369. moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
  370. moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
  371. moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
  372. moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
  373. moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
  374. moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
  375. moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
  376. moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
  377. moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
  378. moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
  379. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
  380. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
  381. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
  382. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
  383. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
  384. moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
  385. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
  386. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
  387. moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
  388. moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
  389. moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
  390. moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
  391. moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  433. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  458. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  459. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  460. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  461. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  462. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  463. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  464. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  465. moai_adk/templates/.git-hooks/pre-commit +128 -0
  466. moai_adk/templates/.git-hooks/pre-push +365 -0
  467. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  468. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  469. moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
  470. moai_adk/templates/.gitignore +222 -0
  471. moai_adk/templates/.mcp.json +13 -0
  472. moai_adk/templates/.moai/config/config.yaml +58 -0
  473. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  474. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  475. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  476. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  477. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  478. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
  479. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  480. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  481. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  482. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  483. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  484. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  485. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  486. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  487. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  488. moai_adk/templates/CLAUDE.md +642 -0
  489. moai_adk/utils/__init__.py +30 -0
  490. moai_adk/utils/banner.py +38 -0
  491. moai_adk/utils/common.py +294 -0
  492. moai_adk/utils/link_validator.py +241 -0
  493. moai_adk/utils/logger.py +147 -0
  494. moai_adk/utils/safe_file_reader.py +206 -0
  495. moai_adk/utils/timeout.py +160 -0
  496. moai_adk/utils/toon_utils.py +256 -0
  497. moai_adk/version.py +22 -0
  498. moai_adk-0.35.1.dist-info/METADATA +3018 -0
  499. moai_adk-0.35.1.dist-info/RECORD +502 -0
  500. moai_adk-0.35.1.dist-info/WHEEL +4 -0
  501. moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
  502. moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,393 @@
1
+ """
2
+ Claude Code CLI integration for advanced variable substitution and automation.
3
+
4
+ Enables headless operation with template variable processing, JSON streaming,
5
+ and multi-language support for commands, agents, and output styles.
6
+ """
7
+
8
+ import json
9
+ import subprocess
10
+ import tempfile
11
+ from pathlib import Path
12
+ from typing import Any, Dict, Optional, Union
13
+
14
+ from .language_config import get_language_info
15
+ from .template_engine import TemplateEngine
16
+
17
+
18
+ class ClaudeCLIIntegration:
19
+ """
20
+ Advanced Claude CLI integration with template variable processing.
21
+
22
+ Features:
23
+ - Template variable substitution using MoAI-ADK's TemplateEngine
24
+ - JSON streaming input/output support
25
+ - Multi-language description processing
26
+ - Headless automation capabilities
27
+ - Configuration file generation and management
28
+ """
29
+
30
+ def __init__(self, template_engine: Optional[TemplateEngine] = None):
31
+ """Initialize Claude CLI integration.
32
+
33
+ Args:
34
+ template_engine: TemplateEngine instance for variable processing
35
+ """
36
+ self.template_engine = template_engine or TemplateEngine()
37
+
38
+ def generate_claude_settings(self, variables: Dict[str, Any], output_path: Optional[Path] = None) -> Path:
39
+ """Generate Claude settings JSON file with variables.
40
+
41
+ Args:
42
+ variables: Template variables to include
43
+ output_path: Path for settings file (auto-generated if None)
44
+
45
+ Returns:
46
+ Path to generated settings file
47
+ """
48
+ if output_path is None:
49
+ temp_file = tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False)
50
+ output_path = Path(temp_file.name)
51
+ temp_file.close()
52
+
53
+ settings = {
54
+ "variables": variables,
55
+ "template_context": {
56
+ "conversation_language": variables.get("CONVERSATION_LANGUAGE", "en"),
57
+ "conversation_language_name": variables.get("CONVERSATION_LANGUAGE_NAME", "English"),
58
+ "project_name": variables.get("PROJECT_NAME", ""),
59
+ "codebase_language": variables.get("CODEBASE_LANGUAGE", "python"),
60
+ },
61
+ }
62
+
63
+ output_path.write_text(json.dumps(settings, indent=2, ensure_ascii=False))
64
+ return output_path
65
+
66
+ def process_template_command(
67
+ self,
68
+ command_template: str,
69
+ variables: Dict[str, Any],
70
+ print_mode: bool = True,
71
+ output_format: str = "json",
72
+ ) -> Dict[str, Any]:
73
+ """Process Claude command with template variables.
74
+
75
+ Args:
76
+ command_template: Command template with {{VARIABLE}} placeholders
77
+ variables: Variables for substitution
78
+ print_mode: Use --print flag for non-interactive execution
79
+ output_format: Output format (text, json, stream-json)
80
+
81
+ Returns:
82
+ Process result dictionary
83
+ """
84
+ try:
85
+ # Process template variables
86
+ processed_command = self.template_engine.render_string(command_template, variables)
87
+
88
+ # Build Claude CLI command
89
+ cmd_parts = ["claude"]
90
+
91
+ if print_mode:
92
+ cmd_parts.extend(["--print"])
93
+ cmd_parts.extend(["--output-format", output_format])
94
+
95
+ # Add variable settings
96
+ settings_file = self.generate_claude_settings(variables)
97
+ cmd_parts.extend(["--settings", str(settings_file)])
98
+
99
+ # Add processed command
100
+ cmd_parts.append(processed_command)
101
+
102
+ # Execute Claude CLI
103
+ result = subprocess.run(cmd_parts, capture_output=True, text=True, encoding="utf-8")
104
+
105
+ # Cleanup settings file
106
+ try:
107
+ settings_file.unlink()
108
+ except OSError:
109
+ pass # Ignore cleanup errors
110
+
111
+ return {
112
+ "success": result.returncode == 0,
113
+ "stdout": result.stdout,
114
+ "stderr": result.stderr,
115
+ "returncode": result.returncode,
116
+ "processed_command": processed_command,
117
+ "variables_used": variables,
118
+ }
119
+
120
+ except Exception as e:
121
+ return {
122
+ "success": False,
123
+ "error": str(e),
124
+ "processed_command": command_template,
125
+ "variables_used": variables,
126
+ }
127
+
128
+ def generate_multilingual_descriptions(
129
+ self,
130
+ base_descriptions: Dict[str, str],
131
+ target_languages: Optional[list[str]] = None,
132
+ ) -> Dict[str, Dict[str, str]]:
133
+ """Generate multilingual descriptions for commands/agents.
134
+
135
+ Args:
136
+ base_descriptions: English base descriptions
137
+ target_languages: Target language codes (auto-detected if None)
138
+
139
+ Returns:
140
+ Multilingual descriptions dictionary
141
+ """
142
+ if target_languages is None:
143
+ # Auto-detect from variables or use common languages
144
+ target_languages = ["en", "ko", "ja", "es", "fr", "de"]
145
+
146
+ multilingual = {}
147
+
148
+ for item_id, base_desc in base_descriptions.items():
149
+ multilingual[item_id] = {"en": base_desc}
150
+
151
+ # Generate descriptions for target languages
152
+ for lang_code in target_languages:
153
+ if lang_code == "en":
154
+ continue # Already have base
155
+
156
+ lang_info = get_language_info(lang_code)
157
+ if not lang_info:
158
+ continue
159
+
160
+ # Create language-specific description prompt
161
+ translation_prompt = f"""Translate the following Claude Code description to {lang_info["native_name"]}.
162
+ Keep technical terms in English. Provide only the translation without explanation:
163
+
164
+ Original: {base_desc}
165
+
166
+ Translation:"""
167
+
168
+ # Use Claude CLI for translation
169
+ translation_result = self.process_template_command(
170
+ translation_prompt,
171
+ {"CONVERSATION_LANGUAGE": lang_code},
172
+ print_mode=True,
173
+ output_format="text",
174
+ )
175
+
176
+ if translation_result["success"]:
177
+ # Extract translation from output
178
+ translation = translation_result["stdout"].strip()
179
+ if translation:
180
+ multilingual[item_id][lang_code] = translation
181
+
182
+ return multilingual
183
+
184
+ def create_agent_with_multilingual_support(
185
+ self,
186
+ agent_name: str,
187
+ base_description: str,
188
+ tools: list[str],
189
+ model: str = "sonnet",
190
+ target_languages: Optional[list[str]] = None,
191
+ ) -> Dict[str, Any]:
192
+ """Create Claude agent with multilingual description support.
193
+
194
+ Args:
195
+ agent_name: Agent name (kebab-case)
196
+ base_description: English base description
197
+ tools: List of required tools
198
+ model: Claude model to use
199
+ target_languages: Target languages for descriptions
200
+
201
+ Returns:
202
+ Agent configuration dictionary
203
+ """
204
+ if target_languages is None:
205
+ target_languages = ["en", "ko", "ja", "es", "fr", "de"]
206
+
207
+ # Generate multilingual descriptions
208
+ descriptions = self.generate_multilingual_descriptions({agent_name: base_description}, target_languages)
209
+
210
+ agent_config = {
211
+ "name": agent_name,
212
+ "description": descriptions[agent_name]["en"], # Primary English description
213
+ "tools": tools,
214
+ "model": model,
215
+ "descriptions": descriptions[agent_name], # All language versions
216
+ "multilingual_support": True,
217
+ }
218
+
219
+ return agent_config
220
+
221
+ def create_command_with_multilingual_support(
222
+ self,
223
+ command_name: str,
224
+ base_description: str,
225
+ argument_hint: list[str],
226
+ tools: list[str],
227
+ model: str = "haiku",
228
+ target_languages: Optional[list[str]] = None,
229
+ ) -> Dict[str, Any]:
230
+ """Create Claude command with multilingual description support.
231
+
232
+ Args:
233
+ command_name: Command name (kebab-case)
234
+ base_description: English base description
235
+ argument_hint: List of argument hints
236
+ tools: List of required tools
237
+ model: Claude model to use
238
+ target_languages: Target languages for descriptions
239
+
240
+ Returns:
241
+ Command configuration dictionary
242
+ """
243
+ if target_languages is None:
244
+ target_languages = ["en", "ko", "ja", "es", "fr", "de"]
245
+
246
+ # Generate multilingual descriptions
247
+ descriptions = self.generate_multilingual_descriptions({command_name: base_description}, target_languages)
248
+
249
+ command_config = {
250
+ "name": command_name,
251
+ "description": descriptions[command_name]["en"], # Primary English description
252
+ "argument-hint": argument_hint,
253
+ "tools": tools,
254
+ "model": model,
255
+ "descriptions": descriptions[command_name], # All language versions
256
+ "multilingual_support": True,
257
+ }
258
+
259
+ return command_config
260
+
261
+ def process_json_stream_input(
262
+ self,
263
+ input_data: Union[Dict[str, Any], str],
264
+ variables: Optional[Dict[str, Any]] = None,
265
+ ) -> Dict[str, Any]:
266
+ """Process JSON stream input for Claude CLI.
267
+
268
+ Args:
269
+ input_data: JSON data as dict or JSON string
270
+ variables: Additional variables for processing
271
+
272
+ Returns:
273
+ Processed input data
274
+ """
275
+ # Convert string to dict if needed
276
+ processed_data: Dict[str, Any]
277
+ if isinstance(input_data, str):
278
+ try:
279
+ processed_data = json.loads(input_data)
280
+ except json.JSONDecodeError as e:
281
+ raise ValueError(f"Invalid JSON input: {e}")
282
+ else:
283
+ processed_data = input_data
284
+
285
+ if variables:
286
+ # Process any string values in processed_data with variables
287
+ for key, value in processed_data.items():
288
+ if isinstance(value, str) and "{{" in value and "}}" in value:
289
+ processed_data[key] = self.template_engine.render_string(value, variables)
290
+
291
+ return processed_data
292
+
293
+ def execute_headless_command(
294
+ self,
295
+ prompt_template: str,
296
+ variables: Dict[str, Any],
297
+ input_format: str = "stream-json",
298
+ output_format: str = "stream-json",
299
+ additional_options: Optional[list[str]] = None,
300
+ ) -> Dict[str, Any]:
301
+ """Execute Claude command in headless mode with full variable processing.
302
+
303
+ Args:
304
+ prompt_template: Prompt template with variables
305
+ variables: Variables for substitution
306
+ input_format: Input format (text, stream-json)
307
+ output_format: Output format (text, json, stream-json)
308
+ additional_options: Additional CLI options
309
+
310
+ Returns:
311
+ Command execution result
312
+ """
313
+ try:
314
+ # Process prompt template
315
+ processed_prompt = self.template_engine.render_string(prompt_template, variables)
316
+
317
+ # Build Claude command
318
+ cmd_parts = ["claude", "--print"]
319
+ cmd_parts.extend(["--input-format", input_format])
320
+ cmd_parts.extend(["--output-format", output_format])
321
+
322
+ # Add settings
323
+ settings_file = self.generate_claude_settings(variables)
324
+ cmd_parts.extend(["--settings", str(settings_file)])
325
+
326
+ # Add additional options
327
+ if additional_options:
328
+ cmd_parts.extend(additional_options)
329
+
330
+ # Add processed prompt
331
+ cmd_parts.append(processed_prompt)
332
+
333
+ # Execute with streaming support
334
+ if output_format == "stream-json":
335
+ # For streaming, use subprocess with real-time output
336
+ process = subprocess.Popen(
337
+ cmd_parts,
338
+ stdout=subprocess.PIPE,
339
+ stderr=subprocess.PIPE,
340
+ text=True,
341
+ encoding="utf-8",
342
+ )
343
+
344
+ stdout_lines = []
345
+ stderr_lines = []
346
+
347
+ # Stream output in real-time
348
+ while True:
349
+ stdout_line = process.stdout.readline()
350
+ stderr_line = process.stderr.readline()
351
+
352
+ if stdout_line == "" and stderr_line == "" and process.poll() is not None:
353
+ break
354
+
355
+ if stdout_line:
356
+ stdout_lines.append(stdout_line.strip())
357
+ # You can process each line here for real-time handling
358
+
359
+ if stderr_line:
360
+ stderr_lines.append(stderr_line.strip())
361
+
362
+ returncode = process.poll()
363
+
364
+ else:
365
+ # Non-streaming execution
366
+ result = subprocess.run(cmd_parts, capture_output=True, text=True, encoding="utf-8")
367
+
368
+ stdout_lines = result.stdout.strip().split("\n") if result.stdout else []
369
+ stderr_lines = result.stderr.strip().split("\n") if result.stderr else []
370
+ returncode = result.returncode
371
+
372
+ # Cleanup
373
+ try:
374
+ settings_file.unlink()
375
+ except OSError:
376
+ pass
377
+
378
+ return {
379
+ "success": returncode == 0,
380
+ "stdout": stdout_lines,
381
+ "stderr": stderr_lines,
382
+ "returncode": returncode,
383
+ "processed_prompt": processed_prompt,
384
+ "variables": variables,
385
+ }
386
+
387
+ except Exception as e:
388
+ return {
389
+ "success": False,
390
+ "error": str(e),
391
+ "prompt_template": prompt_template,
392
+ "variables": variables,
393
+ }
@@ -0,0 +1,270 @@
1
+ """
2
+ Command Helper Utilities
3
+
4
+ Provides helper functions for commands to interact with ContextManager
5
+ and perform common operations like context extraction and validation.
6
+ """
7
+
8
+ import json
9
+ import os
10
+ from datetime import datetime, timezone
11
+ from typing import Any, Dict, List, Optional
12
+
13
+ import yaml
14
+
15
+ # Conditional import of ContextManager
16
+ try:
17
+ from moai_adk.core.context_manager import (
18
+ ContextManager,
19
+ validate_and_convert_path,
20
+ validate_no_template_vars,
21
+ )
22
+
23
+ CONTEXT_MANAGER_AVAILABLE = True
24
+ except ImportError:
25
+ CONTEXT_MANAGER_AVAILABLE = False
26
+
27
+
28
+ def extract_project_metadata(project_root: str) -> Dict[str, Any]:
29
+ """
30
+ Extract project metadata from config.yaml.
31
+
32
+ Args:
33
+ project_root: Root directory of the project
34
+
35
+ Returns:
36
+ Dictionary containing project metadata
37
+
38
+ Raises:
39
+ FileNotFoundError: If config.yaml doesn't exist
40
+ yaml.YAMLError: If config.yaml is invalid
41
+ """
42
+ config_path = os.path.join(project_root, ".moai", "config", "config.yaml")
43
+
44
+ if not os.path.exists(config_path):
45
+ raise FileNotFoundError(f"Config file not found: {config_path}")
46
+
47
+ with open(config_path, "r", encoding="utf-8") as f:
48
+ config = yaml.safe_load(f) or {}
49
+
50
+ # Extract key metadata
51
+ metadata = {
52
+ "project_name": config.get("project", {}).get("name", "Unknown"),
53
+ "mode": config.get("project", {}).get("mode", "personal"),
54
+ "github_profile": config.get("github", {}).get("profile_name", ""),
55
+ "language": config.get("language", {}).get("conversation_language", "en"),
56
+ "tech_stack": [], # To be detected separately
57
+ }
58
+
59
+ return metadata
60
+
61
+
62
+ def detect_tech_stack(project_root: str) -> List[str]:
63
+ """
64
+ Detect primary tech stack from project structure.
65
+
66
+ Checks for common project indicator files.
67
+
68
+ Args:
69
+ project_root: Root directory of the project
70
+
71
+ Returns:
72
+ List of detected languages/frameworks
73
+ """
74
+ indicators = {
75
+ "pyproject.toml": "python",
76
+ "package.json": "javascript",
77
+ "go.mod": "go",
78
+ "Cargo.toml": "rust",
79
+ "pom.xml": "java",
80
+ "Gemfile": "ruby",
81
+ }
82
+
83
+ tech_stack = []
84
+
85
+ for indicator_file, language in indicators.items():
86
+ if os.path.exists(os.path.join(project_root, indicator_file)):
87
+ tech_stack.append(language)
88
+
89
+ # Default to python if nothing detected
90
+ if not tech_stack:
91
+ tech_stack.append("python")
92
+
93
+ return tech_stack
94
+
95
+
96
+ def build_phase_result(
97
+ phase_name: str,
98
+ status: str,
99
+ outputs: Dict[str, Any],
100
+ files_created: List[str],
101
+ next_phase: Optional[str] = None,
102
+ ) -> Dict[str, Any]:
103
+ """
104
+ Build standardized phase result dictionary.
105
+
106
+ Args:
107
+ phase_name: Name of the phase (e.g., "0-project")
108
+ status: Phase status (completed/error/interrupted)
109
+ outputs: Dictionary of phase outputs
110
+ files_created: List of created files (absolute paths)
111
+ next_phase: Optional next phase name
112
+
113
+ Returns:
114
+ Standardized phase result dictionary
115
+ """
116
+ phase_result = {
117
+ "phase": phase_name,
118
+ "timestamp": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
119
+ "status": status,
120
+ "outputs": outputs,
121
+ "files_created": files_created,
122
+ }
123
+
124
+ if next_phase:
125
+ phase_result["next_phase"] = next_phase
126
+
127
+ return phase_result
128
+
129
+
130
+ def validate_phase_files(relative_paths: List[str], project_root: str) -> List[str]:
131
+ """
132
+ Validate and convert relative file paths to absolute paths.
133
+
134
+ Handles errors gracefully by logging warnings and skipping invalid paths.
135
+
136
+ Args:
137
+ relative_paths: List of relative file paths
138
+ project_root: Project root directory
139
+
140
+ Returns:
141
+ List of validated absolute paths
142
+ """
143
+ if not CONTEXT_MANAGER_AVAILABLE:
144
+ # Fallback: simple absolute path conversion
145
+ return [os.path.abspath(os.path.join(project_root, p)) for p in relative_paths]
146
+
147
+ absolute_paths = []
148
+
149
+ for rel_path in relative_paths:
150
+ try:
151
+ abs_path = validate_and_convert_path(rel_path, project_root)
152
+ absolute_paths.append(abs_path)
153
+ except (ValueError, FileNotFoundError) as e:
154
+ # Log warning but continue processing
155
+ print(f"Warning: Could not validate path '{rel_path}': {e}")
156
+
157
+ return absolute_paths
158
+
159
+
160
+ def _prepare_phase_data(
161
+ phase_name: str,
162
+ status: str,
163
+ outputs: Dict[str, Any],
164
+ absolute_paths: List[str],
165
+ next_phase: Optional[str],
166
+ ) -> Dict[str, Any]:
167
+ """
168
+ Prepare phase data for saving.
169
+
170
+ Args:
171
+ phase_name: Name of the phase
172
+ status: Phase status
173
+ outputs: Phase outputs
174
+ absolute_paths: List of absolute file paths
175
+ next_phase: Optional next phase
176
+
177
+ Returns:
178
+ Phase data dictionary ready for saving
179
+ """
180
+ phase_data = build_phase_result(
181
+ phase_name=phase_name,
182
+ status=status,
183
+ outputs=outputs,
184
+ files_created=absolute_paths,
185
+ next_phase=next_phase,
186
+ )
187
+
188
+ # Validate no unsubstituted template variables
189
+ phase_json = json.dumps(phase_data)
190
+ validate_no_template_vars(phase_json)
191
+
192
+ return phase_data
193
+
194
+
195
+ def _validate_and_save(context_mgr: Any, phase_data: Dict[str, Any]) -> str:
196
+ """
197
+ Validate and save phase data.
198
+
199
+ Args:
200
+ context_mgr: ContextManager instance
201
+ phase_data: Phase data to save
202
+
203
+ Returns:
204
+ Path to saved file
205
+ """
206
+ saved_path = context_mgr.save_phase_result(phase_data)
207
+ print(f"✓ Phase context saved: {os.path.basename(saved_path)}")
208
+ return saved_path
209
+
210
+
211
+ def save_command_context(
212
+ phase_name: str,
213
+ project_root: str,
214
+ outputs: Dict[str, Any],
215
+ files_created: List[str],
216
+ next_phase: Optional[str] = None,
217
+ status: str = "completed",
218
+ ) -> Optional[str]:
219
+ """
220
+ Save command phase context using ContextManager.
221
+
222
+ This is a convenience wrapper for commands to save phase results
223
+ with proper error handling.
224
+
225
+ Args:
226
+ phase_name: Name of the phase (e.g., "0-project")
227
+ project_root: Project root directory
228
+ outputs: Phase-specific outputs
229
+ files_created: List of relative file paths
230
+ next_phase: Optional next phase recommendation
231
+ status: Phase status (default: "completed")
232
+
233
+ Returns:
234
+ Path to saved file, or None if save failed
235
+ """
236
+ if not CONTEXT_MANAGER_AVAILABLE:
237
+ print("Warning: ContextManager not available. Phase context not saved.")
238
+ return None
239
+
240
+ try:
241
+ context_mgr = ContextManager(project_root)
242
+ absolute_paths = validate_phase_files(files_created, project_root)
243
+ phase_data = _prepare_phase_data(phase_name, status, outputs, absolute_paths, next_phase)
244
+ return _validate_and_save(context_mgr, phase_data)
245
+
246
+ except Exception as e:
247
+ print(f"Warning: Failed to save phase context: {e}")
248
+ print("Command execution continues normally.")
249
+ return None
250
+
251
+
252
+ def load_previous_phase(project_root: str) -> Optional[Dict[str, Any]]:
253
+ """
254
+ Load the most recent phase result.
255
+
256
+ Args:
257
+ project_root: Project root directory
258
+
259
+ Returns:
260
+ Phase result dictionary, or None if unavailable
261
+ """
262
+ if not CONTEXT_MANAGER_AVAILABLE:
263
+ return None
264
+
265
+ try:
266
+ context_mgr = ContextManager(project_root)
267
+ return context_mgr.load_latest_phase()
268
+ except Exception as e:
269
+ print(f"Warning: Could not load previous phase: {e}")
270
+ return None