moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -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)