moai-adk 0.15.1__py3-none-any.whl → 0.32.8__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 (699) 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 +105 -47
  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 +1734 -65
  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 +672 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +490 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +128 -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 +147 -16
  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 +20 -28
  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 +485 -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 +17 -39
  84. moai_adk/core/project/initializer.py +170 -33
  85. moai_adk/core/project/phase_executor.py +398 -68
  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 +90 -48
  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 +373 -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 +264 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +383 -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 +549 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  147. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  148. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  149. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  150. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  151. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  152. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  153. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  154. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  155. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  156. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  157. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  158. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  162. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  163. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  164. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  165. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  166. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  167. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  168. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  169. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  170. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/checkpoint.py +9 -36
  171. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  172. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  173. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  179. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/project.py +63 -44
  180. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  181. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/timeout.py +40 -16
  182. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  183. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  184. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  185. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  186. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  187. moai_adk/templates/.claude/settings.json +78 -50
  188. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  189. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  190. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  191. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  194. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +312 -283
  195. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +291 -94
  196. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  197. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  198. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  199. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +469 -101
  201. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  202. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  203. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  209. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  210. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  253. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  254. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  255. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  256. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  257. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  258. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  259. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  260. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  261. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  262. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  263. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  264. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  265. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  266. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  267. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  268. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  269. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  270. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  271. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  272. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  273. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  274. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  275. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  276. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  277. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  278. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  279. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  280. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  281. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  282. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  283. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  284. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  285. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  286. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  287. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  288. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  289. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  290. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  291. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  323. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  324. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  325. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  326. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  327. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  328. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  329. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  330. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  331. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  332. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  333. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  334. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  335. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  336. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  337. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  338. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  339. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  340. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  341. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  342. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  343. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  344. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  345. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  346. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  347. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  348. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  349. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  350. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  351. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  352. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  353. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  354. moai_adk/templates/.git-hooks/pre-commit +128 -0
  355. moai_adk/templates/.git-hooks/pre-push +220 -13
  356. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  357. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  358. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  359. moai_adk/templates/.gitignore +197 -13
  360. moai_adk/templates/.mcp.json +20 -0
  361. moai_adk/templates/.moai/cache/personalization.json +10 -0
  362. moai_adk/templates/.moai/config/config.yaml +344 -0
  363. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  364. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  365. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  366. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  367. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  368. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  369. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  370. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  371. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  372. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  373. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  374. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  375. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  376. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  377. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  378. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  379. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  380. moai_adk/templates/CLAUDE.md +310 -1050
  381. moai_adk/utils/__init__.py +24 -2
  382. moai_adk/utils/banner.py +7 -11
  383. moai_adk/utils/common.py +294 -0
  384. moai_adk/utils/link_validator.py +241 -0
  385. moai_adk/utils/logger.py +4 -9
  386. moai_adk/utils/safe_file_reader.py +206 -0
  387. moai_adk/{templates/.claude/hooks/alfred/utils → utils}/timeout.py +8 -9
  388. moai_adk/utils/toon_utils.py +256 -0
  389. moai_adk/version.py +22 -0
  390. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  391. moai_adk-0.32.8.dist-info/RECORD +396 -0
  392. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  393. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  394. moai_adk/cli/commands/backup.py +0 -80
  395. moai_adk/core/tags/__init__.py +0 -86
  396. moai_adk/core/tags/ci_validator.py +0 -463
  397. moai_adk/core/tags/cli.py +0 -283
  398. moai_adk/core/tags/generator.py +0 -109
  399. moai_adk/core/tags/inserter.py +0 -99
  400. moai_adk/core/tags/mapper.py +0 -126
  401. moai_adk/core/tags/parser.py +0 -76
  402. moai_adk/core/tags/pre_commit_validator.py +0 -393
  403. moai_adk/core/tags/reporter.py +0 -956
  404. moai_adk/core/tags/tags.py +0 -149
  405. moai_adk/core/tags/validator.py +0 -897
  406. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  407. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  408. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  409. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  410. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  411. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  412. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  413. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  414. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  415. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  416. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  417. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
  418. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  419. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  420. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  421. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  422. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
  423. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
  424. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
  425. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
  426. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  427. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  428. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  429. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  430. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  431. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  432. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  433. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  434. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  435. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  436. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  437. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  438. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  439. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  440. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  441. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  442. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  443. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  444. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  445. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  446. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  447. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  448. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  449. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  450. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  451. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  452. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  453. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  454. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  455. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  456. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  457. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  458. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  459. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  460. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  461. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  462. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  463. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  464. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  465. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  466. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  467. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  468. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  469. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  470. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  471. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  472. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  473. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  474. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  475. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  476. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  477. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  478. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  479. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  480. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  481. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  482. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  483. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  484. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  485. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  486. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  487. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  488. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  489. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  490. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  491. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  492. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  493. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  494. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  495. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  496. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  497. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  498. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  499. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  500. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  501. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  502. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  503. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  510. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  511. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  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-alfred-workflow/SKILL.md +0 -288
  516. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  517. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  519. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  520. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  521. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  525. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  527. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  528. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  529. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  530. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  531. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  532. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  533. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  534. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  535. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  536. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  537. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  538. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  539. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  540. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  541. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  542. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  543. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  544. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  545. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  546. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  547. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  548. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  549. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  550. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  551. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  552. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  553. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  554. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  555. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  556. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  557. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  558. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  559. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  560. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  561. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  562. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  563. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  564. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  565. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  566. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  567. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  569. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  570. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  572. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  573. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  574. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  575. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  576. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  577. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  578. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  579. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  580. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  581. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  582. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  583. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  584. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  585. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  586. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  587. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  588. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  589. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  590. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  591. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  592. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  593. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  594. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  595. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  596. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  597. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  598. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  599. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  601. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  602. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  603. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  604. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  605. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  606. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  607. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  608. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  609. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  610. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  611. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  612. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  613. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  614. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  615. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  616. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  617. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  618. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  619. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  620. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  621. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  622. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  623. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  624. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  625. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  626. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  627. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  628. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  629. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  630. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  631. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  632. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  633. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  634. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  635. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  636. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  637. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  638. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  639. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  640. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  641. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  642. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  643. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  644. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  645. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  646. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  647. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  648. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  649. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  650. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  651. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  652. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  653. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  654. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  655. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  656. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  657. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  658. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  659. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  660. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  661. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  662. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  663. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  664. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  665. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  666. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  667. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  668. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  669. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  670. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  671. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  672. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  673. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  674. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  675. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  676. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  677. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  678. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  679. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -419
  680. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  681. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  682. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  683. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  684. moai_adk/templates/.github/workflows/release.yml +0 -118
  685. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  686. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  687. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  688. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  689. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  690. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  691. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  692. moai_adk/templates/.moai/config.json +0 -115
  693. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  694. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  695. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  696. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  697. moai_adk-0.15.1.dist-info/METADATA +0 -3094
  698. moai_adk-0.15.1.dist-info/RECORD +0 -365
  699. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,1162 @@
1
+ """
2
+ Enterprise MLOps Architecture Module
3
+
4
+ This module provides production-grade MLOps patterns including:
5
+ - ML pipeline orchestration (MLflow, Kubeflow, Airflow)
6
+ - Model version management and lineage tracking
7
+ - Data pipeline construction and validation
8
+ - Model deployment planning (Ray Serve, KServe)
9
+ - Drift detection and monitoring
10
+ - Performance optimization strategies
11
+ - MLOps metrics collection
12
+
13
+ Usage:
14
+ from moai_adk.foundation.ml_ops import (
15
+ MLPipelineOrchestrator,
16
+ ModelVersionManager,
17
+ DataPipelineBuilder,
18
+ ModelDeploymentPlanner,
19
+ DriftDetectionMonitor,
20
+ PerformanceOptimizer,
21
+ MLOpsMetricsCollector,
22
+ )
23
+
24
+ # Orchestrate ML pipeline
25
+ orchestrator = MLPipelineOrchestrator()
26
+ config = orchestrator.orchestrate_mlflow_pipeline(
27
+ experiment_name="fraud_detection",
28
+ run_name="exp_001",
29
+ tracking_uri="http://mlflow:5000"
30
+ )
31
+
32
+ # Register model version
33
+ version_manager = ModelVersionManager()
34
+ version = version_manager.register_model_version(
35
+ model_name="fraud_classifier",
36
+ version="v2.1.0",
37
+ registry_uri="s3://models/registry"
38
+ )
39
+
40
+ Enterprise Patterns:
41
+ - Pipeline-as-Code: Declarative pipeline definitions
42
+ - Model Registry: Centralized version management
43
+ - Feature Store: Reusable feature engineering
44
+ - A/B Testing: Deployment strategies
45
+ - Monitoring: Drift detection and alerting
46
+ """
47
+
48
+ import hashlib
49
+ import uuid
50
+ from datetime import UTC, datetime
51
+ from typing import Any, Dict, List, Optional
52
+
53
+
54
+ class MLPipelineOrchestrator:
55
+ """
56
+ ML pipeline orchestration for multiple platforms.
57
+
58
+ Supports:
59
+ - MLflow: Experiment tracking and model registry
60
+ - Kubeflow: Kubernetes-native ML workflows
61
+ - Airflow: DAG-based pipeline scheduling
62
+
63
+ Example:
64
+ orchestrator = MLPipelineOrchestrator()
65
+ mlflow_config = orchestrator.orchestrate_mlflow_pipeline(
66
+ experiment_name="recommendation",
67
+ run_name="baseline_v1",
68
+ tracking_uri="http://localhost:5000"
69
+ )
70
+ """
71
+
72
+ def __init__(self) -> None:
73
+ """Initialize MLPipelineOrchestrator."""
74
+ self.supported_platforms = ["mlflow", "kubeflow", "airflow"]
75
+ self.execution_history: List[Dict[str, Any]] = []
76
+
77
+ def orchestrate_mlflow_pipeline(
78
+ self,
79
+ experiment_name: str,
80
+ run_name: str,
81
+ tracking_uri: str,
82
+ tags: Optional[Dict[str, str]] = None,
83
+ ) -> Dict[str, Any]:
84
+ """
85
+ Generate MLflow pipeline configuration.
86
+
87
+ Args:
88
+ experiment_name: Name of MLflow experiment
89
+ run_name: Unique run identifier
90
+ tracking_uri: MLflow tracking server URI
91
+ tags: Optional metadata tags
92
+
93
+ Returns:
94
+ MLflow configuration dict with experiment and run settings
95
+ """
96
+ config = {
97
+ "type": "mlflow",
98
+ "experiment_name": experiment_name,
99
+ "run_name": run_name,
100
+ "tracking_uri": tracking_uri,
101
+ "parameters": {
102
+ "log_params": True,
103
+ "log_metrics": True,
104
+ "log_artifacts": True,
105
+ "auto_log": False,
106
+ },
107
+ "metrics": {
108
+ "accuracy": None,
109
+ "precision": None,
110
+ "recall": None,
111
+ "f1_score": None,
112
+ },
113
+ "artifacts": {
114
+ "model_path": f"/tmp/models/{experiment_name}",
115
+ "logs_path": f"/tmp/logs/{run_name}",
116
+ },
117
+ "tags": tags or {"framework": "pytorch", "environment": "dev"},
118
+ "created_at": datetime.now(UTC).isoformat(),
119
+ }
120
+ return config
121
+
122
+ def orchestrate_kubeflow_pipeline(
123
+ self,
124
+ pipeline_name: str,
125
+ namespace: str,
126
+ components: List[str],
127
+ parameters: Optional[Dict[str, Any]] = None,
128
+ ) -> Dict[str, Any]:
129
+ """
130
+ Generate Kubeflow pipeline specification.
131
+
132
+ Args:
133
+ pipeline_name: Name of Kubeflow pipeline
134
+ namespace: Kubernetes namespace
135
+ components: List of pipeline component names
136
+ parameters: Optional pipeline parameters
137
+
138
+ Returns:
139
+ Kubeflow pipeline specification dict
140
+ """
141
+ spec = {
142
+ "type": "kubeflow",
143
+ "pipeline_name": pipeline_name,
144
+ "namespace": namespace,
145
+ "components": components,
146
+ "parameters": parameters or {"batch_size": 32, "epochs": 10},
147
+ "resources": {
148
+ "cpu": "2",
149
+ "memory": "4Gi",
150
+ "gpu": "1",
151
+ },
152
+ "volumes": [
153
+ {"name": "data", "path": "/mnt/data"},
154
+ {"name": "models", "path": "/mnt/models"},
155
+ ],
156
+ "created_at": datetime.now(UTC).isoformat(),
157
+ }
158
+ return spec
159
+
160
+ def orchestrate_airflow_dags(
161
+ self,
162
+ dag_id: str,
163
+ schedule_interval: str,
164
+ tasks: List[str],
165
+ dependencies: Optional[Dict[str, List[str]]] = None,
166
+ ) -> Dict[str, Any]:
167
+ """
168
+ Generate Airflow DAG configuration.
169
+
170
+ Args:
171
+ dag_id: Unique DAG identifier
172
+ schedule_interval: Cron expression for scheduling
173
+ tasks: List of task names
174
+ dependencies: Task dependency mapping
175
+
176
+ Returns:
177
+ Airflow DAG configuration dict
178
+ """
179
+ # Auto-generate linear dependencies if not provided
180
+ if dependencies is None:
181
+ dependencies = {}
182
+ for i in range(len(tasks) - 1):
183
+ dependencies[tasks[i]] = [tasks[i + 1]]
184
+
185
+ dag_config = {
186
+ "type": "airflow",
187
+ "dag_id": dag_id,
188
+ "schedule_interval": schedule_interval,
189
+ "tasks": tasks,
190
+ "dependencies": dependencies,
191
+ "default_args": {
192
+ "owner": "mlops_team",
193
+ "retries": 3,
194
+ "retry_delay": "5m",
195
+ },
196
+ "catchup": False,
197
+ "max_active_runs": 1,
198
+ "created_at": datetime.now(UTC).isoformat(),
199
+ }
200
+ return dag_config
201
+
202
+ def track_pipeline_execution(
203
+ self,
204
+ pipeline_id: str,
205
+ status: str,
206
+ start_time: str,
207
+ end_time: Optional[str] = None,
208
+ ) -> Dict[str, Any]:
209
+ """
210
+ Track pipeline execution metrics.
211
+
212
+ Args:
213
+ pipeline_id: Unique pipeline identifier
214
+ status: Execution status (running, completed, failed)
215
+ start_time: ISO 8601 start timestamp
216
+ end_time: Optional ISO 8601 end timestamp
217
+
218
+ Returns:
219
+ Execution metrics dict
220
+ """
221
+ metrics = {
222
+ "pipeline_id": pipeline_id,
223
+ "status": status,
224
+ "start_time": start_time,
225
+ "end_time": end_time or datetime.now(UTC).isoformat(),
226
+ "execution_metrics": {
227
+ "tasks_completed": 0,
228
+ "tasks_failed": 0,
229
+ "tasks_pending": 0,
230
+ },
231
+ "resource_usage": {
232
+ "cpu_hours": 0.0,
233
+ "memory_gb_hours": 0.0,
234
+ "gpu_hours": 0.0,
235
+ },
236
+ }
237
+
238
+ self.execution_history.append(metrics)
239
+ return metrics
240
+
241
+
242
+ class ModelVersionManager:
243
+ """
244
+ Model version management and lineage tracking.
245
+
246
+ Provides:
247
+ - Model registry integration
248
+ - Version control and tagging
249
+ - Lineage tracking from data to deployment
250
+ - Artifact management
251
+
252
+ Example:
253
+ manager = ModelVersionManager()
254
+ version = manager.register_model_version(
255
+ model_name="sentiment_model",
256
+ version="v1.0.0",
257
+ registry_uri="s3://models/registry",
258
+ metadata={"framework": "tensorflow", "accuracy": 0.94}
259
+ )
260
+ """
261
+
262
+ def __init__(self) -> None:
263
+ """Initialize ModelVersionManager."""
264
+ self.registry: Dict[str, Dict[str, Any]] = {}
265
+ self.lineage_graph: Dict[str, Dict[str, Any]] = {}
266
+
267
+ def register_model_version(
268
+ self,
269
+ model_name: str,
270
+ version: str,
271
+ registry_uri: str,
272
+ metadata: Optional[Dict[str, Any]] = None,
273
+ ) -> Dict[str, Any]:
274
+ """
275
+ Register model version in registry.
276
+
277
+ Args:
278
+ model_name: Model identifier
279
+ version: Semantic version (e.g., v1.2.0)
280
+ registry_uri: Storage URI for model artifacts
281
+ metadata: Optional model metadata
282
+
283
+ Returns:
284
+ Registration result with version_id and timestamps
285
+ """
286
+ version_id = str(uuid.uuid4())
287
+ created_at = datetime.now(UTC).isoformat()
288
+
289
+ result = {
290
+ "model_name": model_name,
291
+ "version": version,
292
+ "version_id": version_id,
293
+ "registry_uri": registry_uri,
294
+ "created_at": created_at,
295
+ "metadata": metadata or {},
296
+ "stage": "staging", # staging, production, archived
297
+ "tags": [],
298
+ }
299
+
300
+ # Store in registry
301
+ if model_name not in self.registry:
302
+ self.registry[model_name] = {}
303
+ self.registry[model_name][version] = result
304
+
305
+ return result
306
+
307
+ def track_model_lineage(
308
+ self,
309
+ model_id: str,
310
+ include_data_sources: bool = True,
311
+ include_training_runs: bool = True,
312
+ ) -> Dict[str, Any]:
313
+ """
314
+ Track model lineage from data to deployment.
315
+
316
+ Args:
317
+ model_id: Model identifier
318
+ include_data_sources: Include data lineage
319
+ include_training_runs: Include training history
320
+
321
+ Returns:
322
+ Lineage graph with data sources, training runs, and deployments
323
+ """
324
+ lineage: Dict[str, Any] = {
325
+ "model_id": model_id,
326
+ "data_sources": [] if include_data_sources else None,
327
+ "training_runs": [] if include_training_runs else None,
328
+ "parent_models": [],
329
+ "deployment_history": [],
330
+ "lineage_graph": {
331
+ "nodes": [
332
+ {"id": "data", "type": "dataset"},
333
+ {"id": model_id, "type": "model"},
334
+ {"id": "deployment", "type": "endpoint"},
335
+ ],
336
+ "edges": [
337
+ {"from": "data", "to": model_id},
338
+ {"from": model_id, "to": "deployment"},
339
+ ],
340
+ },
341
+ }
342
+
343
+ if include_data_sources:
344
+ lineage["data_sources"] = [
345
+ {"dataset_id": "train_001", "version": "v1", "rows": 100000},
346
+ {"dataset_id": "valid_001", "version": "v1", "rows": 20000},
347
+ ]
348
+
349
+ if include_training_runs:
350
+ lineage["training_runs"] = [
351
+ {
352
+ "run_id": "run_001",
353
+ "framework": "pytorch",
354
+ "accuracy": 0.92,
355
+ "timestamp": datetime.now(UTC).isoformat(),
356
+ }
357
+ ]
358
+
359
+ self.lineage_graph[model_id] = lineage
360
+ return lineage
361
+
362
+ def manage_model_artifacts(
363
+ self,
364
+ model_id: str,
365
+ artifact_types: List[str],
366
+ storage_backend: str = "s3",
367
+ ) -> Dict[str, Any]:
368
+ """
369
+ Manage model artifacts (weights, config, metadata).
370
+
371
+ Args:
372
+ model_id: Model identifier
373
+ artifact_types: List of artifact types (weights, config, metadata)
374
+ storage_backend: Storage backend (s3, gcs, azure)
375
+
376
+ Returns:
377
+ Artifact paths and metadata
378
+ """
379
+ artifacts: Dict[str, Any] = {
380
+ "storage_backend": storage_backend,
381
+ }
382
+
383
+ for artifact_type in artifact_types:
384
+ if artifact_type == "weights":
385
+ artifacts["weights"] = {
386
+ "path": f"{storage_backend}://models/{model_id}/weights.pkl",
387
+ "size_mb": 150.5,
388
+ "checksum": hashlib.sha256(model_id.encode()).hexdigest(),
389
+ }
390
+ elif artifact_type == "config":
391
+ artifacts["config"] = {
392
+ "path": f"{storage_backend}://models/{model_id}/config.json",
393
+ "version": "v1.0",
394
+ }
395
+ elif artifact_type == "metadata":
396
+ artifacts["metadata"] = {
397
+ "path": f"{storage_backend}://models/{model_id}/metadata.yaml",
398
+ "created_at": datetime.now(UTC).isoformat(),
399
+ }
400
+
401
+ return artifacts
402
+
403
+
404
+ class DataPipelineBuilder:
405
+ """
406
+ Data pipeline construction and validation.
407
+
408
+ Features:
409
+ - Feature engineering pipelines
410
+ - Data quality validation
411
+ - Missing value handling strategies
412
+ - Schema validation
413
+
414
+ Example:
415
+ builder = DataPipelineBuilder()
416
+ pipeline = builder.build_feature_pipeline(
417
+ features=["age", "income", "credit_score"],
418
+ transformations=["normalize", "encode_categorical"]
419
+ )
420
+ """
421
+
422
+ def __init__(self) -> None:
423
+ """Initialize DataPipelineBuilder."""
424
+ self.pipelines: Dict[str, Dict[str, Any]] = {}
425
+
426
+ def build_feature_pipeline(
427
+ self,
428
+ features: List[str],
429
+ transformations: List[str],
430
+ ) -> Dict[str, Any]:
431
+ """
432
+ Build feature engineering pipeline.
433
+
434
+ Args:
435
+ features: List of feature names
436
+ transformations: List of transformation steps
437
+
438
+ Returns:
439
+ Feature pipeline specification
440
+ """
441
+ pipeline: Dict[str, Any] = {
442
+ "features": features,
443
+ "transformations": transformations,
444
+ "pipeline_steps": [],
445
+ }
446
+
447
+ # Generate pipeline steps
448
+ for idx, transformation in enumerate(transformations):
449
+ # Create interaction features if needed
450
+ if transformation == "create_interactions":
451
+ interaction_features = [
452
+ f"{features[i]}_{features[j]}" for i in range(len(features)) for j in range(i + 1, len(features))
453
+ ]
454
+ output_features = features + interaction_features
455
+ else:
456
+ output_features = [f"{f}_transformed" for f in features]
457
+
458
+ step = {
459
+ "step_id": idx + 1,
460
+ "transformation": transformation,
461
+ "input_features": features,
462
+ "output_features": output_features,
463
+ }
464
+ pipeline["pipeline_steps"].append(step)
465
+
466
+ return pipeline
467
+
468
+ def validate_data_quality(
469
+ self,
470
+ dataset_id: str,
471
+ checks: List[str],
472
+ ) -> Dict[str, Any]:
473
+ """
474
+ Validate data quality with specified checks.
475
+
476
+ Args:
477
+ dataset_id: Dataset identifier
478
+ checks: List of validation checks
479
+
480
+ Returns:
481
+ Validation result with quality score and violations
482
+ """
483
+ validation: Dict[str, Any] = {
484
+ "dataset_id": dataset_id,
485
+ "quality_score": 0.0,
486
+ "violations": [],
487
+ "passed_checks": [],
488
+ }
489
+
490
+ # Simulate validation results
491
+ passed_count = 0
492
+ for check in checks:
493
+ if check in ["missing_values", "schema_compliance"]:
494
+ validation["passed_checks"].append(check)
495
+ passed_count += 1
496
+ elif check == "outliers":
497
+ validation["violations"].append(
498
+ {
499
+ "check": check,
500
+ "severity": "warning",
501
+ "details": "5 outliers detected in 'income' column",
502
+ }
503
+ )
504
+
505
+ validation["quality_score"] = passed_count / len(checks) if checks else 0.0
506
+ return validation
507
+
508
+ def handle_missing_values(
509
+ self,
510
+ column_name: str,
511
+ missing_ratio: float,
512
+ data_type: str,
513
+ ) -> Dict[str, Any]:
514
+ """
515
+ Determine missing value handling strategy.
516
+
517
+ Args:
518
+ column_name: Column name
519
+ missing_ratio: Ratio of missing values (0.0-1.0)
520
+ data_type: Data type (numeric, categorical, datetime)
521
+
522
+ Returns:
523
+ Imputation strategy dict
524
+ """
525
+ # Strategy selection logic
526
+ if missing_ratio > 0.5:
527
+ method = "drop"
528
+ elif data_type == "numeric":
529
+ method = "median" if missing_ratio > 0.1 else "mean"
530
+ elif data_type == "categorical":
531
+ method = "mode"
532
+ else:
533
+ method = "forward_fill"
534
+
535
+ strategy = {
536
+ "column_name": column_name,
537
+ "method": method,
538
+ "missing_ratio": missing_ratio,
539
+ "parameters": {
540
+ "fill_value": None if method != "drop" else "N/A",
541
+ "strategy": method,
542
+ },
543
+ }
544
+ return strategy
545
+
546
+ def get_data_statistics(self, dataset_id: str) -> Dict[str, Any]:
547
+ """
548
+ Get dataset statistics.
549
+
550
+ Args:
551
+ dataset_id: Dataset identifier
552
+
553
+ Returns:
554
+ Statistics dict with mean, std, missing counts
555
+ """
556
+ return {
557
+ "dataset_id": dataset_id,
558
+ "row_count": 100000,
559
+ "column_count": 25,
560
+ "missing_count": 1500,
561
+ "mean": 45.2,
562
+ "std": 12.8,
563
+ }
564
+
565
+
566
+ class ModelDeploymentPlanner:
567
+ """
568
+ Model deployment planning and containerization.
569
+
570
+ Supports:
571
+ - Ray Serve: Scalable model serving
572
+ - KServe: Kubernetes-native serving
573
+ - Docker containerization
574
+ - Inference endpoint creation
575
+
576
+ Example:
577
+ planner = ModelDeploymentPlanner()
578
+ config = planner.plan_ray_serve_deployment(
579
+ model_name="fraud_detector",
580
+ replicas=3,
581
+ route_prefix="/predict"
582
+ )
583
+ """
584
+
585
+ def __init__(self) -> None:
586
+ """Initialize ModelDeploymentPlanner."""
587
+ self.deployments: Dict[str, Dict[str, Any]] = {}
588
+
589
+ def plan_ray_serve_deployment(
590
+ self,
591
+ model_name: str,
592
+ replicas: int,
593
+ route_prefix: str,
594
+ autoscaling: bool = True,
595
+ ) -> Dict[str, Any]:
596
+ """
597
+ Plan Ray Serve deployment configuration.
598
+
599
+ Args:
600
+ model_name: Model identifier
601
+ replicas: Number of replicas
602
+ route_prefix: HTTP route prefix
603
+ autoscaling: Enable autoscaling
604
+
605
+ Returns:
606
+ Ray Serve deployment configuration
607
+ """
608
+ config = {
609
+ "type": "ray_serve",
610
+ "model_name": model_name,
611
+ "replicas": replicas,
612
+ "route_prefix": route_prefix,
613
+ "deployment_config": {
614
+ "num_replicas": replicas,
615
+ "max_concurrent_queries": 100,
616
+ "ray_actor_options": {
617
+ "num_cpus": 2,
618
+ "num_gpus": 0.5,
619
+ },
620
+ },
621
+ "autoscaling": {
622
+ "enabled": autoscaling,
623
+ "min_replicas": 1,
624
+ "max_replicas": 10,
625
+ "target_num_ongoing_requests_per_replica": 10,
626
+ },
627
+ }
628
+ self.deployments[model_name] = config
629
+ return config
630
+
631
+ def plan_kserve_deployment(
632
+ self,
633
+ model_name: str,
634
+ framework: str,
635
+ storage_uri: str,
636
+ ) -> Dict[str, Any]:
637
+ """
638
+ Plan KServe deployment specification.
639
+
640
+ Args:
641
+ model_name: Model identifier
642
+ framework: ML framework (pytorch, tensorflow, sklearn)
643
+ storage_uri: Model storage URI
644
+
645
+ Returns:
646
+ KServe InferenceService specification
647
+ """
648
+ spec = {
649
+ "type": "kserve",
650
+ "model_name": model_name,
651
+ "framework": framework,
652
+ "storage_uri": storage_uri,
653
+ "predictor": {
654
+ "model_format": framework,
655
+ "protocol": "v2",
656
+ "runtime": f"{framework}-serving",
657
+ },
658
+ "resources": {
659
+ "requests": {"cpu": "1", "memory": "2Gi"},
660
+ "limits": {"cpu": "2", "memory": "4Gi"},
661
+ },
662
+ "scaling": {
663
+ "minReplicas": 1,
664
+ "maxReplicas": 5,
665
+ },
666
+ }
667
+ return spec
668
+
669
+ def containerize_model(
670
+ self,
671
+ model_path: str,
672
+ base_image: str,
673
+ requirements: List[str],
674
+ ) -> Dict[str, Any]:
675
+ """
676
+ Containerize model with Docker.
677
+
678
+ Args:
679
+ model_path: Path to model file
680
+ base_image: Docker base image
681
+ requirements: Python package requirements
682
+
683
+ Returns:
684
+ Container build configuration
685
+ """
686
+ dockerfile_content = f"""
687
+ FROM {base_image}
688
+ WORKDIR /app
689
+ COPY requirements.txt .
690
+ RUN pip install -r requirements.txt
691
+ COPY {model_path} /app/model.pkl
692
+ CMD ["python", "serve.py"]
693
+ """
694
+
695
+ container = {
696
+ "dockerfile_path": "/tmp/Dockerfile",
697
+ "dockerfile_content": dockerfile_content.strip(),
698
+ "base_image": base_image,
699
+ "requirements": requirements,
700
+ "build_config": {
701
+ "tag": "model:latest",
702
+ "platform": "linux/amd64",
703
+ "no_cache": False,
704
+ },
705
+ }
706
+ return container
707
+
708
+ def create_inference_endpoint(
709
+ self,
710
+ model_id: str,
711
+ endpoint_name: str,
712
+ auth_enabled: bool = True,
713
+ ) -> Dict[str, Any]:
714
+ """
715
+ Create inference endpoint configuration.
716
+
717
+ Args:
718
+ model_id: Model identifier
719
+ endpoint_name: Endpoint name
720
+ auth_enabled: Enable authentication
721
+
722
+ Returns:
723
+ Endpoint configuration with URL and auth token
724
+ """
725
+ auth_token = hashlib.sha256(f"{model_id}_{endpoint_name}".encode()).hexdigest()[:32] if auth_enabled else None
726
+
727
+ endpoint = {
728
+ "endpoint_url": f"https://api.example.com/{endpoint_name}",
729
+ "endpoint_name": endpoint_name,
730
+ "model_id": model_id,
731
+ "auth_enabled": auth_enabled,
732
+ "auth_token": auth_token,
733
+ "health_check_url": f"https://api.example.com/{endpoint_name}/health",
734
+ "methods": ["POST"],
735
+ "rate_limit": {"requests_per_minute": 1000},
736
+ }
737
+ return endpoint
738
+
739
+
740
+ class DriftDetectionMonitor:
741
+ """
742
+ Model monitoring and drift detection.
743
+
744
+ Detects:
745
+ - Data drift: Input distribution changes
746
+ - Model drift: Performance degradation
747
+ - Concept drift: Target distribution changes
748
+
749
+ Example:
750
+ monitor = DriftDetectionMonitor()
751
+ result = monitor.detect_data_drift(
752
+ reference_data_id="train_2024",
753
+ current_data_id="prod_2025_01",
754
+ features=["age", "income"]
755
+ )
756
+ """
757
+
758
+ def __init__(self, threshold: float = 0.1) -> None:
759
+ """
760
+ Initialize DriftDetectionMonitor.
761
+
762
+ Args:
763
+ threshold: Drift detection threshold (0.0-1.0)
764
+ """
765
+ self.threshold = threshold
766
+ self.drift_history: List[Dict[str, Any]] = []
767
+
768
+ def detect_data_drift(
769
+ self,
770
+ reference_data_id: str,
771
+ current_data_id: str,
772
+ features: List[str],
773
+ ) -> Dict[str, Any]:
774
+ """
775
+ Detect data drift between reference and current data.
776
+
777
+ Args:
778
+ reference_data_id: Reference dataset ID
779
+ current_data_id: Current dataset ID
780
+ features: Features to monitor
781
+
782
+ Returns:
783
+ Drift detection result with score and drifted features
784
+ """
785
+ # Simulate drift detection (Kolmogorov-Smirnov test)
786
+ drift_score = 0.08 # Below threshold
787
+ drifted_features: List[str] = []
788
+
789
+ result = {
790
+ "drift_detected": drift_score > self.threshold,
791
+ "drift_score": drift_score,
792
+ "threshold": self.threshold,
793
+ "drifted_features": drifted_features,
794
+ "reference_data_id": reference_data_id,
795
+ "current_data_id": current_data_id,
796
+ "features_monitored": features,
797
+ "timestamp": datetime.now(UTC).isoformat(),
798
+ }
799
+
800
+ self.drift_history.append(result)
801
+ return result
802
+
803
+ def detect_model_drift(
804
+ self,
805
+ model_id: str,
806
+ baseline_metrics: Dict[str, float],
807
+ current_metrics: Dict[str, float],
808
+ ) -> Dict[str, Any]:
809
+ """
810
+ Detect model performance drift.
811
+
812
+ Args:
813
+ model_id: Model identifier
814
+ baseline_metrics: Baseline performance metrics
815
+ current_metrics: Current performance metrics
816
+
817
+ Returns:
818
+ Drift detection result with degradation percentage
819
+ """
820
+ degraded_metrics = []
821
+ total_degradation = 0.0
822
+
823
+ for metric_name in baseline_metrics:
824
+ baseline = baseline_metrics[metric_name]
825
+ current = current_metrics.get(metric_name, 0.0)
826
+ degradation = (baseline - current) / baseline if baseline > 0 else 0.0
827
+
828
+ if degradation > 0.05: # 5% degradation threshold
829
+ degraded_metrics.append(
830
+ {
831
+ "metric": metric_name,
832
+ "baseline": baseline,
833
+ "current": current,
834
+ "degradation": degradation,
835
+ }
836
+ )
837
+ total_degradation += degradation
838
+
839
+ result = {
840
+ "model_id": model_id,
841
+ "performance_degradation": (total_degradation / len(baseline_metrics) if baseline_metrics else 0.0),
842
+ "alert": len(degraded_metrics) > 0,
843
+ "degraded_metrics": degraded_metrics,
844
+ "timestamp": datetime.now(UTC).isoformat(),
845
+ }
846
+
847
+ return result
848
+
849
+ def detect_concept_drift(
850
+ self,
851
+ model_id: str,
852
+ prediction_window: str = "7d",
853
+ threshold: float = 0.15,
854
+ ) -> Dict[str, Any]:
855
+ """
856
+ Detect concept drift in model predictions.
857
+
858
+ Args:
859
+ model_id: Model identifier
860
+ prediction_window: Time window for analysis
861
+ threshold: Drift threshold
862
+
863
+ Returns:
864
+ Concept drift detection result
865
+ """
866
+ # Simulate concept drift detection
867
+ drift_detected = False
868
+ explanation = "No significant concept drift detected in prediction window"
869
+ confidence = 0.92
870
+
871
+ result = {
872
+ "detected": drift_detected,
873
+ "model_id": model_id,
874
+ "prediction_window": prediction_window,
875
+ "threshold": threshold,
876
+ "explanation": explanation,
877
+ "confidence": confidence,
878
+ "timestamp": datetime.now(UTC).isoformat(),
879
+ }
880
+
881
+ return result
882
+
883
+ def get_drift_metrics(self) -> Dict[str, Any]:
884
+ """
885
+ Get drift monitoring metrics.
886
+
887
+ Returns:
888
+ Metrics dict with drift scores and status
889
+ """
890
+ return {
891
+ "drift_score": 0.08,
892
+ "threshold": self.threshold,
893
+ "status": "healthy",
894
+ "total_checks": len(self.drift_history),
895
+ "drift_incidents": sum(1 for d in self.drift_history if d["drift_detected"]),
896
+ }
897
+
898
+
899
+ class PerformanceOptimizer:
900
+ """
901
+ Model performance optimization strategies.
902
+
903
+ Techniques:
904
+ - Quantization: Reduce model size
905
+ - Pruning: Remove unnecessary weights
906
+ - Distillation: Transfer knowledge to smaller model
907
+ - Inference optimization: Reduce latency
908
+
909
+ Example:
910
+ optimizer = PerformanceOptimizer()
911
+ quantized = optimizer.quantize_model(
912
+ model_path="/models/large_model.pkl",
913
+ precision="int8"
914
+ )
915
+ """
916
+
917
+ def __init__(self) -> None:
918
+ """Initialize PerformanceOptimizer."""
919
+ self.optimization_history: List[Dict[str, Any]] = []
920
+
921
+ def quantize_model(
922
+ self,
923
+ model_path: str,
924
+ precision: str = "int8",
925
+ ) -> Dict[str, Any]:
926
+ """
927
+ Quantize model to reduce size.
928
+
929
+ Args:
930
+ model_path: Path to model file
931
+ precision: Target precision (int8, int4, float16)
932
+
933
+ Returns:
934
+ Quantization result with size reduction
935
+ """
936
+ # Simulate quantization (4x reduction for int8)
937
+ original_size = 600.0 # MB
938
+ reduction_factor = {"int8": 4.0, "int4": 8.0, "float16": 2.0}.get(precision, 1.0)
939
+ quantized_size = original_size / reduction_factor
940
+
941
+ result = {
942
+ "quantized_model": f"{model_path}.quantized",
943
+ "precision": precision,
944
+ "original_size_mb": original_size,
945
+ "quantized_size_mb": quantized_size,
946
+ "size_reduction": 1.0 - (quantized_size / original_size),
947
+ "accuracy_impact": -0.01, # 1% accuracy drop
948
+ }
949
+
950
+ return result
951
+
952
+ def prune_model(
953
+ self,
954
+ model_path: str,
955
+ sparsity_target: float = 0.5,
956
+ ) -> Dict[str, Any]:
957
+ """
958
+ Prune model weights.
959
+
960
+ Args:
961
+ model_path: Path to model file
962
+ sparsity_target: Target sparsity ratio (0.0-1.0)
963
+
964
+ Returns:
965
+ Pruning result with sparsity ratio
966
+ """
967
+ result = {
968
+ "pruned_model": f"{model_path}.pruned",
969
+ "sparsity_ratio": sparsity_target,
970
+ "parameters_removed": int(10000000 * sparsity_target),
971
+ "inference_speedup": 1.5,
972
+ }
973
+
974
+ return result
975
+
976
+ def distill_model(
977
+ self,
978
+ teacher_model_path: str,
979
+ student_architecture: str,
980
+ ) -> Dict[str, Any]:
981
+ """
982
+ Distill knowledge to smaller model.
983
+
984
+ Args:
985
+ teacher_model_path: Path to teacher model
986
+ student_architecture: Student model architecture
987
+
988
+ Returns:
989
+ Distillation result with teacher and student models
990
+ """
991
+ result = {
992
+ "teacher_model": teacher_model_path,
993
+ "student_model": f"{teacher_model_path}.distilled",
994
+ "student_architecture": student_architecture,
995
+ "size_reduction": 0.9, # 10x smaller
996
+ "accuracy_retention": 0.95, # 95% of teacher accuracy
997
+ }
998
+
999
+ return result
1000
+
1001
+ def optimize_inference_latency(
1002
+ self,
1003
+ model_path: str,
1004
+ target_latency_ms: float = 100.0,
1005
+ ) -> Dict[str, Any]:
1006
+ """
1007
+ Optimize model inference latency.
1008
+
1009
+ Args:
1010
+ model_path: Path to model file
1011
+ target_latency_ms: Target latency in milliseconds
1012
+
1013
+ Returns:
1014
+ Optimization strategy dict
1015
+ """
1016
+ strategy = {
1017
+ "model_path": model_path,
1018
+ "target_latency_ms": target_latency_ms,
1019
+ "optimizations": [
1020
+ "batch_inference",
1021
+ "caching",
1022
+ "gpu_acceleration",
1023
+ "model_compilation",
1024
+ ],
1025
+ "estimated_latency_ms": target_latency_ms * 0.8,
1026
+ "throughput_improvement": 2.5,
1027
+ }
1028
+
1029
+ return strategy
1030
+
1031
+
1032
+ class MLOpsMetricsCollector:
1033
+ """
1034
+ MLOps metrics collection and monitoring.
1035
+
1036
+ Collects:
1037
+ - Training metrics: Accuracy, loss, F1 score
1038
+ - Inference metrics: Latency, throughput, error rate
1039
+ - Model performance timeline
1040
+ - Health status assessment
1041
+
1042
+ Example:
1043
+ collector = MLOpsMetricsCollector()
1044
+ metrics = collector.collect_training_metrics(
1045
+ run_id="run_001",
1046
+ epoch=10
1047
+ )
1048
+ """
1049
+
1050
+ def __init__(self) -> None:
1051
+ """Initialize MLOpsMetricsCollector."""
1052
+ self.metrics_history: List[Dict[str, Any]] = []
1053
+
1054
+ def collect_training_metrics(
1055
+ self,
1056
+ run_id: str = "run_001",
1057
+ epoch: int = 10,
1058
+ ) -> Dict[str, Any]:
1059
+ """
1060
+ Collect training metrics.
1061
+
1062
+ Args:
1063
+ run_id: Training run identifier
1064
+ epoch: Current epoch number
1065
+
1066
+ Returns:
1067
+ Training metrics dict
1068
+ """
1069
+ metrics = {
1070
+ "run_id": run_id,
1071
+ "epoch": epoch,
1072
+ "accuracy": 0.94,
1073
+ "loss": 0.12,
1074
+ "f1_score": 0.93,
1075
+ "precision": 0.92,
1076
+ "recall": 0.94,
1077
+ "auc_roc": 0.96,
1078
+ "training_time_seconds": 3600.0,
1079
+ "timestamp": datetime.now(UTC).isoformat(),
1080
+ }
1081
+
1082
+ self.metrics_history.append(metrics)
1083
+ return metrics
1084
+
1085
+ def collect_inference_metrics(
1086
+ self,
1087
+ model_id: str = "model_001",
1088
+ ) -> Dict[str, Any]:
1089
+ """
1090
+ Collect inference metrics.
1091
+
1092
+ Args:
1093
+ model_id: Model identifier
1094
+
1095
+ Returns:
1096
+ Inference metrics dict
1097
+ """
1098
+ metrics = {
1099
+ "model_id": model_id,
1100
+ "latency_p50_ms": 45.0,
1101
+ "latency_p95_ms": 85.0,
1102
+ "latency_p99_ms": 120.0,
1103
+ "throughput_qps": 500.0,
1104
+ "error_rate": 0.001,
1105
+ "success_rate": 0.999,
1106
+ "timestamp": datetime.now(UTC).isoformat(),
1107
+ }
1108
+
1109
+ return metrics
1110
+
1111
+ def track_model_performance(
1112
+ self,
1113
+ model_id: str,
1114
+ time_window: str = "7d",
1115
+ ) -> List[Dict[str, Any]]:
1116
+ """
1117
+ Track model performance over time.
1118
+
1119
+ Args:
1120
+ model_id: Model identifier
1121
+ time_window: Time window for tracking
1122
+
1123
+ Returns:
1124
+ Performance timeline list
1125
+ """
1126
+ timeline = [
1127
+ {
1128
+ "timestamp": "2025-11-17T00:00:00Z",
1129
+ "accuracy": 0.94,
1130
+ "latency_ms": 50.0,
1131
+ },
1132
+ {
1133
+ "timestamp": "2025-11-24T00:00:00Z",
1134
+ "accuracy": 0.93,
1135
+ "latency_ms": 55.0,
1136
+ },
1137
+ ]
1138
+
1139
+ return timeline
1140
+
1141
+ def get_mlops_health_status(self) -> Dict[str, Any]:
1142
+ """
1143
+ Get overall MLOps health status.
1144
+
1145
+ Returns:
1146
+ Health status dict with overall score and components
1147
+ """
1148
+ status = {
1149
+ "overall_score": 0.95,
1150
+ "status": "healthy",
1151
+ "components": {
1152
+ "data_pipeline": {"status": "healthy", "score": 0.98},
1153
+ "model_training": {"status": "healthy", "score": 0.94},
1154
+ "model_serving": {"status": "healthy", "score": 0.96},
1155
+ "monitoring": {"status": "healthy", "score": 0.93},
1156
+ },
1157
+ "alerts": [],
1158
+ "recommendations": ["Consider retraining model after 30 days"],
1159
+ "timestamp": datetime.now(UTC).isoformat(),
1160
+ }
1161
+
1162
+ return status