moai-adk 0.32.8__py3-none-any.whl → 0.41.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/cli/commands/init.py +4 -1
- moai_adk/cli/commands/update.py +31 -26
- moai_adk/cli/worktree/cli.py +54 -43
- moai_adk/cli/worktree/manager.py +17 -14
- moai_adk/cli/worktree/registry.py +313 -19
- moai_adk/core/config/unified.py +237 -63
- 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/language_config_resolver.py +96 -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/project/backup_utils.py +9 -1
- moai_adk/core/project/initializer.py +33 -96
- moai_adk/core/project/phase_executor.py +79 -33
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/realtime_monitoring_dashboard.py +3 -3
- moai_adk/core/rollback_manager.py +46 -19
- moai_adk/core/template/backup.py +4 -3
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +144 -9
- 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/project/configuration.py +1 -1
- moai_adk/statusline/config.py +5 -2
- moai_adk/statusline/main.py +58 -0
- moai_adk/statusline/renderer.py +56 -84
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
- moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
- moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
- moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
- moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
- moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
- moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
- moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +55 -4
- moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
- moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
- moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
- moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
- moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
- moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
- moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
- moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
- moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
- moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
- moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -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_manager.py +12 -14
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
- 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/tool_registry.py +804 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +40 -24
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +248 -32
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
- moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
- moai_adk/templates/.claude/settings.json +44 -6
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +303 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -196
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
- 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 +234 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +19 -13
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +21 -14
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -425
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- 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-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +17 -15
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +105 -315
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +197 -154
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- 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-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-memory-official.md +2 -2
- 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 +432 -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-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +33 -134
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
- 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-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +17 -16
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +431 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +194 -0
- 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 +395 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +473 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +378 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +419 -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 +384 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +505 -0
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +490 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +433 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -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 +17 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +378 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +212 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- 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-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +192 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- 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-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +365 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +94 -227
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +26 -6
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- 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-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +17 -13
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +284 -0
- 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 +426 -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 +229 -0
- 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 +250 -0
- 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 +231 -0
- 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 +206 -0
- 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 +224 -0
- 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 +207 -0
- 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 +210 -0
- 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-plugin-builder/SKILL.md +474 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +307 -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-tool-opencode/SKILL.md +215 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
- moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +190 -424
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +188 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +284 -212
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +337 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +13 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +222 -367
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- 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-testing/reference.md +440 -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 +168 -50
- moai_adk/templates/.gitignore +0 -3
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +5 -12
- moai_adk/templates/.moai/config/config.yaml +20 -306
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
- moai_adk/templates/.moai/config/sections/language.yaml +7 -7
- moai_adk/templates/.moai/config/sections/project.yaml +1 -1
- moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
- moai_adk/templates/.moai/config/sections/system.yaml +11 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
- moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
- moai_adk/templates/CLAUDE.md +578 -154
- moai_adk/utils/common.py +33 -0
- moai_adk/version.py +1 -1
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/METADATA +905 -109
- moai_adk-0.41.2.dist-info/RECORD +683 -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/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
- 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 -135
- 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 -410
- 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/cache/personalization.json +0 -10
- moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
- moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
- moai_adk/templates/.moai/config/presets/team.yaml +0 -33
- moai_adk-0.32.8.dist-info/RECORD +0 -396
- /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.32.8.dist-info → moai_adk-0.41.2.dist-info}/WHEEL +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# AI-Powered Optimization
|
|
2
|
+
|
|
3
|
+
> Module: Intelligent optimization suggestions using Context7
|
|
4
|
+
> Complexity: Advanced
|
|
5
|
+
> Time: 20+ minutes
|
|
6
|
+
> Dependencies: Context7 MCP, asyncio
|
|
7
|
+
|
|
8
|
+
## Core Implementation
|
|
9
|
+
|
|
10
|
+
### Intelligent Optimizer
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
from typing import Dict, List, Any
|
|
14
|
+
import asyncio
|
|
15
|
+
|
|
16
|
+
class IntelligentOptimizer:
|
|
17
|
+
"""Optimizer that uses AI to suggest the best optimizations."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, context7_client=None):
|
|
20
|
+
self.context7 = context7_client
|
|
21
|
+
self.optimization_history = []
|
|
22
|
+
self.performance_models = {}
|
|
23
|
+
|
|
24
|
+
async def get_ai_optimization_suggestions(
|
|
25
|
+
self, bottlenecks: List[PerformanceBottleneck],
|
|
26
|
+
codebase_context: Dict[str, Any]
|
|
27
|
+
) -> Dict[str, Any]:
|
|
28
|
+
"""Get AI-powered optimization suggestions using Context7."""
|
|
29
|
+
|
|
30
|
+
if not self.context7:
|
|
31
|
+
return self._get_rule_based_suggestions(bottlenecks)
|
|
32
|
+
|
|
33
|
+
# Get latest performance optimization patterns
|
|
34
|
+
try:
|
|
35
|
+
optimization_patterns = await self.context7.get_library_docs(
|
|
36
|
+
context7_library_id="/performance/python-profiling",
|
|
37
|
+
topic="advanced performance optimization patterns 2025",
|
|
38
|
+
tokens=5000
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Get algorithm complexity patterns
|
|
42
|
+
algorithm_patterns = await self.context7.get_library_docs(
|
|
43
|
+
context7_library_id="/algorithms/python",
|
|
44
|
+
topic="algorithm optimization big-O complexity reduction",
|
|
45
|
+
tokens=3000
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
# Generate AI suggestions
|
|
49
|
+
ai_suggestions = await self._generate_ai_suggestions(
|
|
50
|
+
bottlenecks, optimization_patterns, algorithm_patterns, codebase_context
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return ai_suggestions
|
|
54
|
+
|
|
55
|
+
except Exception as e:
|
|
56
|
+
print(f"AI optimization failed: {e}")
|
|
57
|
+
return self._get_rule_based_suggestions(bottlenecks)
|
|
58
|
+
|
|
59
|
+
async def _generate_ai_suggestions(
|
|
60
|
+
self, bottlenecks: List[PerformanceBottleneck],
|
|
61
|
+
opt_patterns: Dict, algo_patterns: Dict, context: Dict
|
|
62
|
+
) -> Dict[str, Any]:
|
|
63
|
+
"""Generate AI-powered optimization suggestions."""
|
|
64
|
+
|
|
65
|
+
suggestions = {
|
|
66
|
+
'algorithm_improvements': [],
|
|
67
|
+
'data_structure_optimizations': [],
|
|
68
|
+
'concurrency_improvements': [],
|
|
69
|
+
'caching_strategies': [],
|
|
70
|
+
'io_optimizations': []
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
for bottleneck in bottlenecks:
|
|
74
|
+
# Analyze bottleneck characteristics
|
|
75
|
+
if bottleneck.bottleneck_type == "cpu":
|
|
76
|
+
# Check for algorithmic improvements
|
|
77
|
+
if "O(" in bottleneck.description or any(
|
|
78
|
+
keyword in bottleneck.description.lower()
|
|
79
|
+
for keyword in ["loop", "iteration", "search", "sort"]
|
|
80
|
+
):
|
|
81
|
+
improvement = self._suggest_algorithm_improvement(
|
|
82
|
+
bottleneck, algo_patterns
|
|
83
|
+
)
|
|
84
|
+
suggestions['algorithm_improvements'].append(improvement)
|
|
85
|
+
|
|
86
|
+
# Check for concurrency opportunities
|
|
87
|
+
if bottleneck.metrics.get('call_count', 0) > 1000:
|
|
88
|
+
concurrency = self._suggest_concurrency_improvement(bottleneck)
|
|
89
|
+
suggestions['concurrency_improvements'].append(concurrency)
|
|
90
|
+
|
|
91
|
+
elif bottleneck.bottleneck_type == "memory":
|
|
92
|
+
# Suggest data structure optimizations
|
|
93
|
+
data_structure = self._suggest_data_structure_improvement(
|
|
94
|
+
bottleneck, opt_patterns
|
|
95
|
+
)
|
|
96
|
+
suggestions['data_structure_optimizations'].append(data_structure)
|
|
97
|
+
|
|
98
|
+
return suggestions
|
|
99
|
+
|
|
100
|
+
def _suggest_algorithm_improvement(
|
|
101
|
+
self, bottleneck: PerformanceBottleneck, algo_patterns: Dict
|
|
102
|
+
) -> Dict[str, Any]:
|
|
103
|
+
"""Suggest algorithmic improvements based on Context7 patterns."""
|
|
104
|
+
|
|
105
|
+
# Analyze function name and code to identify algorithm type
|
|
106
|
+
function_name = bottleneck.function_name.lower()
|
|
107
|
+
|
|
108
|
+
suggestions = []
|
|
109
|
+
|
|
110
|
+
if any(keyword in function_name for keyword in ["search", "find"]):
|
|
111
|
+
suggestions.extend([
|
|
112
|
+
"Consider using binary search for sorted data",
|
|
113
|
+
"Implement hash-based lookup for O(1) average case",
|
|
114
|
+
"Use trie structures for prefix searches"
|
|
115
|
+
])
|
|
116
|
+
|
|
117
|
+
elif any(keyword in function_name for keyword in ["sort", "order"]):
|
|
118
|
+
suggestions.extend([
|
|
119
|
+
"Consider using Timsort (Python's built-in sort)",
|
|
120
|
+
"Use radix sort for uniform integer data",
|
|
121
|
+
"Implement bucket sort for uniformly distributed data"
|
|
122
|
+
])
|
|
123
|
+
|
|
124
|
+
elif "nested" in function_name or bottleneck.metrics.get('per_call_time', 0) > 0.1:
|
|
125
|
+
suggestions.extend([
|
|
126
|
+
"Look for O(n²) nested loops to optimize",
|
|
127
|
+
"Consider dynamic programming for overlapping subproblems",
|
|
128
|
+
"Use memoization to avoid repeated calculations"
|
|
129
|
+
])
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
'bottleneck': bottleneck.function_name,
|
|
133
|
+
'suggestions': suggestions,
|
|
134
|
+
'estimated_improvement': "30-90% depending on algorithm",
|
|
135
|
+
'implementation_complexity': "medium to high"
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
def _suggest_concurrency_improvement(
|
|
139
|
+
self, bottleneck: PerformanceBottleneck
|
|
140
|
+
) -> Dict[str, Any]:
|
|
141
|
+
"""Suggest concurrency improvements."""
|
|
142
|
+
|
|
143
|
+
return {
|
|
144
|
+
'bottleneck': bottleneck.function_name,
|
|
145
|
+
'suggestions': [
|
|
146
|
+
"Implement multiprocessing for CPU-bound tasks",
|
|
147
|
+
"Use threading for I/O-bound operations",
|
|
148
|
+
"Consider asyncio for concurrent I/O operations",
|
|
149
|
+
"Use concurrent.futures for thread/process pool execution"
|
|
150
|
+
],
|
|
151
|
+
'estimated_improvement': "2-8x speedup on multi-core systems",
|
|
152
|
+
'implementation_complexity': "medium"
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
def _suggest_data_structure_improvement(
|
|
156
|
+
self, bottleneck: PerformanceBottleneck, opt_patterns: Dict
|
|
157
|
+
) -> Dict[str, Any]:
|
|
158
|
+
"""Suggest data structure optimizations."""
|
|
159
|
+
|
|
160
|
+
return {
|
|
161
|
+
'bottleneck': bottleneck.function_name,
|
|
162
|
+
'suggestions': [
|
|
163
|
+
"Use generators instead of lists for large datasets",
|
|
164
|
+
"Implement lazy loading for expensive data structures",
|
|
165
|
+
"Use memoryviews or numpy arrays for numerical data",
|
|
166
|
+
"Consider using collections.deque for queue operations",
|
|
167
|
+
"Use set/dict for O(1) lookups instead of list searches"
|
|
168
|
+
],
|
|
169
|
+
'estimated_improvement': "30-80% memory reduction",
|
|
170
|
+
'implementation_complexity': "low to medium"
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
def _get_rule_based_suggestions(
|
|
174
|
+
self, bottlenecks: List[PerformanceBottleneck]
|
|
175
|
+
) -> Dict[str, Any]:
|
|
176
|
+
"""Generate rule-based optimization suggestions."""
|
|
177
|
+
|
|
178
|
+
suggestions = {
|
|
179
|
+
'algorithm_improvements': [],
|
|
180
|
+
'data_structure_optimizations': [],
|
|
181
|
+
'concurrency_improvements': [],
|
|
182
|
+
'caching_strategies': [],
|
|
183
|
+
'io_optimizations': []
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
for bottleneck in bottlenecks:
|
|
187
|
+
if bottleneck.bottleneck_type == "cpu":
|
|
188
|
+
if bottleneck.metrics.get('call_count', 0) > 1000:
|
|
189
|
+
suggestions['caching_strategies'].append({
|
|
190
|
+
'bottleneck': bottleneck.function_name,
|
|
191
|
+
'suggestions': [
|
|
192
|
+
"Implement functools.lru_cache decorator",
|
|
193
|
+
"Add custom memoization for expensive operations",
|
|
194
|
+
"Cache database query results"
|
|
195
|
+
]
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
elif bottleneck.bottleneck_type == "memory":
|
|
199
|
+
suggestions['data_structure_optimizations'].append({
|
|
200
|
+
'bottleneck': bottleneck.function_name,
|
|
201
|
+
'suggestions': [
|
|
202
|
+
"Use generators (yield) instead of lists",
|
|
203
|
+
"Implement lazy evaluation patterns",
|
|
204
|
+
"Use __slots__ for classes with many instances"
|
|
205
|
+
]
|
|
206
|
+
})
|
|
207
|
+
|
|
208
|
+
return suggestions
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Usage Examples
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
# Get AI-powered optimization suggestions
|
|
215
|
+
optimizer = IntelligentOptimizer(context7_client=context7)
|
|
216
|
+
ai_suggestions = await optimizer.get_ai_optimization_suggestions(
|
|
217
|
+
bottlenecks,
|
|
218
|
+
codebase_context={'project_type': 'web_api', 'language': 'python'}
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
print("AI Optimization Suggestions:")
|
|
222
|
+
for category, items in ai_suggestions.items():
|
|
223
|
+
if items:
|
|
224
|
+
print(f"\n{category.replace('_', ' ').title()}:")
|
|
225
|
+
for item in items:
|
|
226
|
+
print(f" - {item['bottleneck']}")
|
|
227
|
+
for suggestion in item['suggestions']:
|
|
228
|
+
print(f" • {suggestion}")
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Best Practices
|
|
232
|
+
|
|
233
|
+
1. **Context7 Integration**: Use latest documentation for up-to-date patterns
|
|
234
|
+
2. **Hybrid Approach**: Combine AI suggestions with rule-based heuristics
|
|
235
|
+
3. **Codebase Context**: Provide project context for better recommendations
|
|
236
|
+
4. **Learning System**: Track optimization history for continuous improvement
|
|
237
|
+
5. **Validation**: Always validate AI suggestions with performance tests
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
Related: [Optimization Plan](./optimization-plan.md) | [Profiler Core](./profiler-core.md)
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
# Bottleneck Detection
|
|
2
|
+
|
|
3
|
+
> Module: Performance bottleneck detection and analysis
|
|
4
|
+
> Complexity: Advanced
|
|
5
|
+
> Time: 25+ minutes
|
|
6
|
+
> Dependencies: asyncio, Context7 MCP
|
|
7
|
+
|
|
8
|
+
## Core Implementation
|
|
9
|
+
|
|
10
|
+
### Bottleneck Detection System
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
from typing import Dict, List, Any, Optional
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from enum import Enum
|
|
16
|
+
import asyncio
|
|
17
|
+
|
|
18
|
+
class OptimizationType(Enum):
|
|
19
|
+
"""Types of performance optimizations."""
|
|
20
|
+
ALGORITHM_IMPROVEMENT = "algorithm_improvement"
|
|
21
|
+
CACHING = "caching"
|
|
22
|
+
CONCURRENCY = "concurrency"
|
|
23
|
+
MEMORY_OPTIMIZATION = "memory_optimization"
|
|
24
|
+
I_O_OPTIMIZATION = "io_optimization"
|
|
25
|
+
DATABASE_OPTIMIZATION = "database_optimization"
|
|
26
|
+
DATA_STRUCTURE_CHANGE = "data_structure_change"
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class PerformanceBottleneck:
|
|
30
|
+
"""Identified performance bottleneck with analysis."""
|
|
31
|
+
function_name: str
|
|
32
|
+
file_path: str
|
|
33
|
+
line_number: int
|
|
34
|
+
bottleneck_type: str # "cpu", "memory", "io", "algorithm"
|
|
35
|
+
severity: str # "low", "medium", "high", "critical"
|
|
36
|
+
impact_score: float # 0.0 to 1.0
|
|
37
|
+
description: str
|
|
38
|
+
metrics: Dict[str, float]
|
|
39
|
+
optimization_type: OptimizationType
|
|
40
|
+
suggested_fixes: List[str]
|
|
41
|
+
estimated_improvement: str
|
|
42
|
+
code_snippet: str
|
|
43
|
+
|
|
44
|
+
class BottleneckDetector:
|
|
45
|
+
"""Detect and analyze performance bottlenecks."""
|
|
46
|
+
|
|
47
|
+
def __init__(self, profiler):
|
|
48
|
+
self.profiler = profiler
|
|
49
|
+
|
|
50
|
+
async def detect_bottlenecks(
|
|
51
|
+
self, profile_results: Dict[str, Any],
|
|
52
|
+
context7_patterns: Dict[str, Any] = None
|
|
53
|
+
) -> List[PerformanceBottleneck]:
|
|
54
|
+
"""Detect performance bottlenecks from profiling results."""
|
|
55
|
+
|
|
56
|
+
bottlenecks = []
|
|
57
|
+
|
|
58
|
+
# Analyze CPU bottlenecks
|
|
59
|
+
if 'cpu_profile' in profile_results:
|
|
60
|
+
cpu_bottlenecks = await self._detect_cpu_bottlenecks(
|
|
61
|
+
profile_results['cpu_profile'], context7_patterns
|
|
62
|
+
)
|
|
63
|
+
bottlenecks.extend(cpu_bottlenecks)
|
|
64
|
+
|
|
65
|
+
# Analyze memory bottlenecks
|
|
66
|
+
if 'memory_profile' in profile_results:
|
|
67
|
+
memory_bottlenecks = await self._detect_memory_bottlenecks(
|
|
68
|
+
profile_results['memory_profile'], context7_patterns
|
|
69
|
+
)
|
|
70
|
+
bottlenecks.extend(memory_bottlenecks)
|
|
71
|
+
|
|
72
|
+
# Analyze real-time metrics
|
|
73
|
+
if 'realtime_metrics' in profile_results:
|
|
74
|
+
realtime_bottlenecks = await self._detect_realtime_bottlenecks(
|
|
75
|
+
profile_results['realtime_metrics'], context7_patterns
|
|
76
|
+
)
|
|
77
|
+
bottlenecks.extend(realtime_bottlenecks)
|
|
78
|
+
|
|
79
|
+
# Sort by impact score
|
|
80
|
+
bottlenecks.sort(key=lambda x: x.impact_score, reverse=True)
|
|
81
|
+
return bottlenecks
|
|
82
|
+
|
|
83
|
+
async def _detect_cpu_bottlenecks(
|
|
84
|
+
self, cpu_profiles: List,
|
|
85
|
+
context7_patterns: Dict[str, Any] = None
|
|
86
|
+
) -> List[PerformanceBottleneck]:
|
|
87
|
+
"""Detect CPU-related bottlenecks."""
|
|
88
|
+
|
|
89
|
+
bottlenecks = []
|
|
90
|
+
total_cpu_time = sum(p.cumulative_time for p in cpu_profiles)
|
|
91
|
+
|
|
92
|
+
for profile in cpu_profiles:
|
|
93
|
+
# Skip functions with very low total time
|
|
94
|
+
if profile.cumulative_time < 0.01:
|
|
95
|
+
continue
|
|
96
|
+
|
|
97
|
+
# Calculate impact score
|
|
98
|
+
impact_score = profile.cumulative_time / max(total_cpu_time, 0.001)
|
|
99
|
+
|
|
100
|
+
# Determine severity
|
|
101
|
+
if impact_score > 0.5:
|
|
102
|
+
severity = "critical"
|
|
103
|
+
elif impact_score > 0.2:
|
|
104
|
+
severity = "high"
|
|
105
|
+
elif impact_score > 0.1:
|
|
106
|
+
severity = "medium"
|
|
107
|
+
else:
|
|
108
|
+
severity = "low"
|
|
109
|
+
|
|
110
|
+
# Get code snippet
|
|
111
|
+
code_snippet = self._get_code_snippet(profile.file_path, profile.line_number)
|
|
112
|
+
|
|
113
|
+
# Generate optimization suggestions
|
|
114
|
+
optimization_type, suggestions, estimated_improvement = await self._generate_cpu_optimization_suggestions(
|
|
115
|
+
profile, context7_patterns
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
bottleneck = PerformanceBottleneck(
|
|
119
|
+
function_name=profile.name,
|
|
120
|
+
file_path=profile.file_path,
|
|
121
|
+
line_number=profile.line_number,
|
|
122
|
+
bottleneck_type="cpu",
|
|
123
|
+
severity=severity,
|
|
124
|
+
impact_score=impact_score,
|
|
125
|
+
description=f"Function '{profile.name}' consumes {impact_score:.1%} of total CPU time",
|
|
126
|
+
metrics={
|
|
127
|
+
'cumulative_time': profile.cumulative_time,
|
|
128
|
+
'total_time': profile.total_time,
|
|
129
|
+
'call_count': profile.call_count,
|
|
130
|
+
'per_call_time': profile.per_call_time
|
|
131
|
+
},
|
|
132
|
+
optimization_type=optimization_type,
|
|
133
|
+
suggested_fixes=suggestions,
|
|
134
|
+
estimated_improvement=estimated_improvement,
|
|
135
|
+
code_snippet=code_snippet
|
|
136
|
+
)
|
|
137
|
+
bottlenecks.append(bottleneck)
|
|
138
|
+
|
|
139
|
+
return bottlenecks
|
|
140
|
+
|
|
141
|
+
async def _detect_memory_bottlenecks(
|
|
142
|
+
self, memory_profile: Dict[str, Any],
|
|
143
|
+
context7_patterns: Dict[str, Any] = None
|
|
144
|
+
) -> List[PerformanceBottleneck]:
|
|
145
|
+
"""Detect memory-related bottlenecks."""
|
|
146
|
+
|
|
147
|
+
bottlenecks = []
|
|
148
|
+
|
|
149
|
+
if 'memory_line_profile' in memory_profile:
|
|
150
|
+
memory_by_function = memory_profile['memory_line_profile'].get('memory_by_function', {})
|
|
151
|
+
|
|
152
|
+
if memory_by_function:
|
|
153
|
+
max_memory = max(memory_by_function.values())
|
|
154
|
+
|
|
155
|
+
for func_key, memory_usage in memory_by_function.items():
|
|
156
|
+
# Skip very small memory usage
|
|
157
|
+
if memory_usage < 1024 * 1024: # 1MB
|
|
158
|
+
continue
|
|
159
|
+
|
|
160
|
+
# Calculate impact score
|
|
161
|
+
impact_score = memory_usage / max(max_memory, 1)
|
|
162
|
+
|
|
163
|
+
# Determine severity
|
|
164
|
+
if impact_score > 0.7:
|
|
165
|
+
severity = "critical"
|
|
166
|
+
elif impact_score > 0.4:
|
|
167
|
+
severity = "high"
|
|
168
|
+
elif impact_score > 0.2:
|
|
169
|
+
severity = "medium"
|
|
170
|
+
else:
|
|
171
|
+
severity = "low"
|
|
172
|
+
|
|
173
|
+
# Extract file path and line number
|
|
174
|
+
if ':' in func_key:
|
|
175
|
+
file_path, line_num = func_key.split(':', 1)
|
|
176
|
+
line_number = int(line_num)
|
|
177
|
+
else:
|
|
178
|
+
continue
|
|
179
|
+
|
|
180
|
+
# Get code snippet
|
|
181
|
+
code_snippet = self._get_code_snippet(file_path, line_number)
|
|
182
|
+
|
|
183
|
+
# Generate optimization suggestions
|
|
184
|
+
optimization_type, suggestions, estimated_improvement = await self._generate_memory_optimization_suggestions(
|
|
185
|
+
memory_usage, context7_patterns
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
bottleneck = PerformanceBottleneck(
|
|
189
|
+
function_name=f"Function at {func_key}",
|
|
190
|
+
file_path=file_path,
|
|
191
|
+
line_number=line_number,
|
|
192
|
+
bottleneck_type="memory",
|
|
193
|
+
severity=severity,
|
|
194
|
+
impact_score=impact_score,
|
|
195
|
+
description=f"High memory usage: {memory_usage / 1024 / 1024:.1f}MB",
|
|
196
|
+
metrics={
|
|
197
|
+
'memory_usage_mb': memory_usage / 1024 / 1024,
|
|
198
|
+
'impact_score': impact_score
|
|
199
|
+
},
|
|
200
|
+
optimization_type=optimization_type,
|
|
201
|
+
suggested_fixes=suggestions,
|
|
202
|
+
estimated_improvement=estimated_improvement,
|
|
203
|
+
code_snippet=code_snippet
|
|
204
|
+
)
|
|
205
|
+
bottlenecks.append(bottleneck)
|
|
206
|
+
|
|
207
|
+
return bottlenecks
|
|
208
|
+
|
|
209
|
+
async def _detect_realtime_bottlenecks(
|
|
210
|
+
self, realtime_metrics: Dict[str, Any],
|
|
211
|
+
context7_patterns: Dict[str, Any] = None
|
|
212
|
+
) -> List[PerformanceBottleneck]:
|
|
213
|
+
"""Detect bottlenecks from real-time monitoring."""
|
|
214
|
+
|
|
215
|
+
bottlenecks = []
|
|
216
|
+
|
|
217
|
+
# Check CPU usage
|
|
218
|
+
avg_cpu = realtime_metrics.get('avg_cpu_percent', 0)
|
|
219
|
+
if avg_cpu > 80:
|
|
220
|
+
bottleneck = PerformanceBottleneck(
|
|
221
|
+
function_name="System CPU Usage",
|
|
222
|
+
file_path="system",
|
|
223
|
+
line_number=0,
|
|
224
|
+
bottleneck_type="cpu",
|
|
225
|
+
severity="high" if avg_cpu > 90 else "medium",
|
|
226
|
+
impact_score=avg_cpu / 100.0,
|
|
227
|
+
description=f"High average CPU usage: {avg_cpu:.1f}%",
|
|
228
|
+
metrics={'avg_cpu_percent': avg_cpu},
|
|
229
|
+
optimization_type=OptimizationType.CONCURRENCY,
|
|
230
|
+
suggested_fixes=[
|
|
231
|
+
"Implement parallel processing",
|
|
232
|
+
"Optimize algorithms",
|
|
233
|
+
"Add caching for expensive operations"
|
|
234
|
+
],
|
|
235
|
+
estimated_improvement="20-50% reduction in CPU usage",
|
|
236
|
+
code_snippet="# System-wide optimization required"
|
|
237
|
+
)
|
|
238
|
+
bottlenecks.append(bottleneck)
|
|
239
|
+
|
|
240
|
+
# Check memory usage
|
|
241
|
+
avg_memory = realtime_metrics.get('avg_memory_percent', 0)
|
|
242
|
+
if avg_memory > 75:
|
|
243
|
+
bottleneck = PerformanceBottleneck(
|
|
244
|
+
function_name="System Memory Usage",
|
|
245
|
+
file_path="system",
|
|
246
|
+
line_number=0,
|
|
247
|
+
bottleneck_type="memory",
|
|
248
|
+
severity="high" if avg_memory > 85 else "medium",
|
|
249
|
+
impact_score=avg_memory / 100.0,
|
|
250
|
+
description=f"High average memory usage: {avg_memory:.1f}%",
|
|
251
|
+
metrics={'avg_memory_percent': avg_memory},
|
|
252
|
+
optimization_type=OptimizationType.MEMORY_OPTIMIZATION,
|
|
253
|
+
suggested_fixes=[
|
|
254
|
+
"Implement memory pooling",
|
|
255
|
+
"Use generators instead of lists",
|
|
256
|
+
"Optimize data structures",
|
|
257
|
+
"Implement object caching with size limits"
|
|
258
|
+
],
|
|
259
|
+
estimated_improvement="30-60% reduction in memory usage",
|
|
260
|
+
code_snippet="# System-wide memory optimization required"
|
|
261
|
+
)
|
|
262
|
+
bottlenecks.append(bottleneck)
|
|
263
|
+
|
|
264
|
+
return bottlenecks
|
|
265
|
+
|
|
266
|
+
async def _generate_cpu_optimization_suggestions(
|
|
267
|
+
self, profile,
|
|
268
|
+
context7_patterns: Dict[str, Any] = None
|
|
269
|
+
) -> tuple:
|
|
270
|
+
"""Generate CPU optimization suggestions for a function."""
|
|
271
|
+
|
|
272
|
+
suggestions = []
|
|
273
|
+
optimization_type = OptimizationType.ALGORITHM_IMPROVEMENT
|
|
274
|
+
|
|
275
|
+
# Analyze function characteristics
|
|
276
|
+
if profile.call_count > 10000 and profile.per_call_time > 0.001:
|
|
277
|
+
optimization_type = OptimizationType.CACHING
|
|
278
|
+
suggestions.extend([
|
|
279
|
+
"Implement memoization for expensive function calls",
|
|
280
|
+
"Add LRU cache for frequently called functions",
|
|
281
|
+
"Consider using functools.lru_cache"
|
|
282
|
+
])
|
|
283
|
+
estimated_improvement = "50-90% for repeated calls"
|
|
284
|
+
|
|
285
|
+
elif profile.cumulative_time > 1.0 and profile.call_count > 100:
|
|
286
|
+
suggestions.extend([
|
|
287
|
+
"Analyze algorithm complexity",
|
|
288
|
+
"Look for O(n²) or worse operations",
|
|
289
|
+
"Consider using more efficient data structures"
|
|
290
|
+
])
|
|
291
|
+
estimated_improvement = "20-80% depending on algorithm"
|
|
292
|
+
|
|
293
|
+
elif profile.call_count < 10 and profile.cumulative_time > 0.5:
|
|
294
|
+
suggestions.extend([
|
|
295
|
+
"Consider parallel processing for long-running operations",
|
|
296
|
+
"Implement asynchronous processing",
|
|
297
|
+
"Use multiprocessing for CPU-bound tasks"
|
|
298
|
+
])
|
|
299
|
+
optimization_type = OptimizationType.CONCURRENCY
|
|
300
|
+
estimated_improvement = "30-70% with proper concurrency"
|
|
301
|
+
|
|
302
|
+
else:
|
|
303
|
+
suggestions.extend([
|
|
304
|
+
"Profile line-by-line to identify slow operations",
|
|
305
|
+
"Check for unnecessary loops or computations",
|
|
306
|
+
"Optimize string operations and regular expressions"
|
|
307
|
+
])
|
|
308
|
+
estimated_improvement = "10-40% with micro-optimizations"
|
|
309
|
+
|
|
310
|
+
return optimization_type, suggestions, estimated_improvement
|
|
311
|
+
|
|
312
|
+
async def _generate_memory_optimization_suggestions(
|
|
313
|
+
self, memory_usage: int,
|
|
314
|
+
context7_patterns: Dict[str, Any] = None
|
|
315
|
+
) -> tuple:
|
|
316
|
+
"""Generate memory optimization suggestions."""
|
|
317
|
+
|
|
318
|
+
suggestions = []
|
|
319
|
+
optimization_type = OptimizationType.MEMORY_OPTIMIZATION
|
|
320
|
+
|
|
321
|
+
if memory_usage > 100 * 1024 * 1024: # 100MB
|
|
322
|
+
suggestions.extend([
|
|
323
|
+
"Implement streaming processing for large datasets",
|
|
324
|
+
"Use generators instead of creating large lists",
|
|
325
|
+
"Process data in chunks to reduce memory footprint"
|
|
326
|
+
])
|
|
327
|
+
estimated_improvement = "60-90% memory reduction"
|
|
328
|
+
|
|
329
|
+
elif memory_usage > 10 * 1024 * 1024: # 10MB
|
|
330
|
+
suggestions.extend([
|
|
331
|
+
"Use memory-efficient data structures",
|
|
332
|
+
"Implement object pooling for frequently allocated objects",
|
|
333
|
+
"Consider using numpy arrays for numerical data"
|
|
334
|
+
])
|
|
335
|
+
estimated_improvement = "30-60% memory reduction"
|
|
336
|
+
|
|
337
|
+
else:
|
|
338
|
+
suggestions.extend([
|
|
339
|
+
"Release unused objects explicitly",
|
|
340
|
+
"Use weak references for caching",
|
|
341
|
+
"Avoid circular references"
|
|
342
|
+
])
|
|
343
|
+
estimated_improvement = "10-30% memory reduction"
|
|
344
|
+
|
|
345
|
+
return optimization_type, suggestions, estimated_improvement
|
|
346
|
+
|
|
347
|
+
def _get_code_snippet(self, file_path: str, line_number: int, context_lines: int = 5) -> str:
|
|
348
|
+
"""Get code snippet around the specified line."""
|
|
349
|
+
try:
|
|
350
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
|
351
|
+
lines = f.readlines()
|
|
352
|
+
|
|
353
|
+
start_line = max(0, line_number - context_lines - 1)
|
|
354
|
+
end_line = min(len(lines), line_number + context_lines)
|
|
355
|
+
|
|
356
|
+
snippet_lines = []
|
|
357
|
+
for i in range(start_line, end_line):
|
|
358
|
+
marker = ">>> " if i == line_number - 1 else " "
|
|
359
|
+
snippet_lines.append(f"{marker}{i+1:4d}: {lines[i].rstrip()}")
|
|
360
|
+
|
|
361
|
+
return '\n'.join(snippet_lines)
|
|
362
|
+
|
|
363
|
+
except Exception:
|
|
364
|
+
return f"// Code not available for {file_path}:{line_number}"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Usage Examples
|
|
368
|
+
|
|
369
|
+
```python
|
|
370
|
+
# Detect bottlenecks from profiling results
|
|
371
|
+
detector = BottleneckDetector(profiler)
|
|
372
|
+
bottlenecks = await detector.detect_bottlenecks(profile_results)
|
|
373
|
+
|
|
374
|
+
print(f"Found {len(bottlenecks)} performance bottlenecks:")
|
|
375
|
+
for bottleneck in bottlenecks[:5]: # Show top 5
|
|
376
|
+
print(f"\nBottleneck: {bottleneck.function_name}")
|
|
377
|
+
print(f" Type: {bottleneck.bottleneck_type}")
|
|
378
|
+
print(f" Severity: {bottleneck.severity}")
|
|
379
|
+
print(f" Impact: {bottleneck.impact_score:.2f}")
|
|
380
|
+
print(f" Description: {bottleneck.description}")
|
|
381
|
+
print(f" Optimization type: {bottleneck.optimization_type.value}")
|
|
382
|
+
print(f" Suggested fixes:")
|
|
383
|
+
for fix in bottleneck.suggested_fixes:
|
|
384
|
+
print(f" - {fix}")
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
## Best Practices
|
|
388
|
+
|
|
389
|
+
1. **Severity Prioritization**: Focus on critical and high severity bottlenecks first
|
|
390
|
+
2. **Impact Score**: Use impact scores to quantify optimization potential
|
|
391
|
+
3. **Context-Aware**: Consider codebase context when suggesting optimizations
|
|
392
|
+
4. **Incremental**: Address one bottleneck at a time to measure impact
|
|
393
|
+
5. **Validation**: Always validate optimizations with performance tests
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
Related: [Profiler Core](./profiler-core.md) | [Optimization Plan](./optimization-plan.md)
|