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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Optimization Planning
|
|
2
|
+
|
|
3
|
+
> Module: Comprehensive optimization plan generation
|
|
4
|
+
> Complexity: Advanced
|
|
5
|
+
> Time: 15+ minutes
|
|
6
|
+
> Dependencies: asyncio
|
|
7
|
+
|
|
8
|
+
## Core Implementation
|
|
9
|
+
|
|
10
|
+
### Optimization Planning System
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
from typing import Dict, List
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
import re
|
|
16
|
+
from collections import defaultdict
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class OptimizationPlan:
|
|
20
|
+
"""Comprehensive optimization plan with prioritized actions."""
|
|
21
|
+
bottlenecks: List[PerformanceBottleneck]
|
|
22
|
+
execution_order: List[int]
|
|
23
|
+
estimated_total_improvement: str
|
|
24
|
+
implementation_complexity: str
|
|
25
|
+
risk_level: str
|
|
26
|
+
prerequisites: List[str]
|
|
27
|
+
validation_strategy: str
|
|
28
|
+
|
|
29
|
+
class OptimizationPlanner:
|
|
30
|
+
"""Create comprehensive optimization plans."""
|
|
31
|
+
|
|
32
|
+
def __init__(self, detector):
|
|
33
|
+
self.detector = detector
|
|
34
|
+
|
|
35
|
+
async def create_optimization_plan(
|
|
36
|
+
self, bottlenecks: List[PerformanceBottleneck],
|
|
37
|
+
context7_patterns: Dict[str, Any] = None
|
|
38
|
+
) -> OptimizationPlan:
|
|
39
|
+
"""Create comprehensive optimization plan."""
|
|
40
|
+
|
|
41
|
+
# Prioritize bottlenecks by impact and severity
|
|
42
|
+
prioritized_bottlenecks = self._prioritize_bottlenecks(bottlenecks)
|
|
43
|
+
|
|
44
|
+
# Create execution order
|
|
45
|
+
execution_order = self._create_optimization_execution_order(prioritized_bottlenecks)
|
|
46
|
+
|
|
47
|
+
# Estimate total improvement
|
|
48
|
+
total_improvement = self._estimate_total_improvement(prioritized_bottlenecks)
|
|
49
|
+
|
|
50
|
+
# Assess implementation complexity
|
|
51
|
+
complexity = self._assess_implementation_complexity(prioritized_bottlenecks)
|
|
52
|
+
|
|
53
|
+
# Assess risk level
|
|
54
|
+
risk_level = self._assess_optimization_risk(prioritized_bottlenecks)
|
|
55
|
+
|
|
56
|
+
# Identify prerequisites
|
|
57
|
+
prerequisites = self._identify_optimization_prerequisites(prioritized_bottlenecks)
|
|
58
|
+
|
|
59
|
+
# Create validation strategy
|
|
60
|
+
validation_strategy = self._create_validation_strategy(prioritized_bottlenecks)
|
|
61
|
+
|
|
62
|
+
return OptimizationPlan(
|
|
63
|
+
bottlenecks=prioritized_bottlenecks,
|
|
64
|
+
execution_order=execution_order,
|
|
65
|
+
estimated_total_improvement=total_improvement,
|
|
66
|
+
implementation_complexity=complexity,
|
|
67
|
+
risk_level=risk_level,
|
|
68
|
+
prerequisites=prerequisites,
|
|
69
|
+
validation_strategy=validation_strategy
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def _prioritize_bottlenecks(
|
|
73
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
74
|
+
) -> List[PerformanceBottleneck]:
|
|
75
|
+
"""Prioritize bottlenecks by impact and implementation complexity."""
|
|
76
|
+
|
|
77
|
+
# Sort by severity, impact score, and optimization type
|
|
78
|
+
severity_order = {'critical': 4, 'high': 3, 'medium': 2, 'low': 1}
|
|
79
|
+
|
|
80
|
+
return sorted(
|
|
81
|
+
bottlenecks,
|
|
82
|
+
key=lambda x: (
|
|
83
|
+
severity_order.get(x.severity, 0),
|
|
84
|
+
x.impact_score,
|
|
85
|
+
self._get_optimization_priority(x.optimization_type)
|
|
86
|
+
),
|
|
87
|
+
reverse=True
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
def _get_optimization_priority(self, opt_type: OptimizationType) -> int:
|
|
91
|
+
"""Get priority weight for optimization type."""
|
|
92
|
+
priorities = {
|
|
93
|
+
OptimizationType.ALGORITHM_IMPROVEMENT: 4,
|
|
94
|
+
OptimizationType.CACHING: 3,
|
|
95
|
+
OptimizationType.CONCURRENCY: 3,
|
|
96
|
+
OptimizationType.MEMORY_OPTIMIZATION: 2,
|
|
97
|
+
OptimizationType.DATA_STRUCTURE_CHANGE: 2,
|
|
98
|
+
OptimizationType.I_O_OPTIMIZATION: 2,
|
|
99
|
+
OptimizationType.DATABASE_OPTIMIZATION: 1
|
|
100
|
+
}
|
|
101
|
+
return priorities.get(opt_type, 1)
|
|
102
|
+
|
|
103
|
+
def _create_optimization_execution_order(
|
|
104
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
105
|
+
) -> List[int]:
|
|
106
|
+
"""Create optimal execution order for optimizations."""
|
|
107
|
+
|
|
108
|
+
# Group by optimization type
|
|
109
|
+
type_groups = defaultdict(list)
|
|
110
|
+
for i, bottleneck in enumerate(bottlenecks):
|
|
111
|
+
type_groups[bottleneck.optimization_type].append(i)
|
|
112
|
+
|
|
113
|
+
# Define execution order by type
|
|
114
|
+
execution_order = []
|
|
115
|
+
type_order = [
|
|
116
|
+
OptimizationType.ALGORITHM_IMPROVEMENT,
|
|
117
|
+
OptimizationType.DATA_STRUCTURE_CHANGE,
|
|
118
|
+
OptimizationType.CACHING,
|
|
119
|
+
OptimizationType.MEMORY_OPTIMIZATION,
|
|
120
|
+
OptimizationType.CONCURRENCY,
|
|
121
|
+
OptimizationType.I_O_OPTIMIZATION,
|
|
122
|
+
OptimizationType.DATABASE_OPTIMIZATION
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for opt_type in type_order:
|
|
126
|
+
if opt_type in type_groups:
|
|
127
|
+
execution_order.extend(type_groups[opt_type])
|
|
128
|
+
|
|
129
|
+
return execution_order
|
|
130
|
+
|
|
131
|
+
def _estimate_total_improvement(
|
|
132
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
133
|
+
) -> str:
|
|
134
|
+
"""Estimate total performance improvement."""
|
|
135
|
+
|
|
136
|
+
if not bottlenecks:
|
|
137
|
+
return "No significant improvement expected"
|
|
138
|
+
|
|
139
|
+
# Calculate weighted improvement
|
|
140
|
+
total_weighted_improvement = 0
|
|
141
|
+
total_weight = 0
|
|
142
|
+
|
|
143
|
+
for bottleneck in bottlenecks:
|
|
144
|
+
# Extract improvement percentage from description
|
|
145
|
+
improvement_range = self._parse_improvement_estimate(bottleneck.estimated_improvement)
|
|
146
|
+
if improvement_range:
|
|
147
|
+
avg_improvement = (improvement_range[0] + improvement_range[1]) / 2
|
|
148
|
+
weight = bottleneck.impact_score
|
|
149
|
+
total_weighted_improvement += avg_improvement * weight
|
|
150
|
+
total_weight += weight
|
|
151
|
+
|
|
152
|
+
if total_weight > 0:
|
|
153
|
+
avg_improvement = total_weighted_improvement / total_weight
|
|
154
|
+
return f"{avg_improvement:.0f}% average performance improvement"
|
|
155
|
+
|
|
156
|
+
return "Performance improvement depends on implementation"
|
|
157
|
+
|
|
158
|
+
def _parse_improvement_estimate(self, estimate: str) -> tuple:
|
|
159
|
+
"""Parse improvement percentage from estimate string."""
|
|
160
|
+
|
|
161
|
+
# Look for percentage ranges like "20-50%" or "30%"
|
|
162
|
+
match = re.search(r'(\d+)-?(\d+)?%', estimate)
|
|
163
|
+
if match:
|
|
164
|
+
start = int(match.group(1))
|
|
165
|
+
end = int(match.group(2)) if match.group(2) else start
|
|
166
|
+
return (start, end)
|
|
167
|
+
|
|
168
|
+
return None
|
|
169
|
+
|
|
170
|
+
def _assess_implementation_complexity(
|
|
171
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
172
|
+
) -> str:
|
|
173
|
+
"""Assess overall implementation complexity."""
|
|
174
|
+
|
|
175
|
+
complexity_scores = {
|
|
176
|
+
OptimizationType.ALGORITHM_IMPROVEMENT: 3,
|
|
177
|
+
OptimizationType.DATA_STRUCTURE_CHANGE: 3,
|
|
178
|
+
OptimizationType.CONCURRENCY: 4,
|
|
179
|
+
OptimizationType.DATABASE_OPTIMIZATION: 3,
|
|
180
|
+
OptimizationType.CACHING: 2,
|
|
181
|
+
OptimizationType.MEMORY_OPTIMIZATION: 2,
|
|
182
|
+
OptimizationType.I_O_OPTIMIZATION: 2
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if not bottlenecks:
|
|
186
|
+
return "low"
|
|
187
|
+
|
|
188
|
+
avg_complexity = sum(
|
|
189
|
+
complexity_scores.get(b.optimization_type, 2) * b.impact_score
|
|
190
|
+
for b in bottlenecks
|
|
191
|
+
) / sum(b.impact_score for b in bottlenecks)
|
|
192
|
+
|
|
193
|
+
if avg_complexity > 3.5:
|
|
194
|
+
return "high"
|
|
195
|
+
elif avg_complexity > 2.5:
|
|
196
|
+
return "medium"
|
|
197
|
+
else:
|
|
198
|
+
return "low"
|
|
199
|
+
|
|
200
|
+
def _assess_optimization_risk(
|
|
201
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
202
|
+
) -> str:
|
|
203
|
+
"""Assess risk level of optimizations."""
|
|
204
|
+
|
|
205
|
+
high_risk_types = {
|
|
206
|
+
OptimizationType.ALGORITHM_IMPROVEMENT,
|
|
207
|
+
OptimizationType.DATA_STRUCTURE_CHANGE,
|
|
208
|
+
OptimizationType.CONCURRENCY
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
high_risk_count = sum(
|
|
212
|
+
1 for b in bottlenecks
|
|
213
|
+
if b.optimization_type in high_risk_types and b.impact_score > 0.3
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
if high_risk_count > 3:
|
|
217
|
+
return "high"
|
|
218
|
+
elif high_risk_count > 1:
|
|
219
|
+
return "medium"
|
|
220
|
+
else:
|
|
221
|
+
return "low"
|
|
222
|
+
|
|
223
|
+
def _identify_optimization_prerequisites(
|
|
224
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
225
|
+
) -> List[str]:
|
|
226
|
+
"""Identify prerequisites for safe optimization."""
|
|
227
|
+
|
|
228
|
+
prerequisites = [
|
|
229
|
+
"Create comprehensive performance benchmarks",
|
|
230
|
+
"Ensure version control with current implementation",
|
|
231
|
+
"Set up performance testing environment"
|
|
232
|
+
]
|
|
233
|
+
|
|
234
|
+
# Add specific prerequisites based on bottleneck types
|
|
235
|
+
optimization_types = set(b.optimization_type for b in bottlenecks)
|
|
236
|
+
|
|
237
|
+
if OptimizationType.CONCURRENCY in optimization_types:
|
|
238
|
+
prerequisites.extend([
|
|
239
|
+
"Review thread safety and shared resource access",
|
|
240
|
+
"Implement proper synchronization mechanisms"
|
|
241
|
+
])
|
|
242
|
+
|
|
243
|
+
if OptimizationType.DATABASE_OPTIMIZATION in optimization_types:
|
|
244
|
+
prerequisites.extend([
|
|
245
|
+
"Create database backup before optimization",
|
|
246
|
+
"Set up database performance monitoring"
|
|
247
|
+
])
|
|
248
|
+
|
|
249
|
+
if OptimizationType.ALGORITHM_IMPROVEMENT in optimization_types:
|
|
250
|
+
prerequisites.extend([
|
|
251
|
+
"Verify algorithm correctness with test suite",
|
|
252
|
+
"Compare against known reference implementations"
|
|
253
|
+
])
|
|
254
|
+
|
|
255
|
+
return prerequisites
|
|
256
|
+
|
|
257
|
+
def _create_validation_strategy(
|
|
258
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
259
|
+
) -> str:
|
|
260
|
+
"""Create validation strategy for optimizations."""
|
|
261
|
+
|
|
262
|
+
strategy = """
|
|
263
|
+
Validation Strategy:
|
|
264
|
+
1. Baseline Performance Measurement
|
|
265
|
+
- Record current performance metrics
|
|
266
|
+
- Establish performance regression thresholds
|
|
267
|
+
|
|
268
|
+
2. Incremental Testing
|
|
269
|
+
- Apply optimizations one at a time
|
|
270
|
+
- Measure performance impact after each change
|
|
271
|
+
|
|
272
|
+
3. Automated Performance Testing
|
|
273
|
+
- Implement performance regression tests
|
|
274
|
+
- Set up continuous performance monitoring
|
|
275
|
+
|
|
276
|
+
4. Functional Validation
|
|
277
|
+
- Run complete test suite after each optimization
|
|
278
|
+
- Verify no functional regressions introduced
|
|
279
|
+
|
|
280
|
+
5. Production Monitoring
|
|
281
|
+
- Monitor performance in staging environment
|
|
282
|
+
- Gradual rollout with performance validation
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
return strategy
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Usage Examples
|
|
289
|
+
|
|
290
|
+
```python
|
|
291
|
+
# Create optimization plan
|
|
292
|
+
planner = OptimizationPlanner(detector)
|
|
293
|
+
optimization_plan = await planner.create_optimization_plan(bottlenecks)
|
|
294
|
+
|
|
295
|
+
print(f"\nOptimization Plan:")
|
|
296
|
+
print(f" Estimated improvement: {optimization_plan.estimated_total_improvement}")
|
|
297
|
+
print(f" Implementation complexity: {optimization_plan.implementation_complexity}")
|
|
298
|
+
print(f" Risk level: {optimization_plan.risk_level}")
|
|
299
|
+
print(f" Prerequisites: {len(optimization_plan.prerequisites)} items")
|
|
300
|
+
print(f" Execution order: {optimization_plan.execution_order}")
|
|
301
|
+
print(f"\nValidation Strategy:")
|
|
302
|
+
print(optimization_plan.validation_strategy)
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Best Practices
|
|
306
|
+
|
|
307
|
+
1. **Prioritization**: Address high-impact, low-complexity optimizations first
|
|
308
|
+
2. **Risk Assessment**: Understand and mitigate optimization risks
|
|
309
|
+
3. **Incremental Approach**: Apply optimizations one at a time
|
|
310
|
+
4. **Baseline Measurement**: Establish performance baselines before optimization
|
|
311
|
+
5. **Validation Strategy**: Comprehensive testing prevents regressions
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
Related: [Bottleneck Detection](./bottleneck-detection.md) | [AI-Powered Optimization](./ai-optimization.md)
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Performance Profiler Core
|
|
2
|
+
|
|
3
|
+
> Module: CPU, memory, and line profiling with analysis
|
|
4
|
+
> Complexity: Advanced
|
|
5
|
+
> Time: 20+ minutes
|
|
6
|
+
> Dependencies: cProfile, memory_profiler, line_profiler, tracemalloc
|
|
7
|
+
|
|
8
|
+
## Core Implementation
|
|
9
|
+
|
|
10
|
+
### PerformanceProfiler Class
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
import cProfile
|
|
14
|
+
import pstats
|
|
15
|
+
import io
|
|
16
|
+
from typing import Dict, List, Any, Optional
|
|
17
|
+
from dataclasses import dataclass, field
|
|
18
|
+
from enum import Enum
|
|
19
|
+
import memory_profiler
|
|
20
|
+
import line_profiler
|
|
21
|
+
import tracemalloc
|
|
22
|
+
from collections import defaultdict
|
|
23
|
+
|
|
24
|
+
class PerformanceMetric(Enum):
|
|
25
|
+
"""Types of performance metrics to track."""
|
|
26
|
+
CPU_TIME = "cpu_time"
|
|
27
|
+
WALL_TIME = "wall_time"
|
|
28
|
+
MEMORY_USAGE = "memory_usage"
|
|
29
|
+
MEMORY_PEAK = "memory_peak"
|
|
30
|
+
FUNCTION_CALLS = "function_calls"
|
|
31
|
+
EXECUTION_COUNT = "execution_count"
|
|
32
|
+
AVERAGE_TIME = "average_time"
|
|
33
|
+
MAX_TIME = "max_time"
|
|
34
|
+
MIN_TIME = "min_time"
|
|
35
|
+
|
|
36
|
+
@dataclass
|
|
37
|
+
class FunctionProfile:
|
|
38
|
+
"""Detailed profile information for a function."""
|
|
39
|
+
name: str
|
|
40
|
+
file_path: str
|
|
41
|
+
line_number: int
|
|
42
|
+
total_time: float
|
|
43
|
+
cumulative_time: float
|
|
44
|
+
call_count: int
|
|
45
|
+
per_call_time: float
|
|
46
|
+
cummulative_per_call_time: float
|
|
47
|
+
memory_before: float
|
|
48
|
+
memory_after: float
|
|
49
|
+
memory_delta: float
|
|
50
|
+
optimization_suggestions: List[str] = field(default_factory=list)
|
|
51
|
+
|
|
52
|
+
class PerformanceProfiler:
|
|
53
|
+
"""Advanced performance profiler with bottleneck detection."""
|
|
54
|
+
|
|
55
|
+
def __init__(self, context7_client=None):
|
|
56
|
+
self.context7 = context7_client
|
|
57
|
+
self.profiler = None
|
|
58
|
+
self.memory_profiler = None
|
|
59
|
+
self.line_profiler = None
|
|
60
|
+
self.realtime_monitor = None
|
|
61
|
+
self.profiles = {}
|
|
62
|
+
self.bottlenecks = []
|
|
63
|
+
|
|
64
|
+
def start_profiling(self, profile_types: List[str] = None):
|
|
65
|
+
"""Start performance profiling with specified types."""
|
|
66
|
+
if profile_types is None:
|
|
67
|
+
profile_types = ['cpu', 'memory']
|
|
68
|
+
|
|
69
|
+
# Start CPU profiling
|
|
70
|
+
if 'cpu' in profile_types:
|
|
71
|
+
self.profiler = cProfile.Profile()
|
|
72
|
+
self.profiler.enable()
|
|
73
|
+
|
|
74
|
+
# Start memory profiling
|
|
75
|
+
if 'memory' in profile_types:
|
|
76
|
+
tracemalloc.start()
|
|
77
|
+
self.memory_profiler = memory_profiler.Profile()
|
|
78
|
+
|
|
79
|
+
# Start line profiling for specific functions
|
|
80
|
+
if 'line' in profile_types:
|
|
81
|
+
self.line_profiler = line_profiler.LineProfiler()
|
|
82
|
+
self.line_profiler.enable_by_count()
|
|
83
|
+
|
|
84
|
+
def stop_profiling(self) -> Dict[str, Any]:
|
|
85
|
+
"""Stop profiling and collect results."""
|
|
86
|
+
results = {}
|
|
87
|
+
|
|
88
|
+
# Stop CPU profiling
|
|
89
|
+
if self.profiler:
|
|
90
|
+
self.profiler.disable()
|
|
91
|
+
results['cpu_profile'] = self._analyze_cpu_profile()
|
|
92
|
+
|
|
93
|
+
# Stop memory profiling
|
|
94
|
+
if tracemalloc.is_tracing():
|
|
95
|
+
current, peak = tracemalloc.get_traced_memory()
|
|
96
|
+
tracemalloc.stop()
|
|
97
|
+
results['memory_profile'] = {
|
|
98
|
+
'current_mb': current / 1024 / 1024,
|
|
99
|
+
'peak_mb': peak / 1024 / 1024
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if self.memory_profiler:
|
|
103
|
+
self.memory_profiler.disable()
|
|
104
|
+
results['memory_line_profile'] = self._analyze_memory_profile()
|
|
105
|
+
|
|
106
|
+
# Stop line profiling
|
|
107
|
+
if self.line_profiler:
|
|
108
|
+
self.line_profiler.disable()
|
|
109
|
+
results['line_profile'] = self._analyze_line_profile()
|
|
110
|
+
|
|
111
|
+
return results
|
|
112
|
+
|
|
113
|
+
def _analyze_cpu_profile(self) -> List[FunctionProfile]:
|
|
114
|
+
"""Analyze CPU profiling results."""
|
|
115
|
+
if not self.profiler:
|
|
116
|
+
return []
|
|
117
|
+
|
|
118
|
+
# Create stats object
|
|
119
|
+
s = io.StringIO()
|
|
120
|
+
ps = pstats.Stats(self.profiler, stream=s)
|
|
121
|
+
ps.sort_stats('cumulative')
|
|
122
|
+
ps.print_stats()
|
|
123
|
+
|
|
124
|
+
# Parse the stats
|
|
125
|
+
function_profiles = []
|
|
126
|
+
lines = s.getvalue().split('\n')
|
|
127
|
+
|
|
128
|
+
# Skip header lines
|
|
129
|
+
for line in lines[6:]:
|
|
130
|
+
if line.strip() and not line.startswith('ncalls'):
|
|
131
|
+
try:
|
|
132
|
+
parts = line.split()
|
|
133
|
+
if len(parts) >= 6:
|
|
134
|
+
ncalls = parts[0]
|
|
135
|
+
tottime = float(parts[1])
|
|
136
|
+
cumtime = float(parts[3])
|
|
137
|
+
|
|
138
|
+
# Extract function name and location
|
|
139
|
+
filename_func = ' '.join(parts[5:])
|
|
140
|
+
if '{' in filename_func:
|
|
141
|
+
filename, line_num, func_name = self._parse_function_line(filename_func)
|
|
142
|
+
else:
|
|
143
|
+
continue
|
|
144
|
+
|
|
145
|
+
# Convert ncalls to integer (handle format like "1000/1000")
|
|
146
|
+
if '/' in ncalls:
|
|
147
|
+
ncalls = int(ncalls.split('/')[0])
|
|
148
|
+
else:
|
|
149
|
+
ncalls = int(ncalls)
|
|
150
|
+
|
|
151
|
+
profile = FunctionProfile(
|
|
152
|
+
name=func_name,
|
|
153
|
+
file_path=filename,
|
|
154
|
+
line_number=int(line_num),
|
|
155
|
+
total_time=tottime,
|
|
156
|
+
cumulative_time=cumtime,
|
|
157
|
+
call_count=ncalls,
|
|
158
|
+
per_call_time=tottime / max(ncalls, 1),
|
|
159
|
+
cummulative_per_call_time=cumtime / max(ncalls, 1),
|
|
160
|
+
memory_before=0.0, # Will be filled by memory profiler
|
|
161
|
+
memory_after=0.0,
|
|
162
|
+
memory_delta=0.0
|
|
163
|
+
)
|
|
164
|
+
function_profiles.append(profile)
|
|
165
|
+
|
|
166
|
+
except (ValueError, IndexError) as e:
|
|
167
|
+
continue
|
|
168
|
+
|
|
169
|
+
return function_profiles
|
|
170
|
+
|
|
171
|
+
def _parse_function_line(self, line: str) -> tuple:
|
|
172
|
+
"""Parse function line from pstats output."""
|
|
173
|
+
# Format: "filename(line_number)function_name"
|
|
174
|
+
try:
|
|
175
|
+
paren_idx = line.rfind('(')
|
|
176
|
+
if paren_idx == -1:
|
|
177
|
+
return line, "0", "unknown"
|
|
178
|
+
|
|
179
|
+
filename = line[:paren_idx]
|
|
180
|
+
rest = line[paren_idx:]
|
|
181
|
+
|
|
182
|
+
closing_idx = rest.find(')')
|
|
183
|
+
if closing_idx == -1:
|
|
184
|
+
return filename, "0", "unknown"
|
|
185
|
+
|
|
186
|
+
line_num = rest[1:closing_idx]
|
|
187
|
+
func_name = rest[closing_idx + 1:]
|
|
188
|
+
|
|
189
|
+
return filename, line_num, func_name
|
|
190
|
+
except Exception:
|
|
191
|
+
return line, "0", "unknown"
|
|
192
|
+
|
|
193
|
+
def _analyze_memory_profile(self) -> Dict[str, Any]:
|
|
194
|
+
"""Analyze memory profiling results."""
|
|
195
|
+
if not self.memory_profiler:
|
|
196
|
+
return {}
|
|
197
|
+
|
|
198
|
+
# Get memory profile statistics
|
|
199
|
+
stats = self.memory_profiler.get_stats()
|
|
200
|
+
|
|
201
|
+
return {
|
|
202
|
+
'total_samples': len(stats),
|
|
203
|
+
'max_memory_usage': max((stat[2] for stat in stats), default=0),
|
|
204
|
+
'memory_by_function': self._group_memory_by_function(stats)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
def _group_memory_by_function(self, stats: List) -> Dict[str, float]:
|
|
208
|
+
"""Group memory usage by function."""
|
|
209
|
+
memory_by_function = defaultdict(float)
|
|
210
|
+
|
|
211
|
+
for stat in stats:
|
|
212
|
+
filename, line_no, mem_usage = stat
|
|
213
|
+
# Extract function name from filename and line
|
|
214
|
+
func_key = f"{filename}:{line_no}"
|
|
215
|
+
memory_by_function[func_key] += mem_usage
|
|
216
|
+
|
|
217
|
+
return dict(memory_by_function)
|
|
218
|
+
|
|
219
|
+
def _analyze_line_profile(self) -> Dict[str, Any]:
|
|
220
|
+
"""Analyze line profiling results."""
|
|
221
|
+
if not self.line_profiler:
|
|
222
|
+
return {}
|
|
223
|
+
|
|
224
|
+
# Get line profiler statistics
|
|
225
|
+
stats = self.line_profiler.get_stats()
|
|
226
|
+
|
|
227
|
+
return {
|
|
228
|
+
'timings': stats.timings,
|
|
229
|
+
'unit': stats.unit
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Usage Examples
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
# Initialize performance profiler
|
|
237
|
+
profiler = PerformanceProfiler(context7_client=context7)
|
|
238
|
+
|
|
239
|
+
# Example function to profile
|
|
240
|
+
def expensive_function(n):
|
|
241
|
+
result = []
|
|
242
|
+
for i in range(n):
|
|
243
|
+
# Simulate expensive computation
|
|
244
|
+
temp = []
|
|
245
|
+
for j in range(i):
|
|
246
|
+
temp.append(j * j)
|
|
247
|
+
result.extend(temp)
|
|
248
|
+
return result
|
|
249
|
+
|
|
250
|
+
# Start profiling
|
|
251
|
+
profiler.start_profiling(['cpu', 'memory', 'line'])
|
|
252
|
+
|
|
253
|
+
# Add line profiler for specific function
|
|
254
|
+
if profiler.line_profiler:
|
|
255
|
+
profiler.line_profiler.add_function(expensive_function)
|
|
256
|
+
|
|
257
|
+
# Run the code to be profiled
|
|
258
|
+
result = expensive_function(1000)
|
|
259
|
+
|
|
260
|
+
# Stop profiling and get results
|
|
261
|
+
profile_results = profiler.stop_profiling()
|
|
262
|
+
|
|
263
|
+
print(f"CPU Profile: {len(profile_results.get('cpu_profile', []))} functions")
|
|
264
|
+
print(f"Memory Peak: {profile_results.get('memory_profile', {}).get('peak_mb', 0):.2f} MB")
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Best Practices
|
|
268
|
+
|
|
269
|
+
1. **Profile Types**: Start with CPU and memory profiling, add line profiling for specific functions
|
|
270
|
+
2. **Baseline Measurement**: Always profile before optimization
|
|
271
|
+
3. **Realistic Workloads**: Profile with production-like data and patterns
|
|
272
|
+
4. **Multiple Runs**: Profile multiple times to account for variability
|
|
273
|
+
5. **Statistical Significance**: Ensure sufficient execution time for accurate measurements
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
Related: [Real-Time Monitoring](./real-time-monitoring.md) | [Bottleneck Detection](./bottleneck-detection.md)
|