moai-adk 0.35.1__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/__init__.py +10 -0
- moai_adk/__main__.py +199 -0
- moai_adk/cli/__init__.py +6 -0
- moai_adk/cli/commands/__init__.py +17 -0
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +272 -0
- moai_adk/cli/commands/init.py +372 -0
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +104 -0
- moai_adk/cli/commands/update.py +2686 -0
- moai_adk/cli/main.py +13 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +219 -0
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +1 -0
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +400 -0
- moai_adk/core/claude_integration.py +393 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +244 -0
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/__init__.py +19 -0
- moai_adk/core/diagnostics/slash_commands.py +159 -0
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1902 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +31 -0
- moai_adk/core/git/branch.py +25 -0
- moai_adk/core/git/branch_manager.py +129 -0
- moai_adk/core/git/checkpoint.py +134 -0
- moai_adk/core/git/commit.py +67 -0
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +79 -0
- moai_adk/core/git/manager.py +216 -0
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +605 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +1 -0
- moai_adk/core/project/backup_utils.py +70 -0
- moai_adk/core/project/checker.py +300 -0
- moai_adk/core/project/detector.py +293 -0
- moai_adk/core/project/initializer.py +387 -0
- moai_adk/core/project/phase_executor.py +716 -0
- moai_adk/core/project/validator.py +139 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +377 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +7 -0
- moai_adk/core/template/backup.py +174 -0
- moai_adk/core/template/config.py +191 -0
- moai_adk/core/template/languages.py +43 -0
- moai_adk/core/template/merger.py +233 -0
- moai_adk/core/template/processor.py +1200 -0
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -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 +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
- 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 +323 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- 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 +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -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 +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -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 +376 -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 +385 -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-kotlin/SKILL.md +382 -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 +644 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -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 +579 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -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 +497 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -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 +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -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/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
- moai_adk/templates/.gitignore +222 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +642 -0
- moai_adk/utils/__init__.py +30 -0
- moai_adk/utils/banner.py +38 -0
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +147 -0
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.35.1.dist-info/METADATA +3018 -0
- moai_adk-0.35.1.dist-info/RECORD +502 -0
- moai_adk-0.35.1.dist-info/WHEEL +4 -0
- moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
- moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,845 @@
|
|
|
1
|
+
# AI-Powered Debugging Integration
|
|
2
|
+
|
|
3
|
+
> Module: Comprehensive AI debugging with Context7 integration and intelligent error analysis
|
|
4
|
+
> Complexity: Advanced
|
|
5
|
+
> Time: 20+ minutes
|
|
6
|
+
> Dependencies: Python 3.8+, Context7 MCP, asyncio, traceback, dataclasses
|
|
7
|
+
|
|
8
|
+
## Core Implementation
|
|
9
|
+
|
|
10
|
+
### AIDebugger Class
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
import asyncio
|
|
14
|
+
import traceback
|
|
15
|
+
from typing import Dict, List, Optional, Any, Union
|
|
16
|
+
from dataclasses import dataclass
|
|
17
|
+
from enum import Enum
|
|
18
|
+
|
|
19
|
+
class ErrorType(Enum):
|
|
20
|
+
"""Classification of error types for intelligent handling."""
|
|
21
|
+
SYNTAX = "syntax_error"
|
|
22
|
+
RUNTIME = "runtime_error"
|
|
23
|
+
IMPORT = "import_error"
|
|
24
|
+
TYPE_ERROR = "type_error"
|
|
25
|
+
VALUE_ERROR = "value_error"
|
|
26
|
+
ATTRIBUTE_ERROR = "attribute_error"
|
|
27
|
+
KEY_ERROR = "key_error"
|
|
28
|
+
NETWORK = "network_error"
|
|
29
|
+
DATABASE = "database_error"
|
|
30
|
+
MEMORY = "memory_error"
|
|
31
|
+
CONCURRENCY = "concurrency_error"
|
|
32
|
+
UNKNOWN = "unknown_error"
|
|
33
|
+
|
|
34
|
+
@dataclass
|
|
35
|
+
class ErrorAnalysis:
|
|
36
|
+
"""Analysis of an error with classification and metadata."""
|
|
37
|
+
type: ErrorType
|
|
38
|
+
confidence: float
|
|
39
|
+
message: str
|
|
40
|
+
traceback: str
|
|
41
|
+
context: Dict[str, Any]
|
|
42
|
+
frequency: int
|
|
43
|
+
severity: str # "low", "medium", "high", "critical"
|
|
44
|
+
likely_causes: List[str]
|
|
45
|
+
suggested_fixes: List[str]
|
|
46
|
+
|
|
47
|
+
@dataclass
|
|
48
|
+
class Solution:
|
|
49
|
+
"""Proposed solution for an error."""
|
|
50
|
+
type: str # "context7_pattern", "ai_generated", "known_fix"
|
|
51
|
+
description: str
|
|
52
|
+
code_example: str
|
|
53
|
+
confidence: float
|
|
54
|
+
impact: str # "low", "medium", "high"
|
|
55
|
+
dependencies: List[str]
|
|
56
|
+
|
|
57
|
+
@dataclass
|
|
58
|
+
class DebugAnalysis:
|
|
59
|
+
"""Complete debug analysis with solutions and prevention strategies."""
|
|
60
|
+
error_type: ErrorType
|
|
61
|
+
confidence: float
|
|
62
|
+
context7_patterns: Dict[str, Any]
|
|
63
|
+
solutions: List[Solution]
|
|
64
|
+
prevention_strategies: List[str]
|
|
65
|
+
related_errors: List[str]
|
|
66
|
+
estimated_fix_time: str
|
|
67
|
+
|
|
68
|
+
class AIDebugger:
|
|
69
|
+
"""AI-powered debugging with Context7 integration."""
|
|
70
|
+
|
|
71
|
+
def __init__(self, context7_client=None):
|
|
72
|
+
self.context7 = context7_client
|
|
73
|
+
self.error_patterns = self._load_error_patterns()
|
|
74
|
+
self.error_history = {}
|
|
75
|
+
self.pattern_cache = {}
|
|
76
|
+
|
|
77
|
+
def _load_error_patterns(self) -> Dict[str, Any]:
|
|
78
|
+
"""Load comprehensive error patterns database."""
|
|
79
|
+
return {
|
|
80
|
+
'ImportError': {
|
|
81
|
+
'patterns': [
|
|
82
|
+
r"No module named '(.+)'",
|
|
83
|
+
r"cannot import name '(.+)' from '(.+)'",
|
|
84
|
+
r"circular import"
|
|
85
|
+
],
|
|
86
|
+
'solutions': [
|
|
87
|
+
'Install missing package',
|
|
88
|
+
'Check import path',
|
|
89
|
+
'Resolve circular dependencies'
|
|
90
|
+
],
|
|
91
|
+
'context7_topics': [
|
|
92
|
+
'python import system best practices',
|
|
93
|
+
'module resolution troubleshooting',
|
|
94
|
+
'dependency management'
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
'AttributeError': {
|
|
98
|
+
'patterns': [
|
|
99
|
+
r"'(.+)' object has no attribute '(.+)'",
|
|
100
|
+
r"module '(.+)' has no attribute '(.+)'"
|
|
101
|
+
],
|
|
102
|
+
'solutions': [
|
|
103
|
+
'Check object type and available attributes',
|
|
104
|
+
'Verify module import',
|
|
105
|
+
'Add missing attribute or method'
|
|
106
|
+
],
|
|
107
|
+
'context7_topics': [
|
|
108
|
+
'python attribute access patterns',
|
|
109
|
+
'object-oriented debugging',
|
|
110
|
+
'introspection techniques'
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
'TypeError': {
|
|
114
|
+
'patterns': [
|
|
115
|
+
r" unsupported operand type\(s\) for",
|
|
116
|
+
r" takes \d+ positional arguments but \d+ were given",
|
|
117
|
+
r" must be str, not .+"
|
|
118
|
+
],
|
|
119
|
+
'solutions': [
|
|
120
|
+
'Check data types before operations',
|
|
121
|
+
'Verify function signatures',
|
|
122
|
+
'Add type validation'
|
|
123
|
+
],
|
|
124
|
+
'context7_topics': [
|
|
125
|
+
'python type system debugging',
|
|
126
|
+
'function signature validation',
|
|
127
|
+
'type checking best practices'
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
'ValueError': {
|
|
131
|
+
'patterns': [
|
|
132
|
+
r"invalid literal for int\(\) with base 10",
|
|
133
|
+
r"cannot convert",
|
|
134
|
+
r"empty set"
|
|
135
|
+
],
|
|
136
|
+
'solutions': [
|
|
137
|
+
'Validate input data format',
|
|
138
|
+
'Add error handling for conversions',
|
|
139
|
+
'Check value ranges'
|
|
140
|
+
],
|
|
141
|
+
'context7_topics': [
|
|
142
|
+
'input validation patterns',
|
|
143
|
+
'data conversion error handling',
|
|
144
|
+
'value range checking'
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
async def debug_with_context7_patterns(
|
|
150
|
+
self, error: Exception, context: Dict, codebase_path: str
|
|
151
|
+
) -> DebugAnalysis:
|
|
152
|
+
"""Debug using AI pattern recognition and Context7 best practices."""
|
|
153
|
+
|
|
154
|
+
# Classify error with high accuracy
|
|
155
|
+
error_analysis = await self._classify_error_with_ai(error, context)
|
|
156
|
+
|
|
157
|
+
# Get Context7 patterns if available
|
|
158
|
+
context7_patterns = {}
|
|
159
|
+
if self.context7:
|
|
160
|
+
context7_patterns = await self._get_context7_patterns(error_analysis)
|
|
161
|
+
|
|
162
|
+
# Match against known patterns
|
|
163
|
+
pattern_matches = self._match_error_patterns(error, error_analysis)
|
|
164
|
+
|
|
165
|
+
# Generate comprehensive solutions
|
|
166
|
+
solutions = await self._generate_solutions(
|
|
167
|
+
error_analysis, context7_patterns, pattern_matches, context
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
# Suggest prevention strategies
|
|
171
|
+
prevention = self._suggest_prevention_strategies(error_analysis, context)
|
|
172
|
+
|
|
173
|
+
# Estimate fix time based on complexity
|
|
174
|
+
fix_time = self._estimate_fix_time(error_analysis, solutions)
|
|
175
|
+
|
|
176
|
+
return DebugAnalysis(
|
|
177
|
+
error_type=error_analysis.type,
|
|
178
|
+
confidence=error_analysis.confidence,
|
|
179
|
+
context7_patterns=context7_patterns,
|
|
180
|
+
solutions=solutions,
|
|
181
|
+
prevention_strategies=prevention,
|
|
182
|
+
related_errors=self._find_related_errors(error_analysis),
|
|
183
|
+
estimated_fix_time=fix_time
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
async def _classify_error_with_ai(
|
|
187
|
+
self, error: Exception, context: Dict
|
|
188
|
+
) -> ErrorAnalysis:
|
|
189
|
+
"""Classify error using AI-enhanced pattern recognition."""
|
|
190
|
+
|
|
191
|
+
error_type_name = type(error).__name__
|
|
192
|
+
error_message = str(error)
|
|
193
|
+
error_traceback = traceback.format_exc()
|
|
194
|
+
|
|
195
|
+
# Enhanced classification with context awareness
|
|
196
|
+
classification = self._classify_by_type_and_message(
|
|
197
|
+
error_type_name, error_message, context
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
# Analyze frequency and severity
|
|
201
|
+
error_key = f"{error_type_name}:{error_message[:50]}"
|
|
202
|
+
frequency = self.error_history.get(error_key, 0) + 1
|
|
203
|
+
self.error_history[error_key] = frequency
|
|
204
|
+
|
|
205
|
+
severity = self._assess_severity(error, context, frequency)
|
|
206
|
+
|
|
207
|
+
# Generate likely causes based on analysis
|
|
208
|
+
likely_causes = self._analyze_likely_causes(
|
|
209
|
+
error_type_name, error_message, context
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
# Generate initial suggested fixes
|
|
213
|
+
suggested_fixes = self._generate_quick_fixes(
|
|
214
|
+
classification, error_message, context
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
return ErrorAnalysis(
|
|
218
|
+
type=classification,
|
|
219
|
+
confidence=self._calculate_confidence(classification, error_message),
|
|
220
|
+
message=error_message,
|
|
221
|
+
traceback=error_traceback,
|
|
222
|
+
context=context,
|
|
223
|
+
frequency=frequency,
|
|
224
|
+
severity=severity,
|
|
225
|
+
likely_causes=likely_causes,
|
|
226
|
+
suggested_fixes=suggested_fixes
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
def _classify_by_type_and_message(
|
|
230
|
+
self, error_type: str, message: str, context: Dict
|
|
231
|
+
) -> ErrorType:
|
|
232
|
+
"""Enhanced error classification using multiple heuristics."""
|
|
233
|
+
|
|
234
|
+
# Direct type mapping
|
|
235
|
+
type_mapping = {
|
|
236
|
+
'ImportError': ErrorType.IMPORT,
|
|
237
|
+
'ModuleNotFoundError': ErrorType.IMPORT,
|
|
238
|
+
'AttributeError': ErrorType.ATTRIBUTE_ERROR,
|
|
239
|
+
'KeyError': ErrorType.KEY_ERROR,
|
|
240
|
+
'TypeError': ErrorType.TYPE_ERROR,
|
|
241
|
+
'ValueError': ErrorType.VALUE_ERROR,
|
|
242
|
+
'SyntaxError': ErrorType.SYNTAX,
|
|
243
|
+
'IndentationError': ErrorType.SYNTAX,
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if error_type in type_mapping:
|
|
247
|
+
return type_mapping[error_type]
|
|
248
|
+
|
|
249
|
+
# Message-based classification
|
|
250
|
+
message_lower = message.lower()
|
|
251
|
+
|
|
252
|
+
if any(keyword in message_lower for keyword in [
|
|
253
|
+
'connection', 'timeout', 'network', 'http', 'socket'
|
|
254
|
+
]):
|
|
255
|
+
return ErrorType.NETWORK
|
|
256
|
+
|
|
257
|
+
if any(keyword in message_lower for keyword in [
|
|
258
|
+
'database', 'sql', 'query', 'connection', 'cursor'
|
|
259
|
+
]):
|
|
260
|
+
return ErrorType.DATABASE
|
|
261
|
+
|
|
262
|
+
if any(keyword in message_lower for keyword in [
|
|
263
|
+
'memory', 'out of memory', 'allocation', 'heap'
|
|
264
|
+
]):
|
|
265
|
+
return ErrorType.MEMORY
|
|
266
|
+
|
|
267
|
+
if any(keyword in message_lower for keyword in [
|
|
268
|
+
'thread', 'lock', 'race condition', 'concurrent'
|
|
269
|
+
]):
|
|
270
|
+
return ErrorType.CONCURRENCY
|
|
271
|
+
|
|
272
|
+
# Context-based classification
|
|
273
|
+
if context.get('operation_type') == 'database':
|
|
274
|
+
return ErrorType.DATABASE
|
|
275
|
+
elif context.get('operation_type') == 'network':
|
|
276
|
+
return ErrorType.NETWORK
|
|
277
|
+
|
|
278
|
+
return ErrorType.UNKNOWN
|
|
279
|
+
|
|
280
|
+
async def _get_context7_patterns(
|
|
281
|
+
self, error_analysis: ErrorAnalysis
|
|
282
|
+
) -> Dict[str, Any]:
|
|
283
|
+
"""Get latest debugging patterns from Context7."""
|
|
284
|
+
|
|
285
|
+
cache_key = f"{error_analysis.type.value}_{error_analysis.message[:30]}"
|
|
286
|
+
if cache_key in self.pattern_cache:
|
|
287
|
+
return self.pattern_cache[cache_key]
|
|
288
|
+
|
|
289
|
+
# Determine appropriate Context7 libraries based on error type
|
|
290
|
+
context7_queries = self._build_context7_queries(error_analysis)
|
|
291
|
+
|
|
292
|
+
patterns = {}
|
|
293
|
+
if self.context7:
|
|
294
|
+
for library_id, topic in context7_queries:
|
|
295
|
+
try:
|
|
296
|
+
result = await self.context7.get_library_docs(
|
|
297
|
+
context7_library_id=library_id,
|
|
298
|
+
topic=topic,
|
|
299
|
+
tokens=4000
|
|
300
|
+
)
|
|
301
|
+
patterns[library_id] = result
|
|
302
|
+
except Exception as e:
|
|
303
|
+
print(f"Context7 query failed for {library_id}: {e}")
|
|
304
|
+
|
|
305
|
+
# Cache results
|
|
306
|
+
self.pattern_cache[cache_key] = patterns
|
|
307
|
+
return patterns
|
|
308
|
+
|
|
309
|
+
def _build_context7_queries(self, error_analysis: ErrorAnalysis) -> List[tuple]:
|
|
310
|
+
"""Build Context7 queries based on error analysis."""
|
|
311
|
+
|
|
312
|
+
queries = []
|
|
313
|
+
|
|
314
|
+
# Base debugging library
|
|
315
|
+
queries.append(("/microsoft/debugpy",
|
|
316
|
+
f"AI debugging patterns {error_analysis.type.value} error analysis 2025"))
|
|
317
|
+
|
|
318
|
+
# Language-specific libraries
|
|
319
|
+
if error_analysis.context.get('language') == 'python':
|
|
320
|
+
queries.append(("/python/cpython",
|
|
321
|
+
f"{error_analysis.type.value} debugging best practices"))
|
|
322
|
+
|
|
323
|
+
# Framework-specific queries
|
|
324
|
+
framework = error_analysis.context.get('framework')
|
|
325
|
+
if framework:
|
|
326
|
+
queries.append((f"/{framework}/{framework}",
|
|
327
|
+
f"{framework} {error_analysis.type.value} troubleshooting"))
|
|
328
|
+
|
|
329
|
+
return queries
|
|
330
|
+
|
|
331
|
+
def _match_error_patterns(
|
|
332
|
+
self, error: Exception, error_analysis: ErrorAnalysis
|
|
333
|
+
) -> Dict[str, Any]:
|
|
334
|
+
"""Match error against known patterns."""
|
|
335
|
+
|
|
336
|
+
error_type = type(error).__name__
|
|
337
|
+
error_message = str(error)
|
|
338
|
+
|
|
339
|
+
if error_type in self.error_patterns:
|
|
340
|
+
pattern_data = self.error_patterns[error_type]
|
|
341
|
+
|
|
342
|
+
# Try to match regex patterns
|
|
343
|
+
import re
|
|
344
|
+
matched_patterns = []
|
|
345
|
+
for pattern in pattern_data['patterns']:
|
|
346
|
+
if re.search(pattern, error_message, re.IGNORECASE):
|
|
347
|
+
matched_patterns.append(pattern)
|
|
348
|
+
|
|
349
|
+
return {
|
|
350
|
+
'matched_patterns': matched_patterns,
|
|
351
|
+
'solutions': pattern_data['solutions'],
|
|
352
|
+
'context7_topics': pattern_data['context7_topics']
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return {'matched_patterns': [], 'solutions': [], 'context7_topics': []}
|
|
356
|
+
|
|
357
|
+
async def _generate_solutions(
|
|
358
|
+
self, error_analysis: ErrorAnalysis,
|
|
359
|
+
context7_patterns: Dict, pattern_matches: Dict,
|
|
360
|
+
context: Dict
|
|
361
|
+
) -> List[Solution]:
|
|
362
|
+
"""Generate comprehensive solutions using multiple sources."""
|
|
363
|
+
|
|
364
|
+
solutions = []
|
|
365
|
+
|
|
366
|
+
# Pattern-based solutions
|
|
367
|
+
for pattern in pattern_matches.get('matched_patterns', []):
|
|
368
|
+
solution = Solution(
|
|
369
|
+
type='pattern_match',
|
|
370
|
+
description=f"Apply known pattern: {pattern}",
|
|
371
|
+
code_example=self._generate_pattern_example(pattern, context),
|
|
372
|
+
confidence=0.85,
|
|
373
|
+
impact='medium',
|
|
374
|
+
dependencies=[]
|
|
375
|
+
)
|
|
376
|
+
solutions.append(solution)
|
|
377
|
+
|
|
378
|
+
# Context7-based solutions
|
|
379
|
+
for library_id, docs in context7_patterns.items():
|
|
380
|
+
if docs and 'solutions' in docs:
|
|
381
|
+
for sol in docs['solutions']:
|
|
382
|
+
solution = Solution(
|
|
383
|
+
type='context7_pattern',
|
|
384
|
+
description=sol['description'],
|
|
385
|
+
code_example=sol.get('code_example', ''),
|
|
386
|
+
confidence=sol.get('confidence', 0.7),
|
|
387
|
+
impact=sol.get('impact', 'medium'),
|
|
388
|
+
dependencies=sol.get('dependencies', [])
|
|
389
|
+
)
|
|
390
|
+
solutions.append(solution)
|
|
391
|
+
|
|
392
|
+
# AI-generated solutions
|
|
393
|
+
if self.context7 and len(solutions) < 3: # Generate AI solutions if limited patterns found
|
|
394
|
+
ai_solutions = await self._generate_ai_solutions(error_analysis, context)
|
|
395
|
+
solutions.extend(ai_solutions)
|
|
396
|
+
|
|
397
|
+
# Sort by confidence and impact
|
|
398
|
+
solutions.sort(key=lambda x: (x.confidence, x.impact), reverse=True)
|
|
399
|
+
return solutions[:5] # Return top 5 solutions
|
|
400
|
+
|
|
401
|
+
async def _generate_ai_solutions(
|
|
402
|
+
self, error_analysis: ErrorAnalysis, context: Dict
|
|
403
|
+
) -> List[Solution]:
|
|
404
|
+
"""Generate AI-powered solutions when patterns are insufficient."""
|
|
405
|
+
|
|
406
|
+
solutions = []
|
|
407
|
+
|
|
408
|
+
try:
|
|
409
|
+
# Query for specific error solutions
|
|
410
|
+
language = context.get('language', 'python')
|
|
411
|
+
ai_response = await self.context7.get_library_docs(
|
|
412
|
+
context7_library_id="/openai/chatgpt",
|
|
413
|
+
topic=f"solve {error_analysis.type.value} in {language}: {error_analysis.message[:100]}",
|
|
414
|
+
tokens=3000
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
if ai_response and 'solutions' in ai_response:
|
|
418
|
+
for sol in ai_response['solutions']:
|
|
419
|
+
solution = Solution(
|
|
420
|
+
type='ai_generated',
|
|
421
|
+
description=sol['description'],
|
|
422
|
+
code_example=sol.get('code_example', ''),
|
|
423
|
+
confidence=0.75,
|
|
424
|
+
impact='medium',
|
|
425
|
+
dependencies=sol.get('dependencies', [])
|
|
426
|
+
)
|
|
427
|
+
solutions.append(solution)
|
|
428
|
+
|
|
429
|
+
except Exception as e:
|
|
430
|
+
print(f"AI solution generation failed: {e}")
|
|
431
|
+
|
|
432
|
+
return solutions
|
|
433
|
+
|
|
434
|
+
def _generate_pattern_example(self, pattern: str, context: Dict) -> str:
|
|
435
|
+
"""Generate code example for a specific error pattern."""
|
|
436
|
+
|
|
437
|
+
examples = {
|
|
438
|
+
r"No module named '(.+)'": """
|
|
439
|
+
# Install missing package
|
|
440
|
+
pip install package_name
|
|
441
|
+
|
|
442
|
+
# Or add to requirements.txt
|
|
443
|
+
echo "package_name" >> requirements.txt
|
|
444
|
+
""",
|
|
445
|
+
r"'(.+)' object has no attribute '(.+)'": """
|
|
446
|
+
# Check object type before accessing attribute
|
|
447
|
+
if hasattr(obj, 'attribute_name'):
|
|
448
|
+
result = obj.attribute_name
|
|
449
|
+
else:
|
|
450
|
+
print(f"Object of type {type(obj)} doesn't have attribute 'attribute_name'")
|
|
451
|
+
""",
|
|
452
|
+
r" takes \d+ positional arguments but \d+ were given": """
|
|
453
|
+
# Check function signature and call with correct arguments
|
|
454
|
+
def function_name(arg1, arg2, arg3=None):
|
|
455
|
+
pass
|
|
456
|
+
|
|
457
|
+
# Correct call
|
|
458
|
+
function_name(value1, value2)
|
|
459
|
+
""",
|
|
460
|
+
r"invalid literal for int\(\) with base 10": """
|
|
461
|
+
# Add error handling for type conversion
|
|
462
|
+
try:
|
|
463
|
+
number = int(value)
|
|
464
|
+
except ValueError:
|
|
465
|
+
print(f"Cannot convert '{value}' to integer")
|
|
466
|
+
# Handle the error appropriately
|
|
467
|
+
""",
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
for pattern_key, example in examples.items():
|
|
471
|
+
if pattern_key in pattern:
|
|
472
|
+
return example
|
|
473
|
+
|
|
474
|
+
return f"# Implement fix for pattern: {pattern}"
|
|
475
|
+
|
|
476
|
+
def _suggest_prevention_strategies(
|
|
477
|
+
self, error_analysis: ErrorAnalysis, context: Dict
|
|
478
|
+
) -> List[str]:
|
|
479
|
+
"""Suggest prevention strategies based on error analysis."""
|
|
480
|
+
|
|
481
|
+
strategies = []
|
|
482
|
+
|
|
483
|
+
# Type-specific prevention
|
|
484
|
+
if error_analysis.type == ErrorType.IMPORT:
|
|
485
|
+
strategies.extend([
|
|
486
|
+
"Add proper dependency management with requirements.txt",
|
|
487
|
+
"Implement module availability checks before imports",
|
|
488
|
+
"Use virtual environments for dependency isolation"
|
|
489
|
+
])
|
|
490
|
+
elif error_analysis.type == ErrorType.ATTRIBUTE_ERROR:
|
|
491
|
+
strategies.extend([
|
|
492
|
+
"Use hasattr() checks before attribute access",
|
|
493
|
+
"Implement proper object type checking",
|
|
494
|
+
"Add comprehensive unit tests for object interfaces"
|
|
495
|
+
])
|
|
496
|
+
elif error_analysis.type == ErrorType.TYPE_ERROR:
|
|
497
|
+
strategies.extend([
|
|
498
|
+
"Add type hints and static type checking with mypy",
|
|
499
|
+
"Implement runtime type validation",
|
|
500
|
+
"Use isinstance() checks before operations"
|
|
501
|
+
])
|
|
502
|
+
elif error_analysis.type == ErrorType.VALUE_ERROR:
|
|
503
|
+
strategies.extend([
|
|
504
|
+
"Add input validation at function boundaries",
|
|
505
|
+
"Implement comprehensive error handling",
|
|
506
|
+
"Use try-except blocks for data conversion"
|
|
507
|
+
])
|
|
508
|
+
|
|
509
|
+
# General prevention strategies
|
|
510
|
+
strategies.extend([
|
|
511
|
+
"Implement comprehensive logging for error tracking",
|
|
512
|
+
"Add automated testing to catch errors early",
|
|
513
|
+
"Use code review process to prevent common issues"
|
|
514
|
+
])
|
|
515
|
+
|
|
516
|
+
return strategies
|
|
517
|
+
|
|
518
|
+
def _find_related_errors(self, error_analysis: ErrorAnalysis) -> List[str]:
|
|
519
|
+
"""Find related errors that might occur together."""
|
|
520
|
+
|
|
521
|
+
related_map = {
|
|
522
|
+
ErrorType.IMPORT: ["ModuleNotFoundError", "ImportError", "AttributeError"],
|
|
523
|
+
ErrorType.ATTRIBUTE_ERROR: ["TypeError", "KeyError", "ImportError"],
|
|
524
|
+
ErrorType.TYPE_ERROR: ["ValueError", "AttributeError", "TypeError"],
|
|
525
|
+
ErrorType.VALUE_ERROR: ["TypeError", "KeyError", "IndexError"],
|
|
526
|
+
ErrorType.KEY_ERROR: ["AttributeError", "TypeError", "IndexError"],
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
return related_map.get(error_analysis.type, ["TypeError", "ValueError"])
|
|
530
|
+
|
|
531
|
+
def _estimate_fix_time(
|
|
532
|
+
self, error_analysis: ErrorAnalysis, solutions: List[Solution]
|
|
533
|
+
) -> str:
|
|
534
|
+
"""Estimate time required to fix the error."""
|
|
535
|
+
|
|
536
|
+
base_times = {
|
|
537
|
+
ErrorType.SYNTAX: "1-5 minutes",
|
|
538
|
+
ErrorType.IMPORT: "2-10 minutes",
|
|
539
|
+
ErrorType.ATTRIBUTE_ERROR: "5-15 minutes",
|
|
540
|
+
ErrorType.TYPE_ERROR: "5-20 minutes",
|
|
541
|
+
ErrorType.VALUE_ERROR: "2-15 minutes",
|
|
542
|
+
ErrorType.KEY_ERROR: "2-10 minutes",
|
|
543
|
+
ErrorType.NETWORK: "10-30 minutes",
|
|
544
|
+
ErrorType.DATABASE: "15-45 minutes",
|
|
545
|
+
ErrorType.MEMORY: "20-60 minutes",
|
|
546
|
+
ErrorType.CONCURRENCY: "30-90 minutes",
|
|
547
|
+
ErrorType.UNKNOWN: "15-60 minutes"
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
base_time = base_times.get(error_analysis.type, "10-30 minutes")
|
|
551
|
+
|
|
552
|
+
# Adjust based on solution confidence
|
|
553
|
+
if solutions and solutions[0].confidence > 0.9:
|
|
554
|
+
return f"Quick fix: {base_time}"
|
|
555
|
+
elif solutions and solutions[0].confidence > 0.7:
|
|
556
|
+
return f"Standard: {base_time}"
|
|
557
|
+
else:
|
|
558
|
+
return f"Complex: {base_time}"
|
|
559
|
+
|
|
560
|
+
def _calculate_confidence(
|
|
561
|
+
self, classification: ErrorType, message: str
|
|
562
|
+
) -> float:
|
|
563
|
+
"""Calculate confidence in error classification."""
|
|
564
|
+
|
|
565
|
+
# High confidence for direct type matches
|
|
566
|
+
if classification != ErrorType.UNKNOWN:
|
|
567
|
+
return 0.85
|
|
568
|
+
|
|
569
|
+
# Lower confidence for unknown errors
|
|
570
|
+
return 0.4
|
|
571
|
+
|
|
572
|
+
def _assess_severity(
|
|
573
|
+
self, error: Exception, context: Dict, frequency: int
|
|
574
|
+
) -> str:
|
|
575
|
+
"""Assess error severity based on context and frequency."""
|
|
576
|
+
|
|
577
|
+
# High severity indicators
|
|
578
|
+
if any(keyword in str(error).lower() for keyword in [
|
|
579
|
+
'critical', 'fatal', 'corruption', 'security'
|
|
580
|
+
]):
|
|
581
|
+
return "critical"
|
|
582
|
+
|
|
583
|
+
# Frequency-based severity
|
|
584
|
+
if frequency > 10:
|
|
585
|
+
return "high"
|
|
586
|
+
elif frequency > 3:
|
|
587
|
+
return "medium"
|
|
588
|
+
|
|
589
|
+
# Context-based severity
|
|
590
|
+
if context.get('production', False):
|
|
591
|
+
return "high"
|
|
592
|
+
elif context.get('user_facing', False):
|
|
593
|
+
return "medium"
|
|
594
|
+
|
|
595
|
+
return "low"
|
|
596
|
+
|
|
597
|
+
def _analyze_likely_causes(
|
|
598
|
+
self, error_type: str, message: str, context: Dict
|
|
599
|
+
) -> List[str]:
|
|
600
|
+
"""Analyze likely causes of the error."""
|
|
601
|
+
|
|
602
|
+
causes = []
|
|
603
|
+
|
|
604
|
+
if error_type == "ImportError":
|
|
605
|
+
if "No module named" in message:
|
|
606
|
+
causes.extend([
|
|
607
|
+
"Missing dependency installation",
|
|
608
|
+
"Incorrect import path",
|
|
609
|
+
"Virtual environment not activated"
|
|
610
|
+
])
|
|
611
|
+
elif "circular import" in message:
|
|
612
|
+
causes.extend([
|
|
613
|
+
"Circular dependency between modules",
|
|
614
|
+
"Improper module structure"
|
|
615
|
+
])
|
|
616
|
+
|
|
617
|
+
elif error_type == "AttributeError":
|
|
618
|
+
causes.extend([
|
|
619
|
+
"Wrong object type being used",
|
|
620
|
+
"Incorrect attribute name",
|
|
621
|
+
"Object not properly initialized"
|
|
622
|
+
])
|
|
623
|
+
|
|
624
|
+
elif error_type == "TypeError":
|
|
625
|
+
causes.extend([
|
|
626
|
+
"Incorrect data types in operation",
|
|
627
|
+
"Function called with wrong argument types",
|
|
628
|
+
"Missing type conversion"
|
|
629
|
+
])
|
|
630
|
+
|
|
631
|
+
return causes
|
|
632
|
+
|
|
633
|
+
def _generate_quick_fixes(
|
|
634
|
+
self, classification: ErrorType, message: str, context: Dict
|
|
635
|
+
) -> List[str]:
|
|
636
|
+
"""Generate quick fixes for the error."""
|
|
637
|
+
|
|
638
|
+
fixes = []
|
|
639
|
+
|
|
640
|
+
if classification == ErrorType.IMPORT:
|
|
641
|
+
fixes.extend([
|
|
642
|
+
"Install missing package with pip",
|
|
643
|
+
"Check Python path configuration",
|
|
644
|
+
"Verify module exists in expected location"
|
|
645
|
+
])
|
|
646
|
+
|
|
647
|
+
elif classification == ErrorType.ATTRIBUTE_ERROR:
|
|
648
|
+
fixes.extend([
|
|
649
|
+
"Add hasattr() check before attribute access",
|
|
650
|
+
"Verify object initialization",
|
|
651
|
+
"Check for typos in attribute name"
|
|
652
|
+
])
|
|
653
|
+
|
|
654
|
+
elif classification == ErrorType.TYPE_ERROR:
|
|
655
|
+
fixes.extend([
|
|
656
|
+
"Add type conversion before operation",
|
|
657
|
+
"Check function signature",
|
|
658
|
+
"Use isinstance() for type validation"
|
|
659
|
+
])
|
|
660
|
+
|
|
661
|
+
return fixes
|
|
662
|
+
|
|
663
|
+
def get_error_frequency(self, error: Exception) -> int:
|
|
664
|
+
"""Get frequency of this error occurrence."""
|
|
665
|
+
error_key = f"{type(error).__name__}:{str(error)[:50]}"
|
|
666
|
+
return self.error_history.get(error_key, 0)
|
|
667
|
+
|
|
668
|
+
def clear_error_history(self):
|
|
669
|
+
"""Clear error history for fresh analysis."""
|
|
670
|
+
self.error_history.clear()
|
|
671
|
+
self.pattern_cache.clear()
|
|
672
|
+
|
|
673
|
+
def get_debug_statistics(self) -> Dict[str, Any]:
|
|
674
|
+
"""Get debugging session statistics."""
|
|
675
|
+
return {
|
|
676
|
+
'total_errors_analyzed': len(self.error_history),
|
|
677
|
+
'error_types': dict(Counter(key.split(':')[0] for key in self.error_history.keys())),
|
|
678
|
+
'cache_hits': len(self.pattern_cache),
|
|
679
|
+
'most_common_errors': sorted(
|
|
680
|
+
self.error_history.items(),
|
|
681
|
+
key=lambda x: x[1],
|
|
682
|
+
reverse=True
|
|
683
|
+
)[:5]
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
# Usage Examples
|
|
687
|
+
"""
|
|
688
|
+
# Basic usage
|
|
689
|
+
debugger = AIDebugger(context7_client=context7)
|
|
690
|
+
|
|
691
|
+
try:
|
|
692
|
+
# Code that might fail
|
|
693
|
+
result = some_risky_operation()
|
|
694
|
+
except Exception as e:
|
|
695
|
+
analysis = await debugger.debug_with_context7_patterns(
|
|
696
|
+
e,
|
|
697
|
+
{'file': __file__, 'function': 'some_risky_operation', 'language': 'python'},
|
|
698
|
+
'/project/src'
|
|
699
|
+
)
|
|
700
|
+
|
|
701
|
+
print(f"Error type: {analysis.error_type}")
|
|
702
|
+
print(f"Confidence: {analysis.confidence}")
|
|
703
|
+
print(f"Solutions found: {len(analysis.solutions)}")
|
|
704
|
+
|
|
705
|
+
for i, solution in enumerate(analysis.solutions, 1):
|
|
706
|
+
print(f"\nSolution {i}:")
|
|
707
|
+
print(f" Description: {solution.description}")
|
|
708
|
+
print(f" Confidence: {solution.confidence}")
|
|
709
|
+
print(f" Impact: {solution.impact}")
|
|
710
|
+
if solution.code_example:
|
|
711
|
+
print(f" Example:\n{solution.code_example}")
|
|
712
|
+
|
|
713
|
+
# Advanced usage with custom context
|
|
714
|
+
try:
|
|
715
|
+
data = process_user_input(user_data)
|
|
716
|
+
except Exception as e:
|
|
717
|
+
analysis = await debugger.debug_with_context7_patterns(
|
|
718
|
+
e,
|
|
719
|
+
{
|
|
720
|
+
'file': __file__,
|
|
721
|
+
'function': 'process_user_input',
|
|
722
|
+
'language': 'python',
|
|
723
|
+
'framework': 'django',
|
|
724
|
+
'operation_type': 'data_processing',
|
|
725
|
+
'user_facing': True,
|
|
726
|
+
'production': False
|
|
727
|
+
},
|
|
728
|
+
'/project/src'
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
# Get prevention strategies
|
|
732
|
+
print("Prevention strategies:")
|
|
733
|
+
for strategy in analysis.prevention_strategies:
|
|
734
|
+
print(f" - {strategy}")
|
|
735
|
+
|
|
736
|
+
# Check debug statistics
|
|
737
|
+
stats = debugger.get_debug_statistics()
|
|
738
|
+
print(f"Debugged {stats['total_errors_analyzed']} errors")
|
|
739
|
+
print(f"Most common: {stats['most_common_errors'][:3]}")
|
|
740
|
+
"""
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
## Advanced Features
|
|
744
|
+
|
|
745
|
+
### Context Integration
|
|
746
|
+
|
|
747
|
+
Enhanced Context Collection:
|
|
748
|
+
```python
|
|
749
|
+
def collect_debug_context(
|
|
750
|
+
error: Exception,
|
|
751
|
+
frame_depth: int = 5
|
|
752
|
+
) -> Dict[str, Any]:
|
|
753
|
+
"""Collect comprehensive debug context."""
|
|
754
|
+
|
|
755
|
+
import inspect
|
|
756
|
+
import sys
|
|
757
|
+
|
|
758
|
+
# Get current frame and walk up the stack
|
|
759
|
+
frame = inspect.currentframe()
|
|
760
|
+
context = {
|
|
761
|
+
'error_type': type(error).__name__,
|
|
762
|
+
'error_message': str(error),
|
|
763
|
+
'timestamp': datetime.now().isoformat(),
|
|
764
|
+
'python_version': sys.version,
|
|
765
|
+
'stack_trace': []
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
# Collect frame information
|
|
769
|
+
for _ in range(frame_depth):
|
|
770
|
+
if frame:
|
|
771
|
+
frame_info = {
|
|
772
|
+
'filename': frame.f_code.co_filename,
|
|
773
|
+
'function': frame.f_code.co_name,
|
|
774
|
+
'lineno': frame.f_lineno,
|
|
775
|
+
'locals': list(frame.f_locals.keys())
|
|
776
|
+
}
|
|
777
|
+
context['stack_trace'].append(frame_info)
|
|
778
|
+
frame = frame.f_back
|
|
779
|
+
|
|
780
|
+
return context
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
### Error Pattern Learning
|
|
784
|
+
|
|
785
|
+
Self-Improving Pattern Recognition:
|
|
786
|
+
```python
|
|
787
|
+
class LearningDebugger(AIDebugger):
|
|
788
|
+
"""Debugger that learns from fixed errors."""
|
|
789
|
+
|
|
790
|
+
def __init__(self, context7_client=None):
|
|
791
|
+
super().__init__(context7_client)
|
|
792
|
+
self.learned_patterns = {}
|
|
793
|
+
self.successful_fixes = {}
|
|
794
|
+
|
|
795
|
+
def record_successful_fix(
|
|
796
|
+
self, error_signature: str, applied_solution: str
|
|
797
|
+
):
|
|
798
|
+
"""Record successful fix for future reference."""
|
|
799
|
+
|
|
800
|
+
if error_signature not in self.successful_fixes:
|
|
801
|
+
self.successful_fixes[error_signature] = []
|
|
802
|
+
|
|
803
|
+
self.successful_fixes[error_signature].append({
|
|
804
|
+
'solution': applied_solution,
|
|
805
|
+
'timestamp': datetime.now().isoformat(),
|
|
806
|
+
'success_rate': 1.0
|
|
807
|
+
})
|
|
808
|
+
|
|
809
|
+
def get_learned_solutions(self, error_signature: str) -> List[Solution]:
|
|
810
|
+
"""Get solutions learned from previous fixes."""
|
|
811
|
+
|
|
812
|
+
if error_signature in self.successful_fixes:
|
|
813
|
+
learned = self.successful_fixes[error_signature]
|
|
814
|
+
|
|
815
|
+
# Create solutions from learned data
|
|
816
|
+
solutions = []
|
|
817
|
+
for fix in learned:
|
|
818
|
+
if fix['success_rate'] > 0.7: # Only return successful fixes
|
|
819
|
+
solution = Solution(
|
|
820
|
+
type='learned_pattern',
|
|
821
|
+
description=f"Previously successful fix: {fix['solution']}",
|
|
822
|
+
code_example=fix['solution'],
|
|
823
|
+
confidence=fix['success_rate'],
|
|
824
|
+
impact='high', # Previously successful fixes are high impact
|
|
825
|
+
dependencies=[]
|
|
826
|
+
)
|
|
827
|
+
solutions.append(solution)
|
|
828
|
+
|
|
829
|
+
return solutions
|
|
830
|
+
|
|
831
|
+
return []
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
## Best Practices
|
|
835
|
+
|
|
836
|
+
1. Context Collection: Always provide comprehensive context including file paths, function names, and relevant variables
|
|
837
|
+
2. Error Categorization: Use specific error types for better pattern matching
|
|
838
|
+
3. Solution Validation: Test proposed solutions before applying them
|
|
839
|
+
4. Learning Integration: Record successful fixes to improve future debugging
|
|
840
|
+
5. Performance Monitoring: Track debugging session performance and cache efficiency
|
|
841
|
+
|
|
842
|
+
---
|
|
843
|
+
|
|
844
|
+
Module: `modules/ai-debugging.md`
|
|
845
|
+
Related: [Smart Refactoring](./smart-refactoring.md) | [Performance Optimization](./performance-optimization.md)
|