moai-adk 0.8.0__py3-none-any.whl → 0.34.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +118 -48
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1978 -149
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +683 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +493 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +422 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +148 -17
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +305 -0
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +572 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +189 -22
  84. moai_adk/core/project/initializer.py +218 -27
  85. moai_adk/core/project/phase_executor.py +416 -44
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +310 -0
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +376 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +322 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +343 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +670 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  147. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  148. moai_adk/templates/.claude/agents/moai/expert-security.md +509 -0
  149. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  150. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  151. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  152. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  153. moai_adk/templates/.claude/agents/moai/manager-git.md +1020 -0
  154. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  155. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  156. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  157. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  158. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  164. moai_adk/templates/.claude/commands/moai/0-project.md +1384 -0
  165. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  166. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  167. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  168. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  169. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  170. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  171. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  172. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +10 -37
  173. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  185. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  186. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1075 -0
  187. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  188. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  189. moai_adk/templates/.claude/settings.json +78 -50
  190. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +438 -0
  191. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  194. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  195. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  196. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  200. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +313 -283
  201. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +610 -1525
  202. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +423 -619
  203. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +295 -95
  204. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +817 -16
  205. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  206. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  207. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +532 -17
  210. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +470 -97
  211. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
  212. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +651 -18
  213. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  214. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  215. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  216. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  217. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  221. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  222. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  223. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  224. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  280. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +618 -93
  281. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +446 -91
  282. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  283. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  284. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  285. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  286. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +346 -94
  287. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +906 -16
  288. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +721 -15
  289. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +352 -91
  290. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +851 -16
  291. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +278 -18
  292. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +344 -86
  293. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +993 -16
  294. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +549 -18
  295. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +617 -96
  296. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +364 -314
  297. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +849 -496
  298. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +731 -243
  299. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +545 -89
  300. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +650 -87
  301. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +341 -93
  302. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +646 -16
  303. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +491 -18
  304. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +463 -89
  305. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
  306. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +410 -17
  307. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +486 -112
  308. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
  309. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +659 -17
  310. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +333 -92
  311. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1076 -16
  312. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +718 -21
  313. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  314. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  315. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  316. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  318. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  319. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  320. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  321. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  331. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  332. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  333. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  334. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  338. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  339. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  340. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  341. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  342. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +290 -0
  343. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  344. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  345. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  346. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  347. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  348. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  349. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  351. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  352. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  353. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  354. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  355. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  357. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  358. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  359. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  360. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  361. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  362. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  363. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  364. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  365. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  366. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  367. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  368. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  370. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  374. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  375. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  376. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1462 -0
  378. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  379. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  380. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  381. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  417. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  418. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  419. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  420. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  421. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  422. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  423. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  424. moai_adk/templates/.git-hooks/pre-commit +128 -0
  425. moai_adk/templates/.git-hooks/pre-push +365 -0
  426. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  427. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  428. moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
  429. moai_adk/templates/.gitignore +194 -13
  430. moai_adk/templates/.mcp.json +31 -0
  431. moai_adk/templates/.moai/config/config.yaml +58 -0
  432. moai_adk/templates/.moai/config/questions/_schema.yaml +151 -0
  433. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  434. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  435. moai_adk/templates/.moai/config/questions/tab2-project.yaml +81 -0
  436. moai_adk/templates/.moai/config/questions/tab3-git.yaml +634 -0
  437. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +170 -0
  438. moai_adk/templates/.moai/config/questions/tab5-system.yaml +87 -0
  439. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  441. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  442. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  443. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  444. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  445. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  446. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  447. moai_adk/templates/CLAUDE.md +571 -244
  448. moai_adk/utils/__init__.py +24 -2
  449. moai_adk/utils/banner.py +9 -13
  450. moai_adk/utils/common.py +294 -0
  451. moai_adk/utils/link_validator.py +241 -0
  452. moai_adk/utils/logger.py +4 -9
  453. moai_adk/utils/safe_file_reader.py +206 -0
  454. moai_adk/utils/timeout.py +160 -0
  455. moai_adk/utils/toon_utils.py +256 -0
  456. moai_adk/version.py +22 -0
  457. moai_adk-0.34.0.dist-info/METADATA +2999 -0
  458. moai_adk-0.34.0.dist-info/RECORD +463 -0
  459. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/WHEEL +1 -1
  460. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/entry_points.txt +1 -0
  461. moai_adk/cli/commands/backup.py +0 -80
  462. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -293
  463. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -196
  464. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -207
  465. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -375
  466. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -343
  467. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -246
  468. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -320
  469. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -837
  470. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -272
  471. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -265
  472. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -311
  473. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -352
  474. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1184
  475. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -665
  476. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -488
  477. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -623
  478. moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
  479. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  480. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
  481. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -170
  482. moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -67
  483. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -416
  484. moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -198
  485. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -21
  486. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  487. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -161
  488. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -90
  489. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -42
  490. moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
  491. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  492. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  493. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  494. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  495. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  496. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  497. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  498. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  499. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  500. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  501. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  502. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  503. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  510. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  511. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  516. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  517. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  519. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  520. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  521. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  525. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  527. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  528. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  529. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  530. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  531. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  532. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  533. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  534. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  535. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  536. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  537. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  538. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  539. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  540. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  541. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  542. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  543. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  544. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  545. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  546. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  547. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  548. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  549. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  550. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  551. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  552. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  553. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  554. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  555. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  556. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  557. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  558. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  559. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  560. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  561. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  562. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  563. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  564. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  565. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  566. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -113
  567. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  569. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  570. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  572. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  573. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  574. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  575. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  576. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  577. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  578. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  579. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  580. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  581. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  582. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  583. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  584. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  585. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  586. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  587. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  588. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  589. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  590. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  591. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  592. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  593. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  594. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  595. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  596. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  597. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  598. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  599. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  601. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  602. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  603. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  604. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  605. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  606. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  607. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  608. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  609. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
  610. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
  611. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  612. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
  613. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  614. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  615. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  616. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  617. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
  618. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  619. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
  620. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
  621. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
  622. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
  623. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
  624. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  625. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
  626. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
  627. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
  628. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  629. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
  630. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
  631. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  632. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  633. moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
  634. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  635. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -256
  636. moai_adk/templates/.moai/config.json +0 -96
  637. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
  638. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
  639. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
  640. moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -444
  641. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  642. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
  643. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
  644. moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
  645. moai_adk/templates/.moai/memory/config-schema.md +0 -444
  646. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  647. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  648. moai_adk/templates/.moai/project/product.md +0 -161
  649. moai_adk/templates/.moai/project/structure.md +0 -156
  650. moai_adk/templates/.moai/project/tech.md +0 -227
  651. moai_adk/templates/__init__.py +0 -2
  652. moai_adk-0.8.0.dist-info/METADATA +0 -1722
  653. moai_adk-0.8.0.dist-info/RECORD +0 -282
  654. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,879 @@
1
+ """
2
+ Phase-Optimized Hook Scheduler
3
+
4
+ Intelligent scheduling system for hooks based on development phases,
5
+ token budget constraints, and performance requirements.
6
+
7
+ Key Features:
8
+ - Phase-aware hook scheduling
9
+ - Token budget optimization
10
+ - Dynamic priority adjustment
11
+ - Performance-based scheduling
12
+ - Dependency resolution
13
+ - Resource management
14
+ """
15
+
16
+ import asyncio
17
+ import threading
18
+ import time
19
+ from dataclasses import dataclass, field
20
+ from datetime import datetime
21
+ from enum import Enum
22
+ from typing import Any, Dict, List, Optional, Set
23
+
24
+ from .jit_enhanced_hook_manager import (
25
+ HookEvent,
26
+ HookMetadata,
27
+ HookPriority,
28
+ JITEnhancedHookManager,
29
+ Phase,
30
+ )
31
+
32
+
33
+ class SchedulingStrategy(Enum):
34
+ """Hook scheduling strategies"""
35
+
36
+ PRIORITY_FIRST = "priority_first" # Execute highest priority hooks first
37
+ PERFORMANCE_FIRST = "performance_first" # Execute fastest hooks first
38
+ PHASE_OPTIMIZED = "phase_optimized" # Optimize for current phase
39
+ TOKEN_EFFICIENT = "token_efficient" # Minimize token usage
40
+ BALANCED = "balanced" # Balance all factors
41
+
42
+
43
+ class SchedulingDecision(Enum):
44
+ """Scheduling decisions for hooks"""
45
+
46
+ EXECUTE = "execute" # Execute hook now
47
+ DEFER = "defer" # Defer to later
48
+ SKIP = "skip" # Skip execution
49
+ PARALLEL = "parallel" # Execute in parallel group
50
+ SEQUENTIAL = "sequential" # Execute sequentially
51
+
52
+
53
+ @dataclass
54
+ class HookSchedulingContext:
55
+ """Context for hook scheduling decisions"""
56
+
57
+ event_type: HookEvent
58
+ current_phase: Phase
59
+ user_input: str
60
+ available_token_budget: int
61
+ max_execution_time_ms: float
62
+ current_time: datetime = field(default_factory=datetime.now)
63
+ system_load: float = 0.5 # 0.0 (idle) to 1.0 (busy)
64
+ recent_performance: Dict[str, float] = field(default_factory=dict) # hook_path -> avg_time_ms
65
+ active_dependencies: Set[str] = field(default_factory=set)
66
+
67
+
68
+ @dataclass
69
+ class ScheduledHook:
70
+ """Hook scheduled for execution"""
71
+
72
+ hook_path: str
73
+ metadata: HookMetadata
74
+ priority_score: float
75
+ estimated_cost: int # Token cost
76
+ estimated_time_ms: float
77
+ scheduling_decision: SchedulingDecision
78
+ execution_group: Optional[int] = None # Group ID for parallel execution
79
+ dependencies: Set[str] = field(default_factory=set)
80
+ dependents: Set[str] = field(default_factory=set)
81
+ retry_count: int = 0
82
+ max_retries: int = 2
83
+
84
+
85
+ @dataclass
86
+ class SchedulingResult:
87
+ """Result of hook scheduling"""
88
+
89
+ scheduled_hooks: List[ScheduledHook]
90
+ execution_plan: List[List[ScheduledHook]] # Groups of hooks to execute
91
+ estimated_total_time_ms: float
92
+ estimated_total_tokens: int
93
+ skipped_hooks: List[ScheduledHook]
94
+ deferred_hooks: List[ScheduledHook]
95
+ scheduling_strategy: SchedulingStrategy
96
+
97
+
98
+ @dataclass
99
+ class ExecutionGroup:
100
+ """Group of hooks to execute together"""
101
+
102
+ group_id: int
103
+ execution_type: SchedulingDecision # PARALLEL or SEQUENTIAL
104
+ hooks: List[ScheduledHook]
105
+ estimated_time_ms: float
106
+ estimated_tokens: int
107
+ max_wait_time_ms: float
108
+ dependencies: Set[str] = field(default_factory=set)
109
+
110
+
111
+ class PhaseOptimizedHookScheduler:
112
+ """
113
+ Intelligent scheduler for hooks with phase awareness and resource optimization
114
+
115
+ Provides optimal hook execution scheduling based on:
116
+ - Current development phase
117
+ - Token budget constraints
118
+ - Performance requirements
119
+ - Hook dependencies
120
+ - System load
121
+ """
122
+
123
+ def __init__(
124
+ self,
125
+ hook_manager: Optional[JITEnhancedHookManager] = None,
126
+ default_strategy: SchedulingStrategy = SchedulingStrategy.PHASE_OPTIMIZED,
127
+ max_parallel_groups: int = 3,
128
+ enable_adaptive_scheduling: bool = True,
129
+ ):
130
+ """Initialize Phase-Optimized Hook Scheduler
131
+
132
+ Args:
133
+ hook_manager: JIT-Enhanced Hook Manager instance
134
+ default_strategy: Default scheduling strategy
135
+ max_parallel_groups: Maximum parallel execution groups
136
+ enable_adaptive_scheduling: Enable adaptive strategy selection
137
+ """
138
+ self.hook_manager = hook_manager or JITEnhancedHookManager()
139
+ self.default_strategy = default_strategy
140
+ self.max_parallel_groups = max_parallel_groups
141
+ self.enable_adaptive_scheduling = enable_adaptive_scheduling
142
+
143
+ # Performance tracking
144
+ self._scheduling_history: List[Dict[str, Any]] = []
145
+ self._performance_cache: Dict[str, Dict[str, float]] = {}
146
+ self._scheduling_lock = threading.Lock()
147
+
148
+ # Phase-specific optimization parameters
149
+ self._phase_parameters = self._initialize_phase_parameters()
150
+
151
+ # Adaptive strategy selection
152
+ self._strategy_performance: Dict[SchedulingStrategy, Dict[str, float]] = {
153
+ strategy: {"success_rate": 1.0, "avg_efficiency": 0.8, "usage_count": 0} for strategy in SchedulingStrategy
154
+ }
155
+
156
+ def _initialize_phase_parameters(self) -> Dict[Phase, Dict[str, Any]]:
157
+ """Initialize phase-specific optimization parameters"""
158
+ return {
159
+ Phase.SPEC: {
160
+ "max_total_time_ms": 1000.0,
161
+ "token_budget_ratio": 0.3, # 30% of total budget
162
+ "priority_weights": {
163
+ HookPriority.CRITICAL: 1.0,
164
+ HookPriority.HIGH: 0.9,
165
+ HookPriority.NORMAL: 0.6,
166
+ HookPriority.LOW: 0.2,
167
+ },
168
+ "prefer_parallel": False, # Sequential for consistency
169
+ },
170
+ Phase.RED: {
171
+ "max_total_time_ms": 800.0,
172
+ "token_budget_ratio": 0.2, # 20% of total budget
173
+ "priority_weights": {
174
+ HookPriority.CRITICAL: 1.0,
175
+ HookPriority.HIGH: 1.0, # Testing is high priority
176
+ HookPriority.NORMAL: 0.8,
177
+ HookPriority.LOW: 0.3,
178
+ },
179
+ "prefer_parallel": True, # Parallel for faster test feedback
180
+ },
181
+ Phase.GREEN: {
182
+ "max_total_time_ms": 600.0,
183
+ "token_budget_ratio": 0.15, # 15% of total budget
184
+ "priority_weights": {
185
+ HookPriority.CRITICAL: 1.0,
186
+ HookPriority.HIGH: 0.8,
187
+ HookPriority.NORMAL: 0.7,
188
+ HookPriority.LOW: 0.4,
189
+ },
190
+ "prefer_parallel": True, # Parallel for faster implementation
191
+ },
192
+ Phase.REFACTOR: {
193
+ "max_total_time_ms": 1200.0,
194
+ "token_budget_ratio": 0.2, # 20% of total budget
195
+ "priority_weights": {
196
+ HookPriority.CRITICAL: 1.0,
197
+ HookPriority.HIGH: 0.9, # Code quality is important
198
+ HookPriority.NORMAL: 0.8,
199
+ HookPriority.LOW: 0.5,
200
+ },
201
+ "prefer_parallel": False, # Sequential for safety
202
+ },
203
+ Phase.SYNC: {
204
+ "max_total_time_ms": 1500.0,
205
+ "token_budget_ratio": 0.1, # 10% of total budget
206
+ "priority_weights": {
207
+ HookPriority.CRITICAL: 1.0,
208
+ HookPriority.HIGH: 0.7,
209
+ HookPriority.NORMAL: 0.9, # Documentation is important
210
+ HookPriority.LOW: 0.6,
211
+ },
212
+ "prefer_parallel": False, # Sequential for consistency
213
+ },
214
+ Phase.DEBUG: {
215
+ "max_total_time_ms": 500.0,
216
+ "token_budget_ratio": 0.05, # 5% of total budget
217
+ "priority_weights": {
218
+ HookPriority.CRITICAL: 1.0,
219
+ HookPriority.HIGH: 0.9, # Debug info is critical
220
+ HookPriority.NORMAL: 0.8,
221
+ HookPriority.LOW: 0.3,
222
+ },
223
+ "prefer_parallel": True, # Parallel for faster debugging
224
+ },
225
+ Phase.PLANNING: {
226
+ "max_total_time_ms": 800.0,
227
+ "token_budget_ratio": 0.25, # 25% of total budget
228
+ "priority_weights": {
229
+ HookPriority.CRITICAL: 1.0,
230
+ HookPriority.HIGH: 0.8,
231
+ HookPriority.NORMAL: 0.7,
232
+ HookPriority.LOW: 0.4,
233
+ },
234
+ "prefer_parallel": False, # Sequential for careful planning
235
+ },
236
+ }
237
+
238
+ async def schedule_hooks(
239
+ self,
240
+ event_type: HookEvent,
241
+ context: HookSchedulingContext,
242
+ strategy: Optional[SchedulingStrategy] = None,
243
+ ) -> SchedulingResult:
244
+ """Schedule hooks for execution with optimization
245
+
246
+ Args:
247
+ event_type: Hook event type
248
+ context: Scheduling context with phase and constraints
249
+ strategy: Scheduling strategy (uses default if None)
250
+
251
+ Returns:
252
+ Scheduling result with execution plan
253
+ """
254
+ start_time = time.time()
255
+
256
+ # Select optimal strategy
257
+ selected_strategy = strategy or self._select_optimal_strategy(event_type, context)
258
+
259
+ # Get available hooks for event type
260
+ available_hooks = self.hook_manager._hooks_by_event.get(event_type, [])
261
+
262
+ # Create scheduled hooks with initial analysis
263
+ scheduled_hooks = await self._create_scheduled_hooks(available_hooks, context, selected_strategy)
264
+
265
+ # Filter and prioritize hooks
266
+ filtered_hooks = self._filter_hooks_by_constraints(scheduled_hooks, context)
267
+ prioritized_hooks = self._prioritize_hooks(filtered_hooks, context, selected_strategy)
268
+
269
+ # Resolve dependencies
270
+ dependency_resolved_hooks = self._resolve_dependencies(prioritized_hooks)
271
+
272
+ # Create execution groups
273
+ execution_groups = self._create_execution_groups(dependency_resolved_hooks, context, selected_strategy)
274
+
275
+ # Optimize execution order
276
+ optimized_groups = self._optimize_execution_order(execution_groups, context)
277
+
278
+ # Calculate estimates
279
+ total_time_ms = sum(group.estimated_time_ms for group in optimized_groups)
280
+ total_tokens = sum(group.estimated_tokens for group in optimized_groups)
281
+
282
+ # Create execution plan
283
+ execution_plan = [
284
+ [hook for hook in group.hooks if hook.scheduling_decision == SchedulingDecision.EXECUTE]
285
+ for group in optimized_groups
286
+ ]
287
+
288
+ # Separate skipped and deferred hooks
289
+ executed_hooks = [hook for group in optimized_groups for hook in group.hooks]
290
+ skipped_hooks = [
291
+ hook
292
+ for hook in scheduled_hooks
293
+ if hook not in executed_hooks and hook.scheduling_decision == SchedulingDecision.SKIP
294
+ ]
295
+ deferred_hooks = [
296
+ hook
297
+ for hook in scheduled_hooks
298
+ if hook not in executed_hooks and hook.scheduling_decision == SchedulingDecision.DEFER
299
+ ]
300
+
301
+ # Create scheduling result
302
+ result = SchedulingResult(
303
+ scheduled_hooks=scheduled_hooks,
304
+ execution_plan=execution_plan,
305
+ estimated_total_time_ms=total_time_ms,
306
+ estimated_total_tokens=total_tokens,
307
+ skipped_hooks=skipped_hooks,
308
+ deferred_hooks=deferred_hooks,
309
+ scheduling_strategy=selected_strategy,
310
+ )
311
+
312
+ # Update scheduling history and performance
313
+ self._update_scheduling_history(result, time.time() - start_time)
314
+ self._update_strategy_performance(selected_strategy, result, context)
315
+
316
+ return result
317
+
318
+ def _select_optimal_strategy(self, event_type: HookEvent, context: HookSchedulingContext) -> SchedulingStrategy:
319
+ """Select optimal scheduling strategy based on context"""
320
+ if not self.enable_adaptive_scheduling:
321
+ return self.default_strategy
322
+
323
+ # Strategy selection based on phase and constraints
324
+ if context.available_token_budget < 5000:
325
+ # Low token budget - prioritize token efficiency
326
+ return SchedulingStrategy.TOKEN_EFFICIENT
327
+
328
+ elif context.max_execution_time_ms < 500:
329
+ # Tight time constraint - prioritize performance
330
+ return SchedulingStrategy.PERFORMANCE_FIRST
331
+
332
+ elif context.system_load > 0.8:
333
+ # High system load - prioritize priority
334
+ return SchedulingStrategy.PRIORITY_FIRST
335
+
336
+ elif context.current_phase == Phase.SYNC:
337
+ # Documentation phase - use phase-optimized
338
+ return SchedulingStrategy.PHASE_OPTIMIZED
339
+
340
+ else:
341
+ # Use best performing strategy from history
342
+ best_strategy = self.default_strategy
343
+ best_efficiency = 0.0
344
+
345
+ for strategy, performance in self._strategy_performance.items():
346
+ if performance["usage_count"] > 0:
347
+ efficiency = performance["success_rate"] * performance["avg_efficiency"]
348
+ if efficiency > best_efficiency:
349
+ best_efficiency = efficiency
350
+ best_strategy = strategy
351
+
352
+ return best_strategy
353
+
354
+ async def _create_scheduled_hooks(
355
+ self,
356
+ hook_paths: List[str],
357
+ context: HookSchedulingContext,
358
+ strategy: SchedulingStrategy,
359
+ ) -> List[ScheduledHook]:
360
+ """Create scheduled hooks from hook paths with analysis"""
361
+ scheduled_hooks = []
362
+
363
+ for hook_path in hook_paths:
364
+ metadata = self.hook_manager._hook_registry.get(hook_path)
365
+ if not metadata:
366
+ continue
367
+
368
+ # Calculate priority score based on strategy
369
+ priority_score = self._calculate_priority_score(metadata, context, strategy)
370
+
371
+ # Estimate execution cost
372
+ estimated_cost = self._estimate_hook_cost(metadata, context)
373
+ estimated_time = self._estimate_hook_time(metadata, context)
374
+
375
+ # Make initial scheduling decision
376
+ scheduling_decision = self._make_initial_scheduling_decision(
377
+ metadata, context, estimated_cost, estimated_time
378
+ )
379
+
380
+ scheduled_hook = ScheduledHook(
381
+ hook_path=hook_path,
382
+ metadata=metadata,
383
+ priority_score=priority_score,
384
+ estimated_cost=estimated_cost,
385
+ estimated_time_ms=estimated_time,
386
+ scheduling_decision=scheduling_decision,
387
+ dependencies=metadata.dependencies.copy(),
388
+ dependents=set(),
389
+ )
390
+
391
+ scheduled_hooks.append(scheduled_hook)
392
+
393
+ return scheduled_hooks
394
+
395
+ def _calculate_priority_score(
396
+ self,
397
+ metadata: HookMetadata,
398
+ context: HookSchedulingContext,
399
+ strategy: SchedulingStrategy,
400
+ ) -> float:
401
+ """Calculate priority score for hook based on strategy"""
402
+ base_score = 0.0
403
+
404
+ if strategy == SchedulingStrategy.PRIORITY_FIRST:
405
+ # Priority-based scoring
406
+ phase_params = self._phase_parameters.get(context.current_phase, {})
407
+ priority_weights = phase_params.get("priority_weights", {})
408
+ base_score = priority_weights.get(metadata.priority, 0.5) * 100
409
+
410
+ elif strategy == SchedulingStrategy.PERFORMANCE_FIRST:
411
+ # Performance-based scoring (faster hooks get higher priority)
412
+ base_score = max(0, 100 - metadata.estimated_execution_time_ms / 10)
413
+
414
+ elif strategy == SchedulingStrategy.PHASE_OPTIMIZED:
415
+ # Phase relevance scoring
416
+ phase_relevance = metadata.phase_relevance.get(context.current_phase, 0.5)
417
+ base_score = phase_relevance * 100
418
+
419
+ # Add priority bonus
420
+ priority_bonus = (5 - metadata.priority.value) * 10
421
+ base_score += priority_bonus
422
+
423
+ elif strategy == SchedulingStrategy.TOKEN_EFFICIENT:
424
+ # Token efficiency scoring (lower token cost gets higher priority)
425
+ base_score = max(0, 100 - metadata.token_cost_estimate / 10)
426
+
427
+ else: # BALANCED
428
+ # Combine all factors
429
+ priority_score = (5 - metadata.priority.value) * 20
430
+ phase_score = metadata.phase_relevance.get(context.current_phase, 0.5) * 30
431
+ performance_score = max(0, 30 - metadata.estimated_execution_time_ms / 20)
432
+ token_score = max(0, 20 - metadata.token_cost_estimate / 50)
433
+
434
+ base_score = priority_score + phase_score + performance_score + token_score
435
+
436
+ # Apply success rate modifier
437
+ base_score *= metadata.success_rate
438
+
439
+ return base_score
440
+
441
+ def _estimate_hook_cost(self, metadata: HookMetadata, context: HookSchedulingContext) -> int:
442
+ """Estimate token cost for hook execution"""
443
+ base_cost = metadata.token_cost_estimate
444
+
445
+ # Phase-based cost adjustment
446
+ phase_relevance = metadata.phase_relevance.get(context.current_phase, 0.5)
447
+ if phase_relevance < 0.3:
448
+ # Low relevance - increase cost to discourage execution
449
+ base_cost = int(base_cost * 2.0)
450
+ elif phase_relevance > 0.8:
451
+ # High relevance - reduce cost to encourage execution
452
+ base_cost = int(base_cost * 0.7)
453
+
454
+ # System load adjustment
455
+ if context.system_load > 0.8:
456
+ base_cost = int(base_cost * 1.3) # Increase cost under high load
457
+
458
+ return base_cost
459
+
460
+ def _estimate_hook_time(self, metadata: HookMetadata, context: HookSchedulingContext) -> float:
461
+ """Estimate execution time for hook"""
462
+ base_time = metadata.estimated_execution_time_ms
463
+
464
+ # System load adjustment
465
+ load_factor = 1.0 + (context.system_load * 0.5) # Up to 1.5x slower under load
466
+
467
+ # Success rate adjustment (unreliable hooks might take longer due to retries)
468
+ reliability_factor = 2.0 - metadata.success_rate # 1.0 to 2.0
469
+
470
+ return base_time * load_factor * reliability_factor
471
+
472
+ def _make_initial_scheduling_decision(
473
+ self,
474
+ metadata: HookMetadata,
475
+ context: HookSchedulingContext,
476
+ estimated_cost: int,
477
+ estimated_time: float,
478
+ ) -> SchedulingDecision:
479
+ """Make initial scheduling decision for hook"""
480
+ # Critical hooks always execute
481
+ if metadata.priority == HookPriority.CRITICAL:
482
+ return SchedulingDecision.EXECUTE
483
+
484
+ # Check constraints
485
+ if estimated_cost > context.available_token_budget:
486
+ return SchedulingDecision.SKIP
487
+
488
+ if estimated_time > context.max_execution_time_ms:
489
+ return SchedulingDecision.DEFER
490
+
491
+ # Phase relevance check
492
+ phase_relevance = metadata.phase_relevance.get(context.current_phase, 0.5)
493
+ if phase_relevance < 0.2:
494
+ return SchedulingDecision.SKIP
495
+
496
+ # Success rate check
497
+ if metadata.success_rate < 0.3:
498
+ return SchedulingDecision.DEFER
499
+
500
+ # System load check
501
+ if context.system_load > 0.9 and metadata.priority != HookPriority.HIGH:
502
+ return SchedulingDecision.DEFER
503
+
504
+ # Default to execution
505
+ return SchedulingDecision.EXECUTE
506
+
507
+ def _filter_hooks_by_constraints(
508
+ self, scheduled_hooks: List[ScheduledHook], context: HookSchedulingContext
509
+ ) -> List[ScheduledHook]:
510
+ """Filter hooks based on constraints"""
511
+ filtered_hooks = []
512
+ remaining_token_budget = context.available_token_budget
513
+ remaining_time_budget = context.max_execution_time_ms
514
+
515
+ # Sort by priority score (highest first)
516
+ sorted_hooks = sorted(scheduled_hooks, key=lambda h: h.priority_score, reverse=True)
517
+
518
+ for hook in sorted_hooks:
519
+ if hook.scheduling_decision != SchedulingDecision.EXECUTE:
520
+ filtered_hooks.append(hook)
521
+ continue
522
+
523
+ # Check if hook fits within constraints
524
+ if hook.estimated_cost <= remaining_token_budget and hook.estimated_time_ms <= remaining_time_budget:
525
+ filtered_hooks.append(hook)
526
+ remaining_token_budget -= hook.estimated_cost
527
+ remaining_time_budget -= hook.estimated_time_ms
528
+ else:
529
+ # Can't fit - mark as deferred
530
+ hook.scheduling_decision = SchedulingDecision.DEFER
531
+ filtered_hooks.append(hook)
532
+
533
+ return filtered_hooks
534
+
535
+ def _prioritize_hooks(
536
+ self,
537
+ scheduled_hooks: List[ScheduledHook],
538
+ context: HookSchedulingContext,
539
+ strategy: SchedulingStrategy,
540
+ ) -> List[ScheduledHook]:
541
+ """Prioritize hooks for execution"""
542
+ # Separate by scheduling decision
543
+ execute_hooks = [h for h in scheduled_hooks if h.scheduling_decision == SchedulingDecision.EXECUTE]
544
+ other_hooks = [h for h in scheduled_hooks if h.scheduling_decision != SchedulingDecision.EXECUTE]
545
+
546
+ # Sort execute hooks by priority (descending)
547
+ execute_hooks.sort(key=lambda h: h.priority_score, reverse=True)
548
+
549
+ # Sort other hooks by priority (ascending - least important first for skipping)
550
+ other_hooks.sort(key=lambda h: h.priority_score)
551
+
552
+ return execute_hooks + other_hooks
553
+
554
+ def _resolve_dependencies(self, hooks: List[ScheduledHook]) -> List[ScheduledHook]:
555
+ """Resolve hook dependencies and adjust execution order"""
556
+ # Build dependency graph
557
+ for hook in hooks:
558
+ for dep_path in hook.dependencies:
559
+ # Find dependent hook
560
+ for other_hook in hooks:
561
+ if other_hook.hook_path == dep_path:
562
+ other_hook.dependents.add(hook.hook_path)
563
+ break
564
+
565
+ # Topological sort considering dependencies
566
+ resolved_hooks = []
567
+ remaining_hooks = hooks.copy()
568
+
569
+ while remaining_hooks:
570
+ # Find hooks with no unresolved dependencies
571
+ ready_hooks = [
572
+ h
573
+ for h in remaining_hooks
574
+ if not any(dep in [rh.hook_path for rh in remaining_hooks] for dep in h.dependencies)
575
+ ]
576
+
577
+ if not ready_hooks:
578
+ # Circular dependency - break by priority
579
+ ready_hooks = sorted(remaining_hooks, key=lambda h: h.priority_score, reverse=True)
580
+ ready_hooks = [ready_hooks[0]]
581
+
582
+ # Add highest priority ready hook
583
+ next_hook = max(ready_hooks, key=lambda h: h.priority_score)
584
+ resolved_hooks.append(next_hook)
585
+ remaining_hooks.remove(next_hook)
586
+
587
+ return resolved_hooks
588
+
589
+ def _create_execution_groups(
590
+ self,
591
+ hooks: List[ScheduledHook],
592
+ context: HookSchedulingContext,
593
+ strategy: SchedulingStrategy,
594
+ ) -> List[ExecutionGroup]:
595
+ """Create execution groups for optimal performance"""
596
+ groups = []
597
+ current_group = None
598
+ group_id = 0
599
+
600
+ # Get phase preferences
601
+ phase_params = self._phase_parameters.get(context.current_phase, {})
602
+ prefer_parallel = phase_params.get("prefer_parallel", True)
603
+
604
+ for hook in hooks:
605
+ if hook.scheduling_decision != SchedulingDecision.EXECUTE:
606
+ continue
607
+
608
+ # Determine execution type
609
+ execution_type = (
610
+ SchedulingDecision.PARALLEL
611
+ if (prefer_parallel and hook.metadata.parallel_safe)
612
+ else SchedulingDecision.SEQUENTIAL
613
+ )
614
+
615
+ # Create new group if needed
616
+ if (
617
+ current_group is None
618
+ or current_group.execution_type != execution_type
619
+ or len(current_group.hooks) >= self.max_parallel_groups
620
+ ):
621
+ current_group = ExecutionGroup(
622
+ group_id=group_id,
623
+ execution_type=execution_type,
624
+ hooks=[],
625
+ estimated_time_ms=0.0,
626
+ estimated_tokens=0,
627
+ max_wait_time_ms=0.0,
628
+ dependencies=set(),
629
+ )
630
+ groups.append(current_group)
631
+ group_id += 1
632
+
633
+ # Add hook to current group
634
+ current_group.hooks.append(hook)
635
+ current_group.estimated_time_ms += hook.estimated_time_ms
636
+ current_group.estimated_tokens += hook.estimated_cost
637
+ current_group.dependencies.update(hook.dependencies)
638
+
639
+ # Set max wait time for parallel groups
640
+ for group in groups:
641
+ if group.execution_type == SchedulingDecision.PARALLEL:
642
+ # For parallel groups, wait time is determined by slowest hook
643
+ group.max_wait_time_ms = max(h.estimated_time_ms for h in group.hooks)
644
+ else:
645
+ # For sequential groups, sum all hook times
646
+ group.max_wait_time_ms = group.estimated_time_ms
647
+
648
+ return groups
649
+
650
+ def _optimize_execution_order(
651
+ self, groups: List[ExecutionGroup], context: HookSchedulingContext
652
+ ) -> List[ExecutionGroup]:
653
+ """Optimize execution order of groups"""
654
+ if len(groups) <= 1:
655
+ return groups
656
+
657
+ # Sort groups by priority and execution type
658
+ def group_score(group: ExecutionGroup) -> float:
659
+ # Calculate average priority of hooks in group
660
+ avg_priority = sum(h.priority_score for h in group.hooks) / len(group.hooks)
661
+
662
+ # Parallel groups get bonus for speed
663
+ parallel_bonus = 10 if group.execution_type == SchedulingDecision.PARALLEL else 0
664
+
665
+ # Smaller groups get bonus for better time management
666
+ size_bonus = max(0, 5 - len(group.hooks))
667
+
668
+ return avg_priority + parallel_bonus + size_bonus
669
+
670
+ # Sort by score (descending)
671
+ optimized_groups = sorted(groups, key=group_score, reverse=True)
672
+
673
+ return optimized_groups
674
+
675
+ def _update_scheduling_history(self, result: SchedulingResult, planning_time_ms: float) -> None:
676
+ """Update scheduling history for learning"""
677
+ with self._scheduling_lock:
678
+ history_entry: Dict[str, Any] = {
679
+ "timestamp": datetime.now().isoformat(),
680
+ "strategy": result.scheduling_strategy.value,
681
+ "planning_time_ms": planning_time_ms,
682
+ "total_hooks": len(result.scheduled_hooks),
683
+ "executed_hooks": sum(len(group) for group in result.execution_plan),
684
+ "skipped_hooks": len(result.skipped_hooks),
685
+ "deferred_hooks": len(result.deferred_hooks),
686
+ "estimated_time_ms": result.estimated_total_time_ms,
687
+ "estimated_tokens": result.estimated_total_tokens,
688
+ }
689
+
690
+ self._scheduling_history.append(history_entry)
691
+
692
+ # Keep history manageable
693
+ if len(self._scheduling_history) > 1000:
694
+ self._scheduling_history = self._scheduling_history[-500:]
695
+
696
+ def _update_strategy_performance(
697
+ self,
698
+ strategy: SchedulingStrategy,
699
+ result: SchedulingResult,
700
+ context: HookSchedulingContext,
701
+ ) -> None:
702
+ """Update strategy performance metrics"""
703
+ performance = self._strategy_performance[strategy]
704
+
705
+ # Update usage count
706
+ performance["usage_count"] += 1
707
+
708
+ # Calculate efficiency (higher is better)
709
+ total_hooks = len(result.scheduled_hooks)
710
+ executed_hooks = sum(len(group) for group in result.execution_plan)
711
+
712
+ if total_hooks > 0:
713
+ execution_ratio = executed_hooks / total_hooks
714
+
715
+ # Consider resource utilization
716
+ time_efficiency = min(1.0, result.estimated_total_time_ms / context.max_execution_time_ms)
717
+ token_efficiency = min(
718
+ 1.0,
719
+ result.estimated_total_tokens / max(1, context.available_token_budget),
720
+ )
721
+
722
+ # Overall efficiency
723
+ overall_efficiency = (execution_ratio * 0.5) + (time_efficiency * 0.3) + (token_efficiency * 0.2)
724
+
725
+ # Update rolling average
726
+ current_avg = performance["avg_efficiency"]
727
+ performance["avg_efficiency"] = (current_avg * 0.8) + (overall_efficiency * 0.2)
728
+
729
+ # Update success rate (assume successful if no critical errors)
730
+ # This would be updated with actual execution results
731
+ performance["success_rate"] = min(1.0, performance["success_rate"] * 0.95 + 0.05)
732
+
733
+ def get_scheduling_statistics(self) -> Dict[str, Any]:
734
+ """Get scheduling statistics and performance data"""
735
+ with self._scheduling_lock:
736
+ total_schedules = len(self._scheduling_history)
737
+
738
+ if total_schedules == 0:
739
+ return {
740
+ "total_schedules": 0,
741
+ "strategy_performance": {},
742
+ "recent_performance": [],
743
+ }
744
+
745
+ # Calculate strategy statistics
746
+ strategy_stats = {}
747
+ for strategy, performance in self._strategy_performance.items():
748
+ if performance["usage_count"] > 0:
749
+ strategy_stats[strategy.value] = {
750
+ "usage_count": performance["usage_count"],
751
+ "success_rate": performance["success_rate"],
752
+ "avg_efficiency": performance["avg_efficiency"],
753
+ "recommendation_score": performance["success_rate"] * performance["avg_efficiency"],
754
+ }
755
+
756
+ # Get recent performance
757
+ recent_performance = self._scheduling_history[-10:] if total_schedules >= 10 else self._scheduling_history
758
+
759
+ return {
760
+ "total_schedules": total_schedules,
761
+ "strategy_performance": strategy_stats,
762
+ "recent_performance": recent_performance,
763
+ "recommended_strategy": (
764
+ max(
765
+ strategy_stats.keys(),
766
+ key=lambda k: strategy_stats[k]["recommendation_score"],
767
+ )
768
+ if strategy_stats
769
+ else None
770
+ ),
771
+ }
772
+
773
+ def get_phase_optimization_insights(self, phase: Phase) -> Dict[str, Any]:
774
+ """Get insights for phase-specific optimization"""
775
+ phase_params = self._phase_parameters.get(phase, {})
776
+
777
+ # Analyze historical performance for this phase
778
+ phase_schedules = [
779
+ s
780
+ for s in self._scheduling_history
781
+ if any(phase.value.lower() in s.get("context", "").lower() for phase in [phase])
782
+ ]
783
+
784
+ insights: Dict[str, Any] = {
785
+ "phase": phase.value,
786
+ "parameters": phase_params,
787
+ "historical_schedules": len(phase_schedules),
788
+ "optimization_recommendations": [],
789
+ }
790
+
791
+ # Generate recommendations based on phase parameters
792
+ if phase_params.get("prefer_parallel", False):
793
+ recs_list = insights["optimization_recommendations"]
794
+ if isinstance(recs_list, list):
795
+ recs_list.append("This phase benefits from parallel hook execution")
796
+ else:
797
+ recs_list = insights["optimization_recommendations"]
798
+ if isinstance(recs_list, list):
799
+ recs_list.append("This phase prefers sequential hook execution for consistency")
800
+
801
+ if phase_params.get("token_budget_ratio", 0) > 0.2:
802
+ recs_list = insights["optimization_recommendations"]
803
+ if isinstance(recs_list, list):
804
+ recs_list.append("This phase requires significant token budget - consider token-efficient scheduling")
805
+
806
+ # Add strategy recommendations
807
+ strategy_stats = self.get_scheduling_statistics()["strategy_performance"]
808
+ best_strategy = (
809
+ max(strategy_stats.items(), key=lambda x: x[1]["recommendation_score"]) if strategy_stats else None
810
+ )
811
+
812
+ if best_strategy:
813
+ insights["recommended_strategy"] = best_strategy[0]
814
+ score = best_strategy[1]["recommendation_score"]
815
+ insights["strategy_rationale"] = f"Best performance with {best_strategy[0]} strategy (score: {score:.2f})"
816
+
817
+ return insights
818
+
819
+
820
+ # Convenience functions for common scheduling operations
821
+ async def schedule_session_start_hooks(
822
+ context: HookSchedulingContext, strategy: Optional[SchedulingStrategy] = None
823
+ ) -> SchedulingResult:
824
+ """Schedule SessionStart hooks with phase optimization"""
825
+ scheduler = PhaseOptimizedHookScheduler()
826
+ return await scheduler.schedule_hooks(HookEvent.SESSION_START, context, strategy)
827
+
828
+
829
+ async def schedule_pre_tool_hooks(
830
+ context: HookSchedulingContext, strategy: Optional[SchedulingStrategy] = None
831
+ ) -> SchedulingResult:
832
+ """Schedule PreToolUse hooks with phase optimization"""
833
+ scheduler = PhaseOptimizedHookScheduler()
834
+ return await scheduler.schedule_hooks(HookEvent.PRE_TOOL_USE, context, strategy)
835
+
836
+
837
+ def get_hook_scheduling_insights(phase: Phase) -> Dict[str, Any]:
838
+ """Get phase-specific hook scheduling insights"""
839
+ scheduler = PhaseOptimizedHookScheduler()
840
+ return scheduler.get_phase_optimization_insights(phase)
841
+
842
+
843
+ if __name__ == "__main__":
844
+ # Example usage and testing
845
+ async def test_phase_optimized_scheduler():
846
+ scheduler = PhaseOptimizedHookScheduler()
847
+
848
+ # Create test context
849
+ context = HookSchedulingContext(
850
+ event_type=HookEvent.SESSION_START,
851
+ current_phase=Phase.SPEC,
852
+ user_input="Creating new specification for user authentication",
853
+ available_token_budget=10000,
854
+ max_execution_time_ms=1000.0,
855
+ )
856
+
857
+ # Schedule hooks
858
+ result = await scheduler.schedule_hooks(HookEvent.SESSION_START, context)
859
+
860
+ print(f"Scheduled {len(result.execution_plan)} execution groups")
861
+ print(f"Estimated time: {result.estimated_total_time_ms:.1f}ms")
862
+ print(f"Estimated tokens: {result.estimated_total_tokens}")
863
+ print(f"Strategy: {result.scheduling_strategy.value}")
864
+
865
+ # Show insights
866
+ insights = scheduler.get_phase_optimization_insights(Phase.SPEC)
867
+ print("\nPhase insights for SPEC:")
868
+ for rec in insights.get("optimization_recommendations", []):
869
+ print(f" - {rec}")
870
+
871
+ # Show statistics
872
+ stats = scheduler.get_scheduling_statistics()
873
+ print("\nScheduling statistics:")
874
+ print(f" Total schedules: {stats['total_schedules']}")
875
+ if stats.get("recommended_strategy"):
876
+ print(f" Recommended strategy: {stats['recommended_strategy']}")
877
+
878
+ # Run test
879
+ asyncio.run(test_phase_optimized_scheduler())