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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. moai_adk/__main__.py +136 -5
  2. moai_adk/astgrep/__init__.py +37 -0
  3. moai_adk/astgrep/analyzer.py +522 -0
  4. moai_adk/astgrep/models.py +124 -0
  5. moai_adk/astgrep/rules.py +179 -0
  6. moai_adk/cli/commands/analyze.py +11 -2
  7. moai_adk/cli/commands/doctor.py +7 -1
  8. moai_adk/cli/commands/init.py +321 -11
  9. moai_adk/cli/commands/language.py +7 -1
  10. moai_adk/cli/commands/rank.py +449 -0
  11. moai_adk/cli/commands/status.py +7 -1
  12. moai_adk/cli/commands/switch.py +325 -0
  13. moai_adk/cli/commands/update.py +296 -23
  14. moai_adk/cli/prompts/init_prompts.py +362 -66
  15. moai_adk/cli/prompts/translations/__init__.py +573 -0
  16. moai_adk/cli/ui/prompts.py +61 -2
  17. moai_adk/cli/worktree/cli.py +106 -1
  18. moai_adk/cli/worktree/manager.py +155 -0
  19. moai_adk/core/config/unified.py +244 -63
  20. moai_adk/core/credentials.py +264 -0
  21. moai_adk/core/error_recovery_system.py +22 -4
  22. moai_adk/core/git/conflict_detector.py +10 -1
  23. moai_adk/core/git/event_detector.py +16 -5
  24. moai_adk/core/integration/engine.py +2 -2
  25. moai_adk/core/integration/integration_tester.py +5 -5
  26. moai_adk/core/language_config_resolver.py +9 -3
  27. moai_adk/core/merge/analyzer.py +509 -324
  28. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  29. moai_adk/core/migration/backup_manager.py +54 -4
  30. moai_adk/core/migration/file_migrator.py +174 -2
  31. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  32. moai_adk/core/migration/version_detector.py +123 -19
  33. moai_adk/core/migration/version_migrator.py +44 -9
  34. moai_adk/core/model_allocator.py +241 -0
  35. moai_adk/core/project/backup_utils.py +12 -2
  36. moai_adk/core/project/initializer.py +44 -87
  37. moai_adk/core/project/phase_executor.py +95 -33
  38. moai_adk/core/project/validator.py +16 -1
  39. moai_adk/core/quality/trust_checker.py +30 -10
  40. moai_adk/core/rollback_manager.py +60 -25
  41. moai_adk/core/template/backup.py +88 -6
  42. moai_adk/core/template/config.py +33 -9
  43. moai_adk/core/template/merger.py +34 -8
  44. moai_adk/core/template/processor.py +334 -11
  45. moai_adk/core/template_engine.py +10 -1
  46. moai_adk/core/template_variable_synchronizer.py +16 -2
  47. moai_adk/core/version_sync.py +54 -6
  48. moai_adk/foundation/__init__.py +1 -20
  49. moai_adk/foundation/testing.py +1 -1
  50. moai_adk/loop/__init__.py +54 -0
  51. moai_adk/loop/controller.py +305 -0
  52. moai_adk/loop/feedback.py +230 -0
  53. moai_adk/loop/state.py +209 -0
  54. moai_adk/loop/storage.py +220 -0
  55. moai_adk/lsp/__init__.py +70 -0
  56. moai_adk/lsp/client.py +320 -0
  57. moai_adk/lsp/models.py +261 -0
  58. moai_adk/lsp/protocol.py +404 -0
  59. moai_adk/lsp/server_manager.py +248 -0
  60. moai_adk/project/configuration.py +8 -1
  61. moai_adk/py.typed +0 -0
  62. moai_adk/ralph/__init__.py +37 -0
  63. moai_adk/ralph/engine.py +307 -0
  64. moai_adk/rank/__init__.py +21 -0
  65. moai_adk/rank/auth.py +425 -0
  66. moai_adk/rank/client.py +557 -0
  67. moai_adk/rank/config.py +147 -0
  68. moai_adk/rank/hook.py +1503 -0
  69. moai_adk/rank/py.typed +0 -0
  70. moai_adk/statusline/__init__.py +3 -0
  71. moai_adk/statusline/enhanced_output_style_detector.py +5 -5
  72. moai_adk/statusline/main.py +20 -1
  73. moai_adk/statusline/memory_collector.py +268 -0
  74. moai_adk/statusline/renderer.py +54 -38
  75. moai_adk/tag_system/__init__.py +48 -0
  76. moai_adk/tag_system/atomic_ops.py +117 -0
  77. moai_adk/tag_system/linkage.py +335 -0
  78. moai_adk/tag_system/parser.py +176 -0
  79. moai_adk/tag_system/validator.py +200 -0
  80. moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
  81. moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
  82. moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
  83. moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
  84. moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
  85. moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
  86. moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
  87. moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
  88. moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
  89. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
  90. moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
  91. moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
  92. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
  93. moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
  94. moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
  95. moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
  96. moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
  97. moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
  98. moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
  99. moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
  100. moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
  101. moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
  102. moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
  103. moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
  104. moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
  105. moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
  106. moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
  107. moai_adk/templates/.claude/commands/moai/fix.md +264 -0
  108. moai_adk/templates/.claude/commands/moai/loop.md +363 -0
  109. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  110. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
  111. moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
  112. moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
  113. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  114. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  115. moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
  116. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
  117. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
  118. moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
  119. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  120. moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
  121. moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
  122. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
  123. moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
  124. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
  125. moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
  126. moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
  127. moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
  128. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  129. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  130. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  131. moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
  132. moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
  133. moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
  134. moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
  135. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
  136. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
  137. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
  138. moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
  139. moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
  140. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
  141. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
  142. moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
  143. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
  144. moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
  145. moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
  146. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
  147. moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
  148. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
  149. moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
  150. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
  151. moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
  152. moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
  153. moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
  154. moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
  155. moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
  156. moai_adk/templates/.claude/settings.json +154 -77
  157. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
  158. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
  159. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  160. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  161. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  162. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  163. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  164. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
  165. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
  166. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
  167. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
  168. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  169. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  170. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  171. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  172. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  173. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  174. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
  175. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
  176. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  177. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
  178. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  179. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  180. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
  181. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  182. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  183. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  184. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  185. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  186. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
  187. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  188. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  189. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  190. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  191. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
  192. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
  193. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  196. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  199. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  201. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
  204. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
  205. moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
  206. moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
  207. moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
  208. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
  209. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
  210. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  211. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
  212. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
  213. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  214. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  215. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  216. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  217. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  218. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  219. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  220. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
  221. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
  222. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  223. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
  224. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
  225. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
  226. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
  227. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
  228. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  229. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  230. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
  231. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
  232. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
  233. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  234. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
  235. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
  236. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
  237. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
  238. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  239. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
  240. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
  241. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
  242. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  243. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  244. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
  245. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
  246. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
  247. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  248. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  249. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  250. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  251. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  252. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
  253. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  254. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  255. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  256. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  257. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
  258. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
  259. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
  260. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  261. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  262. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  277. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  278. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  279. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  280. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  281. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  282. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  283. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  284. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  285. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  286. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  287. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  288. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  289. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  290. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  291. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  292. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  293. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  294. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  295. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  296. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  297. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
  298. moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
  299. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  300. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  301. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
  302. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  303. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  304. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  305. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  306. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  307. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  308. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
  309. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  310. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  311. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  312. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  313. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  314. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
  315. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  316. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  317. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  318. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  319. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  320. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  321. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
  322. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  323. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  324. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  325. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  326. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  327. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  328. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
  329. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  330. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  331. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  332. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  333. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  334. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  335. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
  336. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  337. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  338. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  339. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  340. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  341. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  342. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  343. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  344. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  345. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
  346. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  347. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  348. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  349. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  351. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  352. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  353. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
  354. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  355. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  357. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  358. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  359. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  360. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  361. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  362. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  363. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  364. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  365. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  366. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  367. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  368. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
  370. moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
  374. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
  375. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
  376. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
  378. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
  379. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  380. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  381. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  391. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  429. moai_adk/templates/.git-hooks/pre-push +162 -59
  430. moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
  431. moai_adk/templates/.gitignore +65 -107
  432. moai_adk/templates/.lsp.json +152 -0
  433. moai_adk/templates/.mcp.json +2 -20
  434. moai_adk/templates/.moai/announcements/en.json +18 -0
  435. moai_adk/templates/.moai/announcements/ja.json +18 -0
  436. moai_adk/templates/.moai/announcements/ko.json +18 -0
  437. moai_adk/templates/.moai/announcements/zh.json +18 -0
  438. moai_adk/templates/.moai/config/config.yaml +8 -2
  439. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +2 -2
  441. moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
  442. moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
  443. moai_adk/templates/.moai/config/sections/project.yaml +2 -2
  444. moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
  445. moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
  446. moai_adk/templates/.moai/config/sections/system.yaml +46 -1
  447. moai_adk/templates/.moai/config/sections/user.yaml +1 -1
  448. moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
  449. moai_adk/templates/.moai/llm-configs/glm.json +22 -0
  450. moai_adk/templates/CLAUDE.ja.md +343 -0
  451. moai_adk/templates/CLAUDE.ko.md +343 -0
  452. moai_adk/templates/CLAUDE.md +200 -499
  453. moai_adk/templates/CLAUDE.zh.md +343 -0
  454. moai_adk/utils/common.py +37 -0
  455. moai_adk/version.py +1 -1
  456. moai_adk-1.1.0.dist-info/METADATA +2443 -0
  457. moai_adk-1.1.0.dist-info/RECORD +701 -0
  458. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
  459. moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
  460. moai_adk/core/config/auto_spec_config.py +0 -340
  461. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  462. moai_adk/core/spec/confidence_scoring.py +0 -680
  463. moai_adk/core/spec/ears_template_engine.py +0 -1247
  464. moai_adk/core/spec/quality_validator.py +0 -687
  465. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
  466. moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
  467. moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
  468. moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
  469. moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
  470. moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
  471. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
  472. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
  473. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
  474. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
  475. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  476. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  477. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
  478. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
  479. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
  480. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
  481. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  482. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  483. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  484. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  485. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  486. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
  487. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  488. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  489. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  490. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  491. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  492. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  493. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  494. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  495. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  496. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  497. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  498. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
  499. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  500. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  501. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  502. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  503. moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
  504. moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
  505. moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
  506. moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
  507. moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
  508. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
  509. moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
  510. moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
  511. moai_adk-0.34.0.dist-info/METADATA +0 -2999
  512. moai_adk-0.34.0.dist-info/RECORD +0 -463
  513. moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
  514. /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
  515. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  516. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  517. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  518. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  519. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  520. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  521. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  522. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  523. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  524. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
@@ -5,1228 +5,321 @@
5
5
  > Time: 30+ minutes
6
6
  > Dependencies: Python 3.8+, cProfile, memory_profiler, psutil, Context7 MCP, asyncio
7
7
 
8
- ## Core Implementation
8
+ ## Overview
9
9
 
10
- ### PerformanceProfiler Class
10
+ Performance optimization module providing comprehensive profiling, bottleneck detection, and AI-powered optimization suggestions for Python applications.
11
11
 
12
+ ### Core Capabilities
13
+
14
+ - **Real-time Monitoring**: Continuous performance tracking with alerting
15
+ - **Multi-dimensional Profiling**: CPU, memory, and line-level profiling
16
+ - **Intelligent Detection**: Automatic bottleneck identification with severity scoring
17
+ - **AI-Powered Suggestions**: Context7-based optimization recommendations
18
+ - **Comprehensive Planning**: Structured optimization plans with risk assessment
19
+
20
+ ## Module Structure
21
+
22
+ ### 1. Real-Time Monitoring
23
+ [real-time-monitoring.md](./performance-optimization/real-time-monitoring.md)
24
+
25
+ Continuous performance monitoring system with snapshot collection and alerting.
26
+
27
+ Key Features:
28
+ - Configurable sampling intervals (0.5-2.0 seconds)
29
+ - CPU, memory, file handle, and thread monitoring
30
+ - Custom metric callbacks for domain-specific tracking
31
+ - Automatic alert generation for threshold violations
32
+ - Rolling snapshot buffer with configurable size
33
+
34
+ Usage:
35
+ ```python
36
+ monitor = RealTimeMonitor(sampling_interval=0.5)
37
+ monitor.start_monitoring()
38
+ monitor.add_callback(custom_metrics)
39
+ # ... application code ...
40
+ monitor.stop_monitoring()
41
+ metrics = monitor.get_average_metrics(5)
42
+ ```
43
+
44
+ ### 2. Profiler Core
45
+ [profiler-core.md](./performance-optimization/profiler-core.md)
46
+
47
+ CPU, memory, and line profiling infrastructure with statistical analysis.
48
+
49
+ Key Features:
50
+ - cProfile integration for CPU profiling
51
+ - tracemalloc and memory_profiler for memory tracking
52
+ - line_profiler for function-level timing
53
+ - Comprehensive profile analysis and parsing
54
+ - Function-level performance statistics
55
+
56
+ Usage:
12
57
  ```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
58
  profiler = PerformanceProfiler(context7_client=context7)
59
+ profiler.start_profiling(['cpu', 'memory', 'line'])
60
+ # ... code to profile ...
61
+ results = profiler.stop_profiling()
62
+ ```
63
+
64
+ ### 3. Bottleneck Detection
65
+ [bottleneck-detection.md](./performance-optimization/bottleneck-detection.md)
66
+
67
+ Automatic detection and classification of performance bottlenecks.
68
+
69
+ Key Features:
70
+ - CPU bottleneck detection with impact scoring
71
+ - Memory leak identification and tracking
72
+ - Real-time metric analysis
73
+ - Severity classification (critical, high, medium, low)
74
+ - Context-aware optimization suggestions
75
+
76
+ Usage:
77
+ ```python
78
+ detector = BottleneckDetector(profiler)
79
+ bottlenecks = await detector.detect_bottlenecks(profile_results)
80
+ for bottleneck in bottlenecks[:5]:
81
+ print(f"{bottleneck.function_name}: {bottleneck.severity}")
82
+ print(f" Impact: {bottleneck.impact_score:.2f}")
83
+ print(f" Fixes: {bottleneck.suggested_fixes}")
84
+ ```
85
+
86
+ ### 4. Optimization Planning
87
+ [optimization-plan.md](./performance-optimization/optimization-plan.md)
88
+
89
+ Comprehensive optimization plan generation with execution ordering.
90
+
91
+ Key Features:
92
+ - Bottleneck prioritization by impact and complexity
93
+ - Execution order optimization for minimal risk
94
+ - Implementation complexity assessment
95
+ - Risk level evaluation (low, medium, high)
96
+ - Prerequisite identification
97
+ - Validation strategy generation
98
+
99
+ Usage:
100
+ ```python
101
+ planner = OptimizationPlanner(detector)
102
+ plan = await planner.create_optimization_plan(bottlenecks)
103
+ print(f"Estimated improvement: {plan.estimated_total_improvement}")
104
+ print(f"Complexity: {plan.implementation_complexity}")
105
+ print(f"Risk: {plan.risk_level}")
106
+ ```
107
+
108
+ ### 5. AI-Powered Optimization
109
+ [ai-optimization.md](./performance-optimization/ai-optimization.md)
110
+
111
+ Intelligent optimization suggestions using Context7 documentation integration.
112
+
113
+ Key Features:
114
+ - Context7 integration for latest performance patterns
115
+ - Algorithm complexity analysis and recommendations
116
+ - Data structure optimization suggestions
117
+ - Concurrency improvement strategies
118
+ - Hybrid AI and rule-based approach
119
+
120
+ Usage:
121
+ ```python
122
+ optimizer = IntelligentOptimizer(context7_client=context7)
123
+ suggestions = await optimizer.get_ai_optimization_suggestions(
124
+ bottlenecks,
125
+ codebase_context={'project_type': 'web_api'}
126
+ )
127
+ ```
128
+
129
+ ## Quick Start Example
984
130
 
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
131
+ Complete performance optimization workflow:
132
+
133
+ ```python
134
+ # Initialize profiler
135
+ profiler = PerformanceProfiler(context7_client=context7)
995
136
 
996
137
  # Start profiling
997
138
  profiler.start_profiling(['cpu', 'memory', 'line'])
998
139
 
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
140
+ # Run code to profile
1004
141
  result = expensive_function(1000)
1005
142
 
1006
- # Stop profiling and get results
143
+ # Stop profiling
1007
144
  profile_results = profiler.stop_profiling()
1008
145
 
1009
146
  # 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}")
147
+ detector = BottleneckDetector(profiler)
148
+ bottlenecks = await detector.detect_bottlenecks(profile_results)
1023
149
 
1024
150
  # Create optimization plan
1025
- optimization_plan = await profiler.create_optimization_plan(bottlenecks)
151
+ planner = OptimizationPlanner(detector)
152
+ plan = await planner.create_optimization_plan(bottlenecks)
153
+
154
+ # Get AI suggestions
155
+ optimizer = IntelligentOptimizer(context7_client)
156
+ ai_suggestions = await optimizer.get_ai_optimization_suggestions(
157
+ bottlenecks,
158
+ codebase_context={'project_type': 'web_api'}
159
+ )
160
+
161
+ # Report results
162
+ print(f"Found {len(bottlenecks)} bottlenecks")
163
+ print(f"Estimated improvement: {plan.estimated_total_improvement}")
164
+ print(f"Risk level: {plan.risk_level}")
165
+ ```
1026
166
 
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")
167
+ ## Performance Metrics Types
168
+
169
+ ### CPU Metrics
170
+ - Total time (function execution time excluding subcalls)
171
+ - Cumulative time (total time including subcalls)
172
+ - Call count (number of invocations)
173
+ - Per-call time (average execution time)
174
+
175
+ ### Memory Metrics
176
+ - Current memory usage (bytes)
177
+ - Peak memory usage (bytes)
178
+ - Memory by function (line-level allocation)
179
+ - Memory delta (before/after comparison)
180
+
181
+ ### Real-Time Metrics
182
+ - CPU percentage (process-wide)
183
+ - Memory usage (MB and percentage)
184
+ - Open file handles
185
+ - Thread count
186
+ - Context switches
187
+
188
+ ## Optimization Categories
189
+
190
+ ### Algorithm Improvements
191
+ - Big-O complexity reduction
192
+ - Dynamic programming for overlapping subproblems
193
+ - Memoization for repeated calculations
194
+ - Efficient search and sort algorithms
195
+
196
+ ### Caching Strategies
197
+ - LRU cache implementation
198
+ - Memoization decorators
199
+ - Query result caching
200
+ - Object pooling
201
+
202
+ ### Concurrency Improvements
203
+ - Multiprocessing for CPU-bound tasks
204
+ - Threading for I/O-bound operations
205
+ - Asyncio for concurrent I/O
206
+ - Thread/process pool execution
207
+
208
+ ### Memory Optimizations
209
+ - Generator usage for large datasets
210
+ - Lazy loading patterns
211
+ - Memory-efficient data structures
212
+ - Object lifecycle management
213
+
214
+ ### Data Structure Changes
215
+ - Set/dict for O(1) lookups
216
+ - Deque for queue operations
217
+ - Numpy arrays for numerical data
218
+ - Trie structures for prefix searches
1032
219
 
1033
- # Real-time monitoring example
1034
- monitor = RealTimeMonitor(sampling_interval=0.5)
1035
- monitor.start_monitoring()
220
+ ## Best Practices
1036
221
 
1037
- # Add custom metrics callback
1038
- def custom_metrics():
1039
- return {
1040
- 'custom_counter': some_global_counter,
1041
- 'queue_size': len(some_queue)
1042
- }
222
+ ### Profiling
223
+ 1. **Baseline Measurement**: Always establish performance baseline before optimization
224
+ 2. **Realistic Workloads**: Profile with production-like data and usage patterns
225
+ 3. **Multiple Runs**: Profile multiple times to account for variability
226
+ 4. **Statistical Significance**: Ensure sufficient execution time for accuracy
227
+ 5. **Incremental Changes**: Profile after each optimization to measure impact
228
+
229
+ ### Bottleneck Detection
230
+ 1. **Severity Prioritization**: Focus on critical and high severity bottlenecks first
231
+ 2. **Impact Scores**: Use quantitative scores to prioritize optimization efforts
232
+ 3. **Root Cause Analysis**: Understand underlying causes before applying fixes
233
+ 4. **Context Awareness**: Consider codebase context when suggesting optimizations
234
+
235
+ ### Optimization Execution
236
+ 1. **One at a Time**: Apply optimizations individually to measure impact
237
+ 2. **Version Control**: Maintain git branches for each optimization
238
+ 3. **Comprehensive Testing**: Ensure functionality is preserved during optimization
239
+ 4. **Performance Regression Tests**: Automate performance validation
240
+ 5. **Production Monitoring**: Monitor performance in staging before production rollout
241
+
242
+ ### Risk Management
243
+ 1. **Low-Risk First**: Start with low-complexity, high-impact optimizations
244
+ 2. **Backup Strategy**: Always maintain ability to rollback changes
245
+ 3. **Testing Strategy**: Validate with comprehensive test suite
246
+ 4. **Gradual Rollout**: Use feature flags and gradual deployment
247
+ 5. **Monitoring**: Set up performance monitoring and alerting
248
+
249
+ ## Integration with Context7
250
+
251
+ The AI-powered optimization module integrates with Context7 to provide:
252
+
253
+ - Latest performance optimization patterns from official documentation
254
+ - Algorithm complexity analysis and best practices
255
+ - Framework-specific optimization techniques
256
+ - Real-time documentation updates for 2025+ patterns
257
+
258
+ Context7 Queries:
259
+ ```python
260
+ # Performance optimization patterns
261
+ await context7.get_library_docs(
262
+ context7_library_id="/performance/python-profiling",
263
+ topic="advanced performance optimization patterns 2025",
264
+ tokens=5000
265
+ )
266
+
267
+ # Algorithm optimization
268
+ await context7.get_library_docs(
269
+ context7_library_id="/algorithms/python",
270
+ topic="algorithm optimization big-O complexity reduction",
271
+ tokens=3000
272
+ )
273
+ ```
1043
274
 
1044
- monitor.add_callback(custom_metrics)
275
+ ## Common Use Cases
1045
276
 
1046
- # Run application while monitoring
1047
- # ... your application code ...
277
+ ### Web Application Optimization
278
+ Profile request handlers, database queries, and template rendering to identify bottlenecks in web applications.
1048
279
 
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)
280
+ ### Data Pipeline Optimization
281
+ Optimize ETL processes, data transformation, and batch processing jobs for better throughput.
1053
282
 
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
- ```
283
+ ### API Performance
284
+ Identify slow endpoints, optimize database queries, and implement caching strategies.
1058
285
 
1059
- ## Advanced Features
286
+ ### Memory Leak Detection
287
+ Track memory usage over time to identify and fix memory leaks in long-running processes.
1060
288
 
1061
- ### Intelligent Performance Optimization
289
+ ### Algorithm Optimization
290
+ Analyze algorithmic complexity and implement more efficient data structures and algorithms.
1062
291
 
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
- ```
292
+ ## Dependencies
1222
293
 
1223
- ## Best Practices
294
+ Required:
295
+ - Python 3.8+
296
+ - cProfile (standard library)
297
+ - psutil (system monitoring)
298
+ - memory_profiler (memory tracking)
299
+ - line_profiler (line-level profiling)
300
+ - tracemalloc (standard library)
301
+
302
+ Optional:
303
+ - Context7 MCP (AI-powered suggestions)
304
+ - asyncio (async profiling support)
305
+
306
+ ## Module Versions
307
+
308
+ - real-time-monitoring.md: v1.0.0
309
+ - profiler-core.md: v1.0.0
310
+ - bottleneck-detection.md: v1.0.0
311
+ - optimization-plan.md: v1.0.0
312
+ - ai-optimization.md: v1.0.0
313
+
314
+ ## Performance Impact
315
+
316
+ Profiling overhead varies by configuration:
317
+ - CPU profiling: 5-15% overhead
318
+ - Memory profiling: 10-20% overhead
319
+ - Line profiling: 20-30% overhead
320
+ - Real-time monitoring: 2-5% overhead
1224
321
 
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
322
+ Recommendation: Use selective profiling to minimize overhead in production environments.
1230
323
 
1231
324
  ---
1232
325