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,1234 @@
1
+ # Performance Optimization with Real-time Profiling
2
+
3
+ > Module: Real-time performance profiling, bottleneck detection, and optimization strategies
4
+ > Complexity: Advanced
5
+ > Time: 30+ minutes
6
+ > Dependencies: Python 3.8+, cProfile, memory_profiler, psutil, Context7 MCP, asyncio
7
+
8
+ ## Core Implementation
9
+
10
+ ### PerformanceProfiler Class
11
+
12
+ ```python
13
+ import cProfile
14
+ import pstats
15
+ import io
16
+ import time
17
+ import threading
18
+ import asyncio
19
+ from typing import Dict, List, Optional, Any, Union, Callable
20
+ from dataclasses import dataclass, field
21
+ from enum import Enum
22
+ import psutil
23
+ import memory_profiler
24
+ import line_profiler
25
+ from collections import defaultdict, deque
26
+ import json
27
+ import sys
28
+ import tracemalloc
29
+ import resource
30
+
31
+ class PerformanceMetric(Enum):
32
+ """Types of performance metrics to track."""
33
+ CPU_TIME = "cpu_time"
34
+ WALL_TIME = "wall_time"
35
+ MEMORY_USAGE = "memory_usage"
36
+ MEMORY_PEAK = "memory_peak"
37
+ FUNCTION_CALLS = "function_calls"
38
+ EXECUTION_COUNT = "execution_count"
39
+ AVERAGE_TIME = "average_time"
40
+ MAX_TIME = "max_time"
41
+ MIN_TIME = "min_time"
42
+
43
+ class OptimizationType(Enum):
44
+ """Types of performance optimizations."""
45
+ ALGORITHM_IMPROVEMENT = "algorithm_improvement"
46
+ CACHING = "caching"
47
+ CONCURRENCY = "concurrency"
48
+ MEMORY_OPTIMIZATION = "memory_optimization"
49
+ I/O_OPTIMIZATION = "io_optimization"
50
+ DATABASE_OPTIMIZATION = "database_optimization"
51
+ DATA_STRUCTURE_CHANGE = "data_structure_change"
52
+
53
+ @dataclass
54
+ class PerformanceSnapshot:
55
+ """Snapshot of performance metrics at a point in time."""
56
+ timestamp: float
57
+ cpu_percent: float
58
+ memory_mb: float
59
+ memory_percent: float
60
+ open_files: int
61
+ threads: int
62
+ context_switches: int
63
+ custom_metrics: Dict[str, float] = field(default_factory=dict)
64
+
65
+ @dataclass
66
+ class FunctionProfile:
67
+ """Detailed profile information for a function."""
68
+ name: str
69
+ file_path: str
70
+ line_number: int
71
+ total_time: float
72
+ cumulative_time: float
73
+ call_count: int
74
+ per_call_time: float
75
+ cummulative_per_call_time: float
76
+ memory_before: float
77
+ memory_after: float
78
+ memory_delta: float
79
+ optimization_suggestions: List[str] = field(default_factory=list)
80
+
81
+ @dataclass
82
+ class PerformanceBottleneck:
83
+ """Identified performance bottleneck with analysis."""
84
+ function_name: str
85
+ file_path: str
86
+ line_number: int
87
+ bottleneck_type: str # "cpu", "memory", "io", "algorithm"
88
+ severity: str # "low", "medium", "high", "critical"
89
+ impact_score: float # 0.0 to 1.0
90
+ description: str
91
+ metrics: Dict[str, float]
92
+ optimization_type: OptimizationType
93
+ suggested_fixes: List[str]
94
+ estimated_improvement: str
95
+ code_snippet: str
96
+
97
+ @dataclass
98
+ class OptimizationPlan:
99
+ """Comprehensive optimization plan with prioritized actions."""
100
+ bottlenecks: List[PerformanceBottleneck]
101
+ execution_order: List[int]
102
+ estimated_total_improvement: str
103
+ implementation_complexity: str
104
+ risk_level: str
105
+ prerequisites: List[str]
106
+ validation_strategy: str
107
+
108
+ class RealTimeMonitor:
109
+ """Real-time performance monitoring system."""
110
+
111
+ def __init__(self, sampling_interval: float = 1.0):
112
+ self.sampling_interval = sampling_interval
113
+ self.is_monitoring = False
114
+ self.monitor_thread = None
115
+ self.snapshots = deque(maxlen=1000) # Keep last 1000 snapshots
116
+ self.callbacks = []
117
+ self.alerts = []
118
+
119
+ def start_monitoring(self):
120
+ """Start real-time performance monitoring."""
121
+ if self.is_monitoring:
122
+ return
123
+
124
+ self.is_monitoring = True
125
+ self.monitor_thread = threading.Thread(target=self._monitor_loop, daemon=True)
126
+ self.monitor_thread.start()
127
+
128
+ def stop_monitoring(self):
129
+ """Stop real-time performance monitoring."""
130
+ self.is_monitoring = False
131
+ if self.monitor_thread:
132
+ self.monitor_thread.join(timeout=2.0)
133
+
134
+ def _monitor_loop(self):
135
+ """Main monitoring loop."""
136
+ process = psutil.Process()
137
+
138
+ while self.is_monitoring:
139
+ try:
140
+ # Collect system metrics
141
+ snapshot = PerformanceSnapshot(
142
+ timestamp=time.time(),
143
+ cpu_percent=process.cpu_percent(),
144
+ memory_mb=process.memory_info().rss / 1024 / 1024,
145
+ memory_percent=process.memory_percent(),
146
+ open_files=len(process.open_files()),
147
+ threads=process.num_threads(),
148
+ context_switches=process.num_ctx_switches().voluntary + process.num_ctx_switches().involuntary
149
+ )
150
+
151
+ # Check for custom metrics callbacks
152
+ for callback in self.callbacks:
153
+ try:
154
+ custom_metrics = callback()
155
+ snapshot.custom_metrics.update(custom_metrics)
156
+ except Exception as e:
157
+ print(f"Custom metric callback error: {e}")
158
+
159
+ self.snapshots.append(snapshot)
160
+
161
+ # Check for alerts
162
+ self._check_alerts(snapshot)
163
+
164
+ time.sleep(self.sampling_interval)
165
+
166
+ except Exception as e:
167
+ print(f"Monitoring error: {e}")
168
+ time.sleep(self.sampling_interval)
169
+
170
+ def add_callback(self, callback: Callable[[], Dict[str, float]]):
171
+ """Add custom metric collection callback."""
172
+ self.callbacks.append(callback)
173
+
174
+ def _check_alerts(self, snapshot: PerformanceSnapshot):
175
+ """Check for performance alerts."""
176
+ alerts = []
177
+
178
+ # CPU usage alert
179
+ if snapshot.cpu_percent > 90:
180
+ alerts.append({
181
+ 'type': 'high_cpu',
182
+ 'message': f"High CPU usage: {snapshot.cpu_percent:.1f}%",
183
+ 'timestamp': snapshot.timestamp
184
+ })
185
+
186
+ # Memory usage alert
187
+ if snapshot.memory_percent > 85:
188
+ alerts.append({
189
+ 'type': 'high_memory',
190
+ 'message': f"High memory usage: {snapshot.memory_percent:.1f}%",
191
+ 'timestamp': snapshot.timestamp
192
+ })
193
+
194
+ # File handle alert
195
+ if snapshot.open_files > 1000:
196
+ alerts.append({
197
+ 'type': 'file_handle_leak',
198
+ 'message': f"High number of open files: {snapshot.open_files}",
199
+ 'timestamp': snapshot.timestamp
200
+ })
201
+
202
+ self.alerts.extend(alerts)
203
+
204
+ def get_recent_snapshots(self, count: int = 100) -> List[PerformanceSnapshot]:
205
+ """Get recent performance snapshots."""
206
+ return list(self.snapshots)[-count:]
207
+
208
+ def get_average_metrics(self, duration_minutes: int = 5) -> Dict[str, float]:
209
+ """Get average metrics over specified duration."""
210
+ cutoff_time = time.time() - (duration_minutes * 60)
211
+ recent_snapshots = [s for s in self.snapshots if s.timestamp >= cutoff_time]
212
+
213
+ if not recent_snapshots:
214
+ return {}
215
+
216
+ return {
217
+ 'avg_cpu_percent': sum(s.cpu_percent for s in recent_snapshots) / len(recent_snapshots),
218
+ 'avg_memory_mb': sum(s.memory_mb for s in recent_snapshots) / len(recent_snapshots),
219
+ 'avg_memory_percent': sum(s.memory_percent for s in recent_snapshots) / len(recent_snapshots),
220
+ 'avg_open_files': sum(s.open_files for s in recent_snapshots) / len(recent_snapshots),
221
+ 'avg_threads': sum(s.threads for s in recent_snapshots) / len(recent_snapshots),
222
+ }
223
+
224
+ class PerformanceProfiler:
225
+ """Advanced performance profiler with bottleneck detection."""
226
+
227
+ def __init__(self, context7_client=None):
228
+ self.context7 = context7_client
229
+ self.profiler = None
230
+ self.memory_profiler = None
231
+ self.line_profiler = None
232
+ self.realtime_monitor = RealTimeMonitor()
233
+ self.profiles = {}
234
+ self.bottlenecks = []
235
+
236
+ def start_profiling(self, profile_types: List[str] = None):
237
+ """Start performance profiling with specified types."""
238
+ if profile_types is None:
239
+ profile_types = ['cpu', 'memory']
240
+
241
+ # Start CPU profiling
242
+ if 'cpu' in profile_types:
243
+ self.profiler = cProfile.Profile()
244
+ self.profiler.enable()
245
+
246
+ # Start memory profiling
247
+ if 'memory' in profile_types:
248
+ tracemalloc.start()
249
+ self.memory_profiler = memory_profiler.Profile()
250
+
251
+ # Start line profiling for specific functions
252
+ if 'line' in profile_types:
253
+ self.line_profiler = line_profiler.LineProfiler()
254
+ self.line_profiler.enable_by_count()
255
+
256
+ # Start real-time monitoring
257
+ self.realtime_monitor.start_monitoring()
258
+
259
+ def stop_profiling(self) -> Dict[str, Any]:
260
+ """Stop profiling and collect results."""
261
+ results = {}
262
+
263
+ # Stop CPU profiling
264
+ if self.profiler:
265
+ self.profiler.disable()
266
+ results['cpu_profile'] = self._analyze_cpu_profile()
267
+
268
+ # Stop memory profiling
269
+ if tracemalloc.is_tracing():
270
+ current, peak = tracemalloc.get_traced_memory()
271
+ tracemalloc.stop()
272
+ results['memory_profile'] = {
273
+ 'current_mb': current / 1024 / 1024,
274
+ 'peak_mb': peak / 1024 / 1024
275
+ }
276
+
277
+ if self.memory_profiler:
278
+ self.memory_profiler.disable()
279
+ results['memory_line_profile'] = self._analyze_memory_profile()
280
+
281
+ # Stop line profiling
282
+ if self.line_profiler:
283
+ self.line_profiler.disable()
284
+ results['line_profile'] = self._analyze_line_profile()
285
+
286
+ # Stop real-time monitoring
287
+ self.realtime_monitor.stop_monitoring()
288
+ results['realtime_metrics'] = self.realtime_monitor.get_average_metrics()
289
+
290
+ return results
291
+
292
+ def _analyze_cpu_profile(self) -> List[FunctionProfile]:
293
+ """Analyze CPU profiling results."""
294
+ if not self.profiler:
295
+ return []
296
+
297
+ # Create stats object
298
+ s = io.StringIO()
299
+ ps = pstats.Stats(self.profiler, stream=s)
300
+ ps.sort_stats('cumulative')
301
+ ps.print_stats()
302
+
303
+ # Parse the stats
304
+ function_profiles = []
305
+ lines = s.getvalue().split('\n')
306
+
307
+ # Skip header lines
308
+ for line in lines[6:]:
309
+ if line.strip() and not line.startswith('ncalls'):
310
+ try:
311
+ parts = line.split()
312
+ if len(parts) >= 6:
313
+ ncalls = parts[0]
314
+ tottime = float(parts[1])
315
+ cumtime = float(parts[3])
316
+
317
+ # Extract function name and location
318
+ filename_func = ' '.join(parts[5:])
319
+ if '{' in filename_func:
320
+ filename, line_num, func_name = self._parse_function_line(filename_func)
321
+ else:
322
+ continue
323
+
324
+ # Convert ncalls to integer (handle format like "1000/1000")
325
+ if '/' in ncalls:
326
+ ncalls = int(ncalls.split('/')[0])
327
+ else:
328
+ ncalls = int(ncalls)
329
+
330
+ profile = FunctionProfile(
331
+ name=func_name,
332
+ file_path=filename,
333
+ line_number=int(line_num),
334
+ total_time=tottime,
335
+ cumulative_time=cumtime,
336
+ call_count=ncalls,
337
+ per_call_time=tottime / max(ncalls, 1),
338
+ cummulative_per_call_time=cumtime / max(ncalls, 1),
339
+ memory_before=0.0, # Will be filled by memory profiler
340
+ memory_after=0.0,
341
+ memory_delta=0.0
342
+ )
343
+ function_profiles.append(profile)
344
+
345
+ except (ValueError, IndexError) as e:
346
+ continue
347
+
348
+ return function_profiles
349
+
350
+ def _parse_function_line(self, line: str) -> tuple:
351
+ """Parse function line from pstats output."""
352
+ # Format: "filename(line_number)function_name"
353
+ try:
354
+ paren_idx = line.rfind('(')
355
+ if paren_idx == -1:
356
+ return line, "0", "unknown"
357
+
358
+ filename = line[:paren_idx]
359
+ rest = line[paren_idx:]
360
+
361
+ closing_idx = rest.find(')')
362
+ if closing_idx == -1:
363
+ return filename, "0", "unknown"
364
+
365
+ line_num = rest[1:closing_idx]
366
+ func_name = rest[closing_idx + 1:]
367
+
368
+ return filename, line_num, func_name
369
+ except Exception:
370
+ return line, "0", "unknown"
371
+
372
+ def _analyze_memory_profile(self) -> Dict[str, Any]:
373
+ """Analyze memory profiling results."""
374
+ if not self.memory_profiler:
375
+ return {}
376
+
377
+ # Get memory profile statistics
378
+ stats = self.memory_profiler.get_stats()
379
+
380
+ return {
381
+ 'total_samples': len(stats),
382
+ 'max_memory_usage': max((stat[2] for stat in stats), default=0),
383
+ 'memory_by_function': self._group_memory_by_function(stats)
384
+ }
385
+
386
+ def _group_memory_by_function(self, stats: List) -> Dict[str, float]:
387
+ """Group memory usage by function."""
388
+ memory_by_function = defaultdict(float)
389
+
390
+ for stat in stats:
391
+ filename, line_no, mem_usage = stat
392
+ # Extract function name from filename and line
393
+ func_key = f"{filename}:{line_no}"
394
+ memory_by_function[func_key] += mem_usage
395
+
396
+ return dict(memory_by_function)
397
+
398
+ def _analyze_line_profile(self) -> Dict[str, Any]:
399
+ """Analyze line profiling results."""
400
+ if not self.line_profiler:
401
+ return {}
402
+
403
+ # Get line profiler statistics
404
+ stats = self.line_profiler.get_stats()
405
+
406
+ return {
407
+ 'timings': stats.timings,
408
+ 'unit': stats.unit
409
+ }
410
+
411
+ async def detect_bottlenecks(
412
+ self, profile_results: Dict[str, Any],
413
+ context7_patterns: Dict[str, Any] = None
414
+ ) -> List[PerformanceBottleneck]:
415
+ """Detect performance bottlenecks from profiling results."""
416
+
417
+ bottlenecks = []
418
+
419
+ # Analyze CPU bottlenecks
420
+ if 'cpu_profile' in profile_results:
421
+ cpu_bottlenecks = await self._detect_cpu_bottlenecks(
422
+ profile_results['cpu_profile'], context7_patterns
423
+ )
424
+ bottlenecks.extend(cpu_bottlenecks)
425
+
426
+ # Analyze memory bottlenecks
427
+ if 'memory_profile' in profile_results:
428
+ memory_bottlenecks = await self._detect_memory_bottlenecks(
429
+ profile_results['memory_profile'], context7_patterns
430
+ )
431
+ bottlenecks.extend(memory_bottlenecks)
432
+
433
+ # Analyze real-time metrics
434
+ if 'realtime_metrics' in profile_results:
435
+ realtime_bottlenecks = await self._detect_realtime_bottlenecks(
436
+ profile_results['realtime_metrics'], context7_patterns
437
+ )
438
+ bottlenecks.extend(realtime_bottlenecks)
439
+
440
+ # Sort by impact score
441
+ bottlenecks.sort(key=lambda x: x.impact_score, reverse=True)
442
+ return bottlenecks
443
+
444
+ async def _detect_cpu_bottlenecks(
445
+ self, cpu_profiles: List[FunctionProfile],
446
+ context7_patterns: Dict[str, Any] = None
447
+ ) -> List[PerformanceBottleneck]:
448
+ """Detect CPU-related bottlenecks."""
449
+
450
+ bottlenecks = []
451
+ total_cpu_time = sum(p.cumulative_time for p in cpu_profiles)
452
+
453
+ for profile in cpu_profiles:
454
+ # Skip functions with very low total time
455
+ if profile.cumulative_time < 0.01:
456
+ continue
457
+
458
+ # Calculate impact score
459
+ impact_score = profile.cumulative_time / max(total_cpu_time, 0.001)
460
+
461
+ # Determine severity
462
+ if impact_score > 0.5:
463
+ severity = "critical"
464
+ elif impact_score > 0.2:
465
+ severity = "high"
466
+ elif impact_score > 0.1:
467
+ severity = "medium"
468
+ else:
469
+ severity = "low"
470
+
471
+ # Get code snippet
472
+ code_snippet = self._get_code_snippet(profile.file_path, profile.line_number)
473
+
474
+ # Generate optimization suggestions
475
+ optimization_type, suggestions, estimated_improvement = await self._generate_cpu_optimization_suggestions(
476
+ profile, context7_patterns
477
+ )
478
+
479
+ bottleneck = PerformanceBottleneck(
480
+ function_name=profile.name,
481
+ file_path=profile.file_path,
482
+ line_number=profile.line_number,
483
+ bottleneck_type="cpu",
484
+ severity=severity,
485
+ impact_score=impact_score,
486
+ description=f"Function '{profile.name}' consumes {impact_score:.1%} of total CPU time",
487
+ metrics={
488
+ 'cumulative_time': profile.cumulative_time,
489
+ 'total_time': profile.total_time,
490
+ 'call_count': profile.call_count,
491
+ 'per_call_time': profile.per_call_time
492
+ },
493
+ optimization_type=optimization_type,
494
+ suggested_fixes=suggestions,
495
+ estimated_improvement=estimated_improvement,
496
+ code_snippet=code_snippet
497
+ )
498
+ bottlenecks.append(bottleneck)
499
+
500
+ return bottlenecks
501
+
502
+ async def _detect_memory_bottlenecks(
503
+ self, memory_profile: Dict[str, Any],
504
+ context7_patterns: Dict[str, Any] = None
505
+ ) -> List[PerformanceBottleneck]:
506
+ """Detect memory-related bottlenecks."""
507
+
508
+ bottlenecks = []
509
+
510
+ if 'memory_line_profile' in memory_profile:
511
+ memory_by_function = memory_profile['memory_line_profile'].get('memory_by_function', {})
512
+
513
+ if memory_by_function:
514
+ max_memory = max(memory_by_function.values())
515
+
516
+ for func_key, memory_usage in memory_by_function.items():
517
+ # Skip very small memory usage
518
+ if memory_usage < 1024 * 1024: # 1MB
519
+ continue
520
+
521
+ # Calculate impact score
522
+ impact_score = memory_usage / max(max_memory, 1)
523
+
524
+ # Determine severity
525
+ if impact_score > 0.7:
526
+ severity = "critical"
527
+ elif impact_score > 0.4:
528
+ severity = "high"
529
+ elif impact_score > 0.2:
530
+ severity = "medium"
531
+ else:
532
+ severity = "low"
533
+
534
+ # Extract file path and line number
535
+ if ':' in func_key:
536
+ file_path, line_num = func_key.split(':', 1)
537
+ line_number = int(line_num)
538
+ else:
539
+ continue
540
+
541
+ # Get code snippet
542
+ code_snippet = self._get_code_snippet(file_path, line_number)
543
+
544
+ # Generate optimization suggestions
545
+ optimization_type, suggestions, estimated_improvement = await self._generate_memory_optimization_suggestions(
546
+ memory_usage, context7_patterns
547
+ )
548
+
549
+ bottleneck = PerformanceBottleneck(
550
+ function_name=f"Function at {func_key}",
551
+ file_path=file_path,
552
+ line_number=line_number,
553
+ bottleneck_type="memory",
554
+ severity=severity,
555
+ impact_score=impact_score,
556
+ description=f"High memory usage: {memory_usage / 1024 / 1024:.1f}MB",
557
+ metrics={
558
+ 'memory_usage_mb': memory_usage / 1024 / 1024,
559
+ 'impact_score': impact_score
560
+ },
561
+ optimization_type=optimization_type,
562
+ suggested_fixes=suggestions,
563
+ estimated_improvement=estimated_improvement,
564
+ code_snippet=code_snippet
565
+ )
566
+ bottlenecks.append(bottleneck)
567
+
568
+ return bottlenecks
569
+
570
+ async def _detect_realtime_bottlenecks(
571
+ self, realtime_metrics: Dict[str, Any],
572
+ context7_patterns: Dict[str, Any] = None
573
+ ) -> List[PerformanceBottleneck]:
574
+ """Detect bottlenecks from real-time monitoring."""
575
+
576
+ bottlenecks = []
577
+
578
+ # Check CPU usage
579
+ avg_cpu = realtime_metrics.get('avg_cpu_percent', 0)
580
+ if avg_cpu > 80:
581
+ bottleneck = PerformanceBottleneck(
582
+ function_name="System CPU Usage",
583
+ file_path="system",
584
+ line_number=0,
585
+ bottleneck_type="cpu",
586
+ severity="high" if avg_cpu > 90 else "medium",
587
+ impact_score=avg_cpu / 100.0,
588
+ description=f"High average CPU usage: {avg_cpu:.1f}%",
589
+ metrics={'avg_cpu_percent': avg_cpu},
590
+ optimization_type=OptimizationType.CONCURRENCY,
591
+ suggested_fixes=[
592
+ "Implement parallel processing",
593
+ "Optimize algorithms",
594
+ "Add caching for expensive operations"
595
+ ],
596
+ estimated_improvement="20-50% reduction in CPU usage",
597
+ code_snippet="# System-wide optimization required"
598
+ )
599
+ bottlenecks.append(bottleneck)
600
+
601
+ # Check memory usage
602
+ avg_memory = realtime_metrics.get('avg_memory_percent', 0)
603
+ if avg_memory > 75:
604
+ bottleneck = PerformanceBottleneck(
605
+ function_name="System Memory Usage",
606
+ file_path="system",
607
+ line_number=0,
608
+ bottleneck_type="memory",
609
+ severity="high" if avg_memory > 85 else "medium",
610
+ impact_score=avg_memory / 100.0,
611
+ description=f"High average memory usage: {avg_memory:.1f}%",
612
+ metrics={'avg_memory_percent': avg_memory},
613
+ optimization_type=OptimizationType.MEMORY_OPTIMIZATION,
614
+ suggested_fixes=[
615
+ "Implement memory pooling",
616
+ "Use generators instead of lists",
617
+ "Optimize data structures",
618
+ "Implement object caching with size limits"
619
+ ],
620
+ estimated_improvement="30-60% reduction in memory usage",
621
+ code_snippet="# System-wide memory optimization required"
622
+ )
623
+ bottlenecks.append(bottleneck)
624
+
625
+ return bottlenecks
626
+
627
+ async def _generate_cpu_optimization_suggestions(
628
+ self, profile: FunctionProfile,
629
+ context7_patterns: Dict[str, Any] = None
630
+ ) -> tuple:
631
+ """Generate CPU optimization suggestions for a function."""
632
+
633
+ suggestions = []
634
+ optimization_type = OptimizationType.ALGORITHM_IMPROVEMENT
635
+
636
+ # Analyze function characteristics
637
+ if profile.call_count > 10000 and profile.per_call_time > 0.001:
638
+ optimization_type = OptimizationType.CACHING
639
+ suggestions.extend([
640
+ "Implement memoization for expensive function calls",
641
+ "Add LRU cache for frequently called functions",
642
+ "Consider using functools.lru_cache"
643
+ ])
644
+ estimated_improvement = "50-90% for repeated calls"
645
+
646
+ elif profile.cumulative_time > 1.0 and profile.call_count > 100:
647
+ suggestions.extend([
648
+ "Analyze algorithm complexity",
649
+ "Look for O(n²) or worse operations",
650
+ "Consider using more efficient data structures"
651
+ ])
652
+ estimated_improvement = "20-80% depending on algorithm"
653
+
654
+ elif profile.call_count < 10 and profile.cumulative_time > 0.5:
655
+ suggestions.extend([
656
+ "Consider parallel processing for long-running operations",
657
+ "Implement asynchronous processing",
658
+ "Use multiprocessing for CPU-bound tasks"
659
+ ])
660
+ optimization_type = OptimizationType.CONCURRENCY
661
+ estimated_improvement = "30-70% with proper concurrency"
662
+
663
+ else:
664
+ suggestions.extend([
665
+ "Profile line-by-line to identify slow operations",
666
+ "Check for unnecessary loops or computations",
667
+ "Optimize string operations and regular expressions"
668
+ ])
669
+ estimated_improvement = "10-40% with micro-optimizations"
670
+
671
+ return optimization_type, suggestions, estimated_improvement
672
+
673
+ async def _generate_memory_optimization_suggestions(
674
+ self, memory_usage: int,
675
+ context7_patterns: Dict[str, Any] = None
676
+ ) -> tuple:
677
+ """Generate memory optimization suggestions."""
678
+
679
+ suggestions = []
680
+ optimization_type = OptimizationType.MEMORY_OPTIMIZATION
681
+
682
+ if memory_usage > 100 * 1024 * 1024: # 100MB
683
+ suggestions.extend([
684
+ "Implement streaming processing for large datasets",
685
+ "Use generators instead of creating large lists",
686
+ "Process data in chunks to reduce memory footprint"
687
+ ])
688
+ estimated_improvement = "60-90% memory reduction"
689
+
690
+ elif memory_usage > 10 * 1024 * 1024: # 10MB
691
+ suggestions.extend([
692
+ "Use memory-efficient data structures",
693
+ "Implement object pooling for frequently allocated objects",
694
+ "Consider using numpy arrays for numerical data"
695
+ ])
696
+ estimated_improvement = "30-60% memory reduction"
697
+
698
+ else:
699
+ suggestions.extend([
700
+ "Release unused objects explicitly",
701
+ "Use weak references for caching",
702
+ "Avoid circular references"
703
+ ])
704
+ estimated_improvement = "10-30% memory reduction"
705
+
706
+ return optimization_type, suggestions, estimated_improvement
707
+
708
+ def _get_code_snippet(self, file_path: str, line_number: int, context_lines: int = 5) -> str:
709
+ """Get code snippet around the specified line."""
710
+ try:
711
+ with open(file_path, 'r', encoding='utf-8') as f:
712
+ lines = f.readlines()
713
+
714
+ start_line = max(0, line_number - context_lines - 1)
715
+ end_line = min(len(lines), line_number + context_lines)
716
+
717
+ snippet_lines = []
718
+ for i in range(start_line, end_line):
719
+ marker = ">>> " if i == line_number - 1 else " "
720
+ snippet_lines.append(f"{marker}{i+1:4d}: {lines[i].rstrip()}")
721
+
722
+ return '\n'.join(snippet_lines)
723
+
724
+ except Exception:
725
+ return f"// Code not available for {file_path}:{line_number}"
726
+
727
+ async def create_optimization_plan(
728
+ self, bottlenecks: List[PerformanceBottleneck],
729
+ context7_patterns: Dict[str, Any] = None
730
+ ) -> OptimizationPlan:
731
+ """Create comprehensive optimization plan."""
732
+
733
+ # Prioritize bottlenecks by impact and severity
734
+ prioritized_bottlenecks = self._prioritize_bottlenecks(bottlenecks)
735
+
736
+ # Create execution order
737
+ execution_order = self._create_optimization_execution_order(prioritized_bottlenecks)
738
+
739
+ # Estimate total improvement
740
+ total_improvement = self._estimate_total_improvement(prioritized_bottlenecks)
741
+
742
+ # Assess implementation complexity
743
+ complexity = self._assess_implementation_complexity(prioritized_bottlenecks)
744
+
745
+ # Assess risk level
746
+ risk_level = self._assess_optimization_risk(prioritized_bottlenecks)
747
+
748
+ # Identify prerequisites
749
+ prerequisites = self._identify_optimization_prerequisites(prioritized_bottlenecks)
750
+
751
+ # Create validation strategy
752
+ validation_strategy = self._create_validation_strategy(prioritized_bottlenecks)
753
+
754
+ return OptimizationPlan(
755
+ bottlenecks=prioritized_bottlenecks,
756
+ execution_order=execution_order,
757
+ estimated_total_improvement=total_improvement,
758
+ implementation_complexity=complexity,
759
+ risk_level=risk_level,
760
+ prerequisites=prerequisites,
761
+ validation_strategy=validation_strategy
762
+ )
763
+
764
+ def _prioritize_bottlenecks(
765
+ self, bottlenecks: List[PerformanceBottleneck]
766
+ ) -> List[PerformanceBottleneck]:
767
+ """Prioritize bottlenecks by impact and implementation complexity."""
768
+
769
+ # Sort by severity, impact score, and optimization type
770
+ severity_order = {'critical': 4, 'high': 3, 'medium': 2, 'low': 1}
771
+
772
+ return sorted(
773
+ bottlenecks,
774
+ key=lambda x: (
775
+ severity_order.get(x.severity, 0),
776
+ x.impact_score,
777
+ self._get_optimization_priority(x.optimization_type)
778
+ ),
779
+ reverse=True
780
+ )
781
+
782
+ def _get_optimization_priority(self, opt_type: OptimizationType) -> int:
783
+ """Get priority weight for optimization type."""
784
+ priorities = {
785
+ OptimizationType.ALGORITHM_IMPROVEMENT: 4,
786
+ OptimizationType.CACHING: 3,
787
+ OptimizationType.CONCURRENCY: 3,
788
+ OptimizationType.MEMORY_OPTIMIZATION: 2,
789
+ OptimizationType.DATA_STRUCTURE_CHANGE: 2,
790
+ OptimizationType.I/O_OPTIMIZATION: 2,
791
+ OptimizationType.DATABASE_OPTIMIZATION: 1
792
+ }
793
+ return priorities.get(opt_type, 1)
794
+
795
+ def _create_optimization_execution_order(
796
+ self, bottlenecks: List[PerformanceBottleneck]
797
+ ) -> List[int]:
798
+ """Create optimal execution order for optimizations."""
799
+
800
+ # Group by optimization type
801
+ type_groups = defaultdict(list)
802
+ for i, bottleneck in enumerate(bottlenecks):
803
+ type_groups[bottleneck.optimization_type].append(i)
804
+
805
+ # Define execution order by type
806
+ execution_order = []
807
+ type_order = [
808
+ OptimizationType.ALGORITHM_IMPROVEMENT,
809
+ OptimizationType.DATA_STRUCTURE_CHANGE,
810
+ OptimizationType.CACHING,
811
+ OptimizationType.MEMORY_OPTIMIZATION,
812
+ OptimizationType.CONCURRENCY,
813
+ OptimizationType.I_IO_OPTIMIZATION,
814
+ OptimizationType.DATABASE_OPTIMIZATION
815
+ ]
816
+
817
+ for opt_type in type_order:
818
+ if opt_type in type_groups:
819
+ execution_order.extend(type_groups[opt_type])
820
+
821
+ return execution_order
822
+
823
+ def _estimate_total_improvement(
824
+ self, bottlenecks: List[PerformanceBottleneck]
825
+ ) -> str:
826
+ """Estimate total performance improvement."""
827
+
828
+ if not bottlenecks:
829
+ return "No significant improvement expected"
830
+
831
+ # Calculate weighted improvement
832
+ total_weighted_improvement = 0
833
+ total_weight = 0
834
+
835
+ for bottleneck in bottlenecks:
836
+ # Extract improvement percentage from description
837
+ improvement_range = self._parse_improvement_estimate(bottleneck.estimated_improvement)
838
+ if improvement_range:
839
+ avg_improvement = (improvement_range[0] + improvement_range[1]) / 2
840
+ weight = bottleneck.impact_score
841
+ total_weighted_improvement += avg_improvement * weight
842
+ total_weight += weight
843
+
844
+ if total_weight > 0:
845
+ avg_improvement = total_weighted_improvement / total_weight
846
+ return f"{avg_improvement:.0f}% average performance improvement"
847
+
848
+ return "Performance improvement depends on implementation"
849
+
850
+ def _parse_improvement_estimate(self, estimate: str) -> tuple:
851
+ """Parse improvement percentage from estimate string."""
852
+ import re
853
+
854
+ # Look for percentage ranges like "20-50%" or "30%"
855
+ match = re.search(r'(\d+)-?(\d+)?%', estimate)
856
+ if match:
857
+ start = int(match.group(1))
858
+ end = int(match.group(2)) if match.group(2) else start
859
+ return (start, end)
860
+
861
+ return None
862
+
863
+ def _assess_implementation_complexity(
864
+ self, bottlenecks: List[PerformanceBottleneck]
865
+ ) -> str:
866
+ """Assess overall implementation complexity."""
867
+
868
+ complexity_scores = {
869
+ OptimizationType.ALGORITHM_IMPROVEMENT: 3,
870
+ OptimizationType.DATA_STRUCTURE_CHANGE: 3,
871
+ OptimizationType.CONCURRENCY: 4,
872
+ OptimizationType.DATABASE_OPTIMIZATION: 3,
873
+ OptimizationType.CACHING: 2,
874
+ OptimizationType.MEMORY_OPTIMIZATION: 2,
875
+ OptimizationType.I_O_OPTIMIZATION: 2
876
+ }
877
+
878
+ if not bottlenecks:
879
+ return "low"
880
+
881
+ avg_complexity = sum(
882
+ complexity_scores.get(b.optimization_type, 2) * b.impact_score
883
+ for b in bottlenecks
884
+ ) / sum(b.impact_score for b in bottlenecks)
885
+
886
+ if avg_complexity > 3.5:
887
+ return "high"
888
+ elif avg_complexity > 2.5:
889
+ return "medium"
890
+ else:
891
+ return "low"
892
+
893
+ def _assess_optimization_risk(
894
+ self, bottlenecks: List[PerformanceBottleneck]
895
+ ) -> str:
896
+ """Assess risk level of optimizations."""
897
+
898
+ high_risk_types = {
899
+ OptimizationType.ALGORITHM_IMPROVEMENT,
900
+ OptimizationType.DATA_STRUCTURE_CHANGE,
901
+ OptimizationType.CONCURRENCY
902
+ }
903
+
904
+ high_risk_count = sum(
905
+ 1 for b in bottlenecks
906
+ if b.optimization_type in high_risk_types and b.impact_score > 0.3
907
+ )
908
+
909
+ if high_risk_count > 3:
910
+ return "high"
911
+ elif high_risk_count > 1:
912
+ return "medium"
913
+ else:
914
+ return "low"
915
+
916
+ def _identify_optimization_prerequisites(
917
+ self, bottlenecks: List[PerformanceBottleneck]
918
+ ) -> List[str]:
919
+ """Identify prerequisites for safe optimization."""
920
+
921
+ prerequisites = [
922
+ "Create comprehensive performance benchmarks",
923
+ "Ensure version control with current implementation",
924
+ "Set up performance testing environment"
925
+ ]
926
+
927
+ # Add specific prerequisites based on bottleneck types
928
+ optimization_types = set(b.optimization_type for b in bottlenecks)
929
+
930
+ if OptimizationType.CONCURRENCY in optimization_types:
931
+ prerequisites.extend([
932
+ "Review thread safety and shared resource access",
933
+ "Implement proper synchronization mechanisms"
934
+ ])
935
+
936
+ if OptimizationType.DATABASE_OPTIMIZATION in optimization_types:
937
+ prerequisites.extend([
938
+ "Create database backup before optimization",
939
+ "Set up database performance monitoring"
940
+ ])
941
+
942
+ if OptimizationType.ALGORITHM_IMPROVEMENT in optimization_types:
943
+ prerequisites.extend([
944
+ "Verify algorithm correctness with test suite",
945
+ "Compare against known reference implementations"
946
+ ])
947
+
948
+ return prerequisites
949
+
950
+ def _create_validation_strategy(
951
+ self, bottlenecks: List[PerformanceBottleneck]
952
+ ) -> str:
953
+ """Create validation strategy for optimizations."""
954
+
955
+ strategy = """
956
+ Validation Strategy:
957
+ 1. Baseline Performance Measurement
958
+ - Record current performance metrics
959
+ - Establish performance regression thresholds
960
+
961
+ 2. Incremental Testing
962
+ - Apply optimizations one at a time
963
+ - Measure performance impact after each change
964
+
965
+ 3. Automated Performance Testing
966
+ - Implement performance regression tests
967
+ - Set up continuous performance monitoring
968
+
969
+ 4. Functional Validation
970
+ - Run complete test suite after each optimization
971
+ - Verify no functional regressions introduced
972
+
973
+ 5. Production Monitoring
974
+ - Monitor performance in staging environment
975
+ - Gradual rollout with performance validation
976
+ """
977
+
978
+ return strategy
979
+
980
+ # Usage Examples
981
+ """
982
+ # Initialize performance profiler
983
+ profiler = PerformanceProfiler(context7_client=context7)
984
+
985
+ # Example function to profile
986
+ def expensive_function(n):
987
+ result = []
988
+ for i in range(n):
989
+ # Simulate expensive computation
990
+ temp = []
991
+ for j in range(i):
992
+ temp.append(j * j)
993
+ result.extend(temp)
994
+ return result
995
+
996
+ # Start profiling
997
+ profiler.start_profiling(['cpu', 'memory', 'line'])
998
+
999
+ # Add line profiler for specific function
1000
+ if profiler.line_profiler:
1001
+ profiler.line_profiler.add_function(expensive_function)
1002
+
1003
+ # Run the code to be profiled
1004
+ result = expensive_function(1000)
1005
+
1006
+ # Stop profiling and get results
1007
+ profile_results = profiler.stop_profiling()
1008
+
1009
+ # Detect bottlenecks
1010
+ bottlenecks = await profiler.detect_bottlenecks(profile_results)
1011
+
1012
+ print(f"Found {len(bottlenecks)} performance bottlenecks:")
1013
+ for bottleneck in bottlenecks[:5]: # Show top 5
1014
+ print(f"\nBottleneck: {bottleneck.function_name}")
1015
+ print(f" Type: {bottleneck.bottleneck_type}")
1016
+ print(f" Severity: {bottleneck.severity}")
1017
+ print(f" Impact: {bottleneck.impact_score:.2f}")
1018
+ print(f" Description: {bottleneck.description}")
1019
+ print(f" Optimization type: {bottleneck.optimization_type.value}")
1020
+ print(f" Suggested fixes:")
1021
+ for fix in bottleneck.suggested_fixes:
1022
+ print(f" - {fix}")
1023
+
1024
+ # Create optimization plan
1025
+ optimization_plan = await profiler.create_optimization_plan(bottlenecks)
1026
+
1027
+ print(f"\nOptimization Plan:")
1028
+ print(f" Estimated improvement: {optimization_plan.estimated_total_improvement}")
1029
+ print(f" Implementation complexity: {optimization_plan.implementation_complexity}")
1030
+ print(f" Risk level: {optimization_plan.risk_level}")
1031
+ print(f" Prerequisites: {len(optimization_plan.prerequisites)} items")
1032
+
1033
+ # Real-time monitoring example
1034
+ monitor = RealTimeMonitor(sampling_interval=0.5)
1035
+ monitor.start_monitoring()
1036
+
1037
+ # Add custom metrics callback
1038
+ def custom_metrics():
1039
+ return {
1040
+ 'custom_counter': some_global_counter,
1041
+ 'queue_size': len(some_queue)
1042
+ }
1043
+
1044
+ monitor.add_callback(custom_metrics)
1045
+
1046
+ # Run application while monitoring
1047
+ # ... your application code ...
1048
+
1049
+ # Stop monitoring and get results
1050
+ monitor.stop_monitoring()
1051
+ recent_snapshots = monitor.get_recent_snapshots(10)
1052
+ avg_metrics = monitor.get_average_metrics(5)
1053
+
1054
+ print(f"Average CPU: {avg_metrics.get('avg_cpu_percent', 0):.1f}%")
1055
+ print(f"Average Memory: {avg_metrics.get('avg_memory_mb', 0):.1f}MB")
1056
+ """
1057
+ ```
1058
+
1059
+ ## Advanced Features
1060
+
1061
+ ### Intelligent Performance Optimization
1062
+
1063
+ AI-Powered Optimization Suggestions:
1064
+ ```python
1065
+ class IntelligentOptimizer(PerformanceProfiler):
1066
+ """Optimizer that uses AI to suggest the best optimizations."""
1067
+
1068
+ def __init__(self, context7_client=None):
1069
+ super().__init__(context7_client)
1070
+ self.optimization_history = []
1071
+ self.performance_models = {}
1072
+
1073
+ async def get_ai_optimization_suggestions(
1074
+ self, bottlenecks: List[PerformanceBottleneck],
1075
+ codebase_context: Dict[str, Any]
1076
+ ) -> Dict[str, Any]:
1077
+ """Get AI-powered optimization suggestions using Context7."""
1078
+
1079
+ if not self.context7:
1080
+ return self._get_rule_based_suggestions(bottlenecks)
1081
+
1082
+ # Get latest performance optimization patterns
1083
+ try:
1084
+ optimization_patterns = await self.context7.get_library_docs(
1085
+ context7_library_id="/performance/python-profiling",
1086
+ topic="advanced performance optimization patterns 2025",
1087
+ tokens=5000
1088
+ )
1089
+
1090
+ # Get algorithm complexity patterns
1091
+ algorithm_patterns = await self.context7.get_library_docs(
1092
+ context7_library_id="/algorithms/python",
1093
+ topic="algorithm optimization big-O complexity reduction",
1094
+ tokens=3000
1095
+ )
1096
+
1097
+ # Generate AI suggestions
1098
+ ai_suggestions = await self._generate_ai_suggestions(
1099
+ bottlenecks, optimization_patterns, algorithm_patterns, codebase_context
1100
+ )
1101
+
1102
+ return ai_suggestions
1103
+
1104
+ except Exception as e:
1105
+ print(f"AI optimization failed: {e}")
1106
+ return self._get_rule_based_suggestions(bottlenecks)
1107
+
1108
+ async def _generate_ai_suggestions(
1109
+ self, bottlenecks: List[PerformanceBottleneck],
1110
+ opt_patterns: Dict, algo_patterns: Dict, context: Dict
1111
+ ) -> Dict[str, Any]:
1112
+ """Generate AI-powered optimization suggestions."""
1113
+
1114
+ suggestions = {
1115
+ 'algorithm_improvements': [],
1116
+ 'data_structure_optimizations': [],
1117
+ 'concurrency_improvements': [],
1118
+ 'caching_strategies': [],
1119
+ 'io_optimizations': []
1120
+ }
1121
+
1122
+ for bottleneck in bottlenecks:
1123
+ # Analyze bottleneck characteristics
1124
+ if bottleneck.bottleneck_type == "cpu":
1125
+ # Check for algorithmic improvements
1126
+ if "O(" in bottleneck.description or any(
1127
+ keyword in bottleneck.description.lower()
1128
+ for keyword in ["loop", "iteration", "search", "sort"]
1129
+ ):
1130
+ improvement = self._suggest_algorithm_improvement(
1131
+ bottleneck, algo_patterns
1132
+ )
1133
+ suggestions['algorithm_improvements'].append(improvement)
1134
+
1135
+ # Check for concurrency opportunities
1136
+ if bottleneck.call_count > 1000:
1137
+ concurrency = self._suggest_concurrency_improvement(bottleneck)
1138
+ suggestions['concurrency_improvements'].append(concurrency)
1139
+
1140
+ elif bottleneck.bottleneck_type == "memory":
1141
+ # Suggest data structure optimizations
1142
+ data_structure = self._suggest_data_structure_improvement(
1143
+ bottleneck, opt_patterns
1144
+ )
1145
+ suggestions['data_structure_optimizations'].append(data_structure)
1146
+
1147
+ return suggestions
1148
+
1149
+ def _suggest_algorithm_improvement(
1150
+ self, bottleneck: PerformanceBottleneck, algo_patterns: Dict
1151
+ ) -> Dict[str, Any]:
1152
+ """Suggest algorithmic improvements based on Context7 patterns."""
1153
+
1154
+ # Analyze function name and code to identify algorithm type
1155
+ function_name = bottleneck.function_name.lower()
1156
+
1157
+ suggestions = []
1158
+
1159
+ if any(keyword in function_name for keyword in ["search", "find"]):
1160
+ suggestions.extend([
1161
+ "Consider using binary search for sorted data",
1162
+ "Implement hash-based lookup for O(1) average case",
1163
+ "Use trie structures for prefix searches"
1164
+ ])
1165
+
1166
+ elif any(keyword in function_name for keyword in ["sort", "order"]):
1167
+ suggestions.extend([
1168
+ "Consider using Timsort (Python's built-in sort)",
1169
+ "Use radix sort for uniform integer data",
1170
+ "Implement bucket sort for uniformly distributed data"
1171
+ ])
1172
+
1173
+ elif "nested" in function_name or bottleneck.metrics.get('per_call_time', 0) > 0.1:
1174
+ suggestions.extend([
1175
+ "Look for O(n²) nested loops to optimize",
1176
+ "Consider dynamic programming for overlapping subproblems",
1177
+ "Use memoization to avoid repeated calculations"
1178
+ ])
1179
+
1180
+ return {
1181
+ 'bottleneck': bottleneck.function_name,
1182
+ 'suggestions': suggestions,
1183
+ 'estimated_improvement': "30-90% depending on algorithm",
1184
+ 'implementation_complexity': "medium to high"
1185
+ }
1186
+
1187
+ def _suggest_concurrency_improvement(
1188
+ self, bottleneck: PerformanceBottleneck
1189
+ ) -> Dict[str, Any]:
1190
+ """Suggest concurrency improvements."""
1191
+
1192
+ return {
1193
+ 'bottleneck': bottleneck.function_name,
1194
+ 'suggestions': [
1195
+ "Implement multiprocessing for CPU-bound tasks",
1196
+ "Use threading for I/O-bound operations",
1197
+ "Consider asyncio for concurrent I/O operations",
1198
+ "Use concurrent.futures for thread/process pool execution"
1199
+ ],
1200
+ 'estimated_improvement': "2-8x speedup on multi-core systems",
1201
+ 'implementation_complexity': "medium"
1202
+ }
1203
+
1204
+ def _suggest_data_structure_improvement(
1205
+ self, bottleneck: PerformanceBottleneck, opt_patterns: Dict
1206
+ ) -> Dict[str, Any]:
1207
+ """Suggest data structure optimizations."""
1208
+
1209
+ return {
1210
+ 'bottleneck': bottleneck.function_name,
1211
+ 'suggestions': [
1212
+ "Use generators instead of lists for large datasets",
1213
+ "Implement lazy loading for expensive data structures",
1214
+ "Use memoryviews or numpy arrays for numerical data",
1215
+ "Consider using collections.deque for queue operations",
1216
+ "Use set/dict for O(1) lookups instead of list searches"
1217
+ ],
1218
+ 'estimated_improvement': "30-80% memory reduction",
1219
+ 'implementation_complexity': "low to medium"
1220
+ }
1221
+ ```
1222
+
1223
+ ## Best Practices
1224
+
1225
+ 1. Baseline Measurement: Always establish performance baseline before optimization
1226
+ 2. Incremental Changes: Apply one optimization at a time to measure impact
1227
+ 3. Comprehensive Testing: Ensure functionality is preserved during optimization
1228
+ 4. Real-world Workloads: Profile with realistic data and usage patterns
1229
+ 5. Continuous Monitoring: Implement ongoing performance monitoring in production
1230
+
1231
+ ---
1232
+
1233
+ Module: `modules/performance-optimization.md`
1234
+ Related: [AI Debugging](./ai-debugging.md) | [Smart Refactoring](./smart-refactoring.md)