crackerjack 0.31.8__tar.gz → 0.31.10__tar.gz

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 crackerjack might be problematic. Click here for more details.

Files changed (287) hide show
  1. crackerjack-0.31.10/CHANGELOG.md +422 -0
  2. {crackerjack-0.31.8 → crackerjack-0.31.10}/PKG-INFO +1 -1
  3. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/async_workflow_orchestrator.py +186 -20
  4. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/phase_coordinator.py +1 -1
  5. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/workflow_orchestrator.py +242 -57
  6. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/executors/hook_executor.py +95 -47
  7. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/test_manager.py +41 -5
  8. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/workflow_executor.py +8 -7
  9. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/pyproject.toml +7 -1
  10. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/coverage_ratchet.py +9 -5
  11. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/git.py +60 -14
  12. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/initialization.py +64 -15
  13. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/uv.lock +217 -4
  14. crackerjack-0.31.10/example.mcp.json +16 -0
  15. {crackerjack-0.31.8 → crackerjack-0.31.10}/pyproject.toml +7 -1
  16. {crackerjack-0.31.8 → crackerjack-0.31.10}/uv.lock +217 -4
  17. crackerjack-0.31.8/.mcp.json.bak +0 -154
  18. crackerjack-0.31.8/CHANGELOG.md +0 -469
  19. crackerjack-0.31.8/crackerjack/.mcp.json.bak +0 -186
  20. {crackerjack-0.31.8 → crackerjack-0.31.10}/.github/FUNDING.yml +0 -0
  21. {crackerjack-0.31.8 → crackerjack-0.31.10}/.gitignore +0 -0
  22. {crackerjack-0.31.8 → crackerjack-0.31.10}/.pre-commit-config.yaml +0 -0
  23. {crackerjack-0.31.8 → crackerjack-0.31.10}/AGENTS.md +0 -0
  24. {crackerjack-0.31.8 → crackerjack-0.31.10}/AI-AGENT-RULES.md +0 -0
  25. {crackerjack-0.31.8 → crackerjack-0.31.10}/CLAUDE.md +0 -0
  26. {crackerjack-0.31.8 → crackerjack-0.31.10}/LICENSE +0 -0
  27. {crackerjack-0.31.8 → crackerjack-0.31.10}/README-AI-AGENT.md +0 -0
  28. {crackerjack-0.31.8 → crackerjack-0.31.10}/README.md +0 -0
  29. {crackerjack-0.31.8 → crackerjack-0.31.10}/RULES.md +0 -0
  30. {crackerjack-0.31.8 → crackerjack-0.31.10}/UVXUSAGE.md +0 -0
  31. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/.gitignore +0 -0
  32. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/.pre-commit-config.yaml +0 -0
  33. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/CLAUDE.md +0 -0
  34. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/RULES.md +0 -0
  35. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/__init__.py +0 -0
  36. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/__main__.py +0 -0
  37. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/__init__.py +0 -0
  38. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/architect_agent.py +0 -0
  39. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/base.py +0 -0
  40. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/coordinator.py +0 -0
  41. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/documentation_agent.py +0 -0
  42. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/dry_agent.py +0 -0
  43. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/formatting_agent.py +0 -0
  44. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/import_optimization_agent.py +0 -0
  45. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/performance_agent.py +0 -0
  46. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/proactive_agent.py +0 -0
  47. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/refactoring_agent.py +0 -0
  48. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/security_agent.py +0 -0
  49. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/test_creation_agent.py +0 -0
  50. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/test_specialist_agent.py +0 -0
  51. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/agents/tracker.py +0 -0
  52. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/api.py +0 -0
  53. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/__init__.py +0 -0
  54. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/facade.py +0 -0
  55. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/handlers.py +0 -0
  56. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/interactive.py +0 -0
  57. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/options.py +0 -0
  58. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/cli/utils.py +0 -0
  59. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/code_cleaner.py +0 -0
  60. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/config/__init__.py +0 -0
  61. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/config/hooks.py +0 -0
  62. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/__init__.py +0 -0
  63. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/autofix_coordinator.py +0 -0
  64. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/container.py +0 -0
  65. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/enhanced_container.py +0 -0
  66. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/performance.py +0 -0
  67. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/proactive_workflow.py +0 -0
  68. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/core/session_coordinator.py +0 -0
  69. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/dynamic_config.py +0 -0
  70. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/errors.py +0 -0
  71. {crackerjack-0.31.8 → crackerjack-0.31.10/crackerjack}/example.mcp.json +0 -0
  72. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/executors/__init__.py +0 -0
  73. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/executors/async_hook_executor.py +0 -0
  74. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/executors/cached_hook_executor.py +0 -0
  75. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/executors/individual_hook_executor.py +0 -0
  76. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/__init__.py +0 -0
  77. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/adaptive_learning.py +0 -0
  78. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/agent_orchestrator.py +0 -0
  79. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/agent_registry.py +0 -0
  80. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/agent_selector.py +0 -0
  81. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/intelligence/integration.py +0 -0
  82. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/interactive.py +0 -0
  83. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/__init__.py +0 -0
  84. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/async_hook_manager.py +0 -0
  85. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/hook_manager.py +0 -0
  86. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/publish_manager.py +0 -0
  87. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/test_command_builder.py +0 -0
  88. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/test_executor.py +0 -0
  89. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/test_manager_backup.py +0 -0
  90. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/managers/test_progress.py +0 -0
  91. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/__init__.py +0 -0
  92. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/cache.py +0 -0
  93. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/client_runner.py +0 -0
  94. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/context.py +0 -0
  95. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/dashboard.py +0 -0
  96. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
  97. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
  98. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/file_monitor.py +0 -0
  99. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/progress_components.py +0 -0
  100. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/progress_monitor.py +0 -0
  101. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/progress_monitor.tcss +0 -0
  102. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/rate_limiter.py +0 -0
  103. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/server.py +0 -0
  104. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/server_core.py +0 -0
  105. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/service_watchdog.py +0 -0
  106. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/state.py +0 -0
  107. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/task_manager.py +0 -0
  108. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/__init__.py +0 -0
  109. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/core_tools.py +0 -0
  110. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/error_analyzer.py +0 -0
  111. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/execution_tools.py +0 -0
  112. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
  113. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
  114. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
  115. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
  116. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
  117. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/proactive_tools.py +0 -0
  118. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/progress_tools.py +0 -0
  119. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/tools/utility_tools.py +0 -0
  120. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/__init__.py +0 -0
  121. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/app.py +0 -0
  122. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/endpoints.py +0 -0
  123. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/jobs.py +0 -0
  124. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/server.py +0 -0
  125. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
  126. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/mcp/websocket_server.py +0 -0
  127. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/models/__init__.py +0 -0
  128. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/models/config.py +0 -0
  129. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/models/config_adapter.py +0 -0
  130. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/models/protocols.py +0 -0
  131. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/models/task.py +0 -0
  132. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
  133. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/monitoring/regression_prevention.py +0 -0
  134. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/orchestration/__init__.py +0 -0
  135. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
  136. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/orchestration/coverage_improvement.py +0 -0
  137. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/orchestration/execution_strategies.py +0 -0
  138. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/orchestration/test_progress_streamer.py +0 -0
  139. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/plugins/__init__.py +0 -0
  140. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/plugins/base.py +0 -0
  141. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/plugins/hooks.py +0 -0
  142. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/plugins/loader.py +0 -0
  143. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/plugins/managers.py +0 -0
  144. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/py313.py +0 -0
  145. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/__init__.py +0 -0
  146. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/cache.py +0 -0
  147. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/config.py +0 -0
  148. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/config_integrity.py +0 -0
  149. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/contextual_ai_assistant.py +0 -0
  150. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/debug.py +0 -0
  151. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/dependency_monitor.py +0 -0
  152. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/enhanced_filesystem.py +0 -0
  153. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/file_hasher.py +0 -0
  154. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/filesystem.py +0 -0
  155. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/health_metrics.py +0 -0
  156. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/log_manager.py +0 -0
  157. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/logging.py +0 -0
  158. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/metrics.py +0 -0
  159. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/pattern_cache.py +0 -0
  160. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/pattern_detector.py +0 -0
  161. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/performance_benchmarks.py +0 -0
  162. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/security.py +0 -0
  163. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/server_manager.py +0 -0
  164. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/smart_scheduling.py +0 -0
  165. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/tool_version_service.py +0 -0
  166. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/unified_config.py +0 -0
  167. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/services/version_checker.py +0 -0
  168. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/slash_commands/__init__.py +0 -0
  169. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/slash_commands/init.md +0 -0
  170. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/slash_commands/run.md +0 -0
  171. {crackerjack-0.31.8 → crackerjack-0.31.10}/crackerjack/slash_commands/status.md +0 -0
  172. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/AI_AGENT_DEBUGGING.md +0 -0
  173. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/API_REFERENCE.md +0 -0
  174. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/ARCHITECTURE.md +0 -0
  175. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/FUTURE-ENHANCEMENTS.md +0 -0
  176. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/SUB_AGENT_MONITORING_DESIGN.md +0 -0
  177. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/VERIFICATION_WORKFLOW.md +0 -0
  178. {crackerjack-0.31.8 → crackerjack-0.31.10}/docs/WORKFLOW_KNOWLEDGE_BASE.md +0 -0
  179. {crackerjack-0.31.8 → crackerjack-0.31.10}/excalidraw.log +0 -0
  180. {crackerjack-0.31.8 → crackerjack-0.31.10}/fix_terminal.sh +0 -0
  181. {crackerjack-0.31.8 → crackerjack-0.31.10}/requirements.txt +0 -0
  182. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/.coverage +0 -0
  183. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
  184. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/TESTING.md +0 -0
  185. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/TEST_COVERAGE_PLAN.md +0 -0
  186. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/__init__.py +0 -0
  187. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/conftest.py +0 -0
  188. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/coverage.json +0 -0
  189. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/data/comments_sample.txt +0 -0
  190. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/data/docstrings_sample.txt +0 -0
  191. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/data/expected_comments_sample.txt +0 -0
  192. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/data/init.py +0 -0
  193. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/scripts/__init__.py +0 -0
  194. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/scripts/agent_audit_report.py +0 -0
  195. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/scripts/run_test_suite.py +0 -0
  196. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test___main__.py +0 -0
  197. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_advanced_orchestrator_strategic.py +0 -0
  198. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_ai_agent_comprehensive.py +0 -0
  199. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_ai_agent_workflow.py +0 -0
  200. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_async_hook_executor.py +0 -0
  201. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_cli_strategic.py +0 -0
  202. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_code_cleaner.py +0 -0
  203. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_contextual_ai_assistant_strategic.py +0 -0
  204. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_additional_strategic.py +0 -0
  205. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_autofix_coordinator.py +0 -0
  206. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_comprehensive.py +0 -0
  207. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_coverage.py +0 -0
  208. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_enhanced_container.py +0 -0
  209. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_modules.py +0 -0
  210. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_performance.py +0 -0
  211. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_strategic.py +0 -0
  212. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_strategic_coverage.py +0 -0
  213. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_core_workflow_orchestration_deep_quality.py +0 -0
  214. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_dependency_monitor_strategic.py +0 -0
  215. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_documentation_agent.py +0 -0
  216. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_documentation_agent_simple.py +0 -0
  217. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_dynamic_config.py +0 -0
  218. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_dynamic_config_coverage.py +0 -0
  219. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_enhanced_filesystem.py +0 -0
  220. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
  221. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_enhanced_filesystem_coverage.py +0 -0
  222. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_enhanced_filesystem_integration.py +0 -0
  223. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_enhanced_filesystem_strategic.py +0 -0
  224. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_filesystem_coverage.py +0 -0
  225. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_health_metrics_strategic.py +0 -0
  226. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_hook_manager_simple.py +0 -0
  227. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_import_coverage_consolidated.py +0 -0
  228. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_import_optimization_agent.py +0 -0
  229. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_intelligence_system.py +0 -0
  230. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_large_modules_coverage.py +0 -0
  231. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_main_entry_coverage.py +0 -0
  232. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_main_module.py +0 -0
  233. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_managers_consolidated.py +0 -0
  234. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_managers_strategic_coverage.py +0 -0
  235. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_additional_strategic.py +0 -0
  236. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_core_strategic.py +0 -0
  237. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_progress_monitor.py +0 -0
  238. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_progress_strategic.py +0 -0
  239. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_server.py +0 -0
  240. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_strategic.py +0 -0
  241. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_mcp_websocket_lifecycle_deep_quality.py +0 -0
  242. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_models_comprehensive.py +0 -0
  243. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_models_config_adapter_coverage.py +0 -0
  244. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_models_focused.py +0 -0
  245. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_models_strategic.py +0 -0
  246. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_models_task_coverage.py +0 -0
  247. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_modernized_code.py +0 -0
  248. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_orchestration_advanced_strategic.py +0 -0
  249. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_orchestration_strategic.py +0 -0
  250. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_performance_agent.py +0 -0
  251. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_performance_agent_simple.py +0 -0
  252. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_performance_benchmarks_focused.py +0 -0
  253. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_performance_benchmarks_strategic.py +0 -0
  254. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_phase_coordinator_simple.py +0 -0
  255. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_plugins_base_strategic.py +0 -0
  256. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_plugins_comprehensive.py +0 -0
  257. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_plugins_coverage.py +0 -0
  258. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_plugins_strategic.py +0 -0
  259. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_plugins_system_strategic.py +0 -0
  260. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_proactive_agent_system.py +0 -0
  261. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_protocol_compliance.py +0 -0
  262. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_publish_manager_coverage.py +0 -0
  263. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_py313_coverage.py +0 -0
  264. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_pytest_features.py +0 -0
  265. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_refactoring_agent.py +0 -0
  266. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_server_manager_strategic.py +0 -0
  267. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_services_coverage.py +0 -0
  268. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_services_strategic.py +0 -0
  269. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_session_coordinator.py +0 -0
  270. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_session_coordinator_coverage.py +0 -0
  271. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_simple_tool_version_service.py +0 -0
  272. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_structured_errors.py +0 -0
  273. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_structured_logging.py +0 -0
  274. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_terminal_restoration.py +0 -0
  275. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_terminal_state.py +0 -0
  276. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_advanced.py +0 -0
  277. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_business_logic.py +0 -0
  278. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_coverage.py +0 -0
  279. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_deep_coverage.py +0 -0
  280. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_functional.py +0 -0
  281. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_simple_working.py +0 -0
  282. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_tool_version_service_strategic.py +0 -0
  283. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_unified_api.py +0 -0
  284. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_unified_config.py +0 -0
  285. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_workflow_integration.py +0 -0
  286. {crackerjack-0.31.8 → crackerjack-0.31.10}/tests/test_workflow_orchestrator.py +0 -0
  287. {crackerjack-0.31.8 → crackerjack-0.31.10}/tools.yaml +0 -0
@@ -0,0 +1,422 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased] - 2025-09-02
9
+
10
+ ### Added
11
+
12
+ - feat: add new feature
13
+
14
+ ### Fixed
15
+
16
+ - fix: resolve bug in parser
17
+
18
+ ## [Unreleased] - 2025-09-02
19
+
20
+ ### Added
21
+
22
+ - feat: add new feature
23
+
24
+ ### Fixed
25
+
26
+ - fix: resolve bug in parser
27
+
28
+ ## [Unreleased] - 2025-09-02
29
+
30
+ ### Added
31
+
32
+ - feat: add new feature
33
+
34
+ ### Fixed
35
+
36
+ - fix: resolve bug in parser
37
+
38
+ ## [Unreleased] - 2025-09-02
39
+
40
+ ### Added
41
+
42
+ - feat: add new feature
43
+
44
+ ### Fixed
45
+
46
+ - fix: resolve bug in parser
47
+
48
+ ## [Unreleased] - 2025-09-02
49
+
50
+ ### Added
51
+
52
+ - feat: add new feature
53
+
54
+ ### Fixed
55
+
56
+ - fix: resolve bug in parser
57
+
58
+ ## [Unreleased] - 2025-09-02
59
+
60
+ ### Added
61
+
62
+ - feat: add new feature
63
+
64
+ ### Fixed
65
+
66
+ - fix: resolve bug in parser
67
+
68
+ ## [Unreleased] - 2025-09-02
69
+
70
+ ### Added
71
+
72
+ - feat: add new feature
73
+
74
+ ### Fixed
75
+
76
+ - fix: resolve bug in parser
77
+
78
+ ## [Unreleased] - 2025-09-02
79
+
80
+ ### Added
81
+
82
+ - feat: add new feature
83
+
84
+ ### Fixed
85
+
86
+ - fix: resolve bug in parser
87
+
88
+ ## [Unreleased] - 2025-09-01
89
+
90
+ ### Added
91
+
92
+ - feat: add new feature
93
+
94
+ ### Fixed
95
+
96
+ - fix: resolve bug in parser
97
+
98
+ ## [Unreleased] - 2025-09-01
99
+
100
+ ### Added
101
+
102
+ - feat: add new feature
103
+
104
+ ### Fixed
105
+
106
+ - fix: resolve bug in parser
107
+
108
+ ## [Unreleased] - 2025-09-01
109
+
110
+ ### Added
111
+
112
+ - feat: add new feature
113
+
114
+ ### Fixed
115
+
116
+ - fix: resolve bug in parser
117
+
118
+ ## [Unreleased] - 2025-09-01
119
+
120
+ ### Added
121
+
122
+ - feat: add new feature
123
+
124
+ ### Fixed
125
+
126
+ - fix: resolve bug in parser
127
+
128
+ ## [Unreleased] - 2025-09-01
129
+
130
+ ### Added
131
+
132
+ - feat: add new feature
133
+
134
+ ### Fixed
135
+
136
+ - fix: resolve bug in parser
137
+
138
+ ## [Unreleased] - 2025-09-01
139
+
140
+ ### Added
141
+
142
+ - feat: add new feature
143
+
144
+ ### Fixed
145
+
146
+ - fix: resolve bug in parser
147
+
148
+ ## [Unreleased] - 2025-09-01
149
+
150
+ ### Added
151
+
152
+ - feat: add new feature
153
+
154
+ ### Fixed
155
+
156
+ - fix: resolve bug in parser
157
+
158
+ ## [Unreleased] - 2025-09-01
159
+
160
+ ### Added
161
+
162
+ - feat: add new feature
163
+
164
+ ### Fixed
165
+
166
+ - fix: resolve bug in parser
167
+
168
+ ## [Unreleased] - 2025-09-01
169
+
170
+ ### Added
171
+
172
+ - feat: add new feature
173
+
174
+ ### Fixed
175
+
176
+ - fix: resolve bug in parser
177
+
178
+ ## [Unreleased] - 2025-09-01
179
+
180
+ ### Added
181
+
182
+ - feat: add new feature
183
+
184
+ ### Fixed
185
+
186
+ - fix: resolve bug in parser
187
+
188
+ ## [Unreleased] - 2025-09-01
189
+
190
+ ### Added
191
+
192
+ - feat: add new feature
193
+
194
+ ### Fixed
195
+
196
+ - fix: resolve bug in parser
197
+
198
+ ## [Unreleased] - 2025-09-01
199
+
200
+ ### Added
201
+
202
+ - feat: add new feature
203
+
204
+ ### Fixed
205
+
206
+ - fix: resolve bug in parser
207
+
208
+ ## [Unreleased] - 2025-09-01
209
+
210
+ ### Added
211
+
212
+ - feat: add new feature
213
+
214
+ ### Fixed
215
+
216
+ - fix: resolve bug in parser
217
+
218
+ ## [Unreleased] - 2025-09-01
219
+
220
+ ### Added
221
+
222
+ - feat: add new feature
223
+
224
+ ### Fixed
225
+
226
+ - fix: resolve bug in parser
227
+
228
+ ## [Unreleased] - 2025-09-01
229
+
230
+ ### Added
231
+
232
+ - feat: add new feature
233
+
234
+ ### Fixed
235
+
236
+ - fix: resolve bug in parser
237
+
238
+ ## [0.31.8] - 2025-09-01
239
+
240
+ ### Fixed
241
+
242
+ - Critical bug in AI agent workflow where specific error details were not being captured from hook failures
243
+ - Fixed `HookExecutor` to properly capture subprocess output in `issues_found` field
244
+ - Fixed `AsyncWorkflowOrchestrator._collect_comprehensive_hook_issues_async()` to extract specific issues from `HookResult.issues_found`
245
+ - Fixed `_collect_test_issues_async()` to use `test_manager.get_test_failures()` for detailed error information
246
+ - Connected `_apply_ai_fixes_async()` to existing `AgentCoordinator` system for structured issue processing
247
+ - Added `_parse_issues_for_agents()` method to convert string issues to structured `Issue` objects
248
+ - Resolved pyright type errors in async workflow orchestrator
249
+
250
+ ### Improved
251
+
252
+ - Enhanced AI agent error collection to provide specific details instead of generic messages
253
+ - Improved iterative fixing workflow to process all collected issues in batch rather than stopping on first failure
254
+ - Better integration between hook execution and AI agent fixing phases
255
+
256
+ ## [0.31.7] - 2025-09-01
257
+
258
+ ### Added
259
+
260
+ - Enhanced configuration management and dependency updates
261
+ - Improved core workflow orchestration patterns
262
+
263
+ ### Fixed
264
+
265
+ - Configuration consistency across different execution modes
266
+ - Core dependency management improvements
267
+
268
+ ## [0.31.6] - 2025-09-01
269
+
270
+ ### Added
271
+
272
+ - Documentation updates for AI agent workflow rules
273
+ - Enhanced configuration management for modular architecture
274
+
275
+ ### Fixed
276
+
277
+ - Core workflow improvements and configuration consistency
278
+ - Documentation accuracy for recent architectural changes
279
+
280
+ ## [0.31.5] - 2025-09-01
281
+
282
+ ### Added
283
+
284
+ - Comprehensive AI agent workflow documentation (AI-AGENT-RULES.md)
285
+ - Detailed iteration protocol specifications for AI agent fixing
286
+ - Sub-agent architecture documentation with 9 specialized agents
287
+ - Enhanced error collection and batch fixing patterns
288
+
289
+ ### Fixed
290
+
291
+ - AI agent workflow iteration boundaries and fix application timing
292
+ - Progress validation between iterations
293
+ - WebSocket progress reporting for MCP server integration
294
+
295
+ ## [0.31.4] - 2025-09-01
296
+
297
+ ### Added
298
+
299
+ - Modular MCP server architecture (70% line reduction from 3,116 to 921 lines)
300
+ - WebSocket server refactoring (35% reduction from 1,479 to 944 lines)
301
+ - Enhanced filesystem operations with XDG compliance and atomic operations
302
+ - Plugin system architecture with dynamic loading and dependency resolution
303
+
304
+ ### Fixed
305
+
306
+ - CLI entry point complexity reduction (80% reduction from 601 to 122 lines)
307
+ - Protocol-based dependency injection improvements
308
+ - Thread-safe session state management with async locks
309
+ - Service lifecycle management with enhanced container patterns
310
+
311
+ ## [0.31.3] - 2025-09-01
312
+
313
+ ### Added
314
+
315
+ - Enhanced container with service lifetime management (SINGLETON, TRANSIENT, SCOPED)
316
+ - Advanced filesystem operations with backup management and security validation
317
+ - Comprehensive health metrics and performance benchmarking
318
+ - Plugin-based hook system with custom validation rules
319
+
320
+ ### Fixed
321
+
322
+ - Service descriptor with factory support and dependency resolution
323
+ - Thread-local scoping for singleton services
324
+ - Circular dependency detection in enhanced container
325
+ - Performance monitoring for file operations
326
+
327
+ ## [0.31.0] - 2025-08-31
328
+
329
+ ### Added
330
+
331
+ - Major architectural refactoring from monolithic to modular design
332
+ - Dependency injection container with protocol-based interfaces
333
+ - Advanced workflow orchestration with parallel execution strategies
334
+ - Session coordination with cleanup handlers and progress management
335
+ - Comprehensive manager pattern for hook, test, and publish operations
336
+
337
+ ### Changed
338
+
339
+ - **BREAKING**: Migrated from monolithic `Crackerjack` class to modular `WorkflowOrchestrator`
340
+ - Restructured CLI interface with dedicated options and handlers modules
341
+ - Enhanced async/await patterns throughout the codebase
342
+ - Protocol-based interfaces in `models/protocols.py` for better testability
343
+
344
+ ### Fixed
345
+
346
+ - All 31+ refurb violations in agents directory (FURB107, FURB109, FURB118, etc.)
347
+ - Major complexity reductions in critical functions (34→3, 33→2)
348
+ - Import error prevention with proper protocol usage
349
+ - Fast hooks consistency and reliability improvements
350
+
351
+ ## [0.30.3] - 2025-08-29
352
+
353
+ ### Added
354
+
355
+ - Coverage ratchet system targeting 100% test coverage
356
+ - Milestone celebration system for coverage achievements
357
+ - Progressive coverage improvement with no regression policy
358
+ - Enhanced test management with intelligent parallelization
359
+
360
+ ### Changed
361
+
362
+ - Replaced arbitrary coverage limits with continuous improvement model
363
+ - Enhanced testing framework with timeout and worker configuration
364
+ - Rich terminal displays for coverage progress visualization
365
+
366
+ ### Fixed
367
+
368
+ - Test execution reliability and performance optimization
369
+ - Coverage measurement accuracy and consistency
370
+ - Memory usage optimization for large test suites
371
+
372
+ ## [0.30.2] - 2025-08-29
373
+
374
+ ### Added
375
+
376
+ - AI agent integration with MCP (Model Context Protocol) server
377
+ - WebSocket-based progress streaming for real-time monitoring
378
+ - Comprehensive pre-commit hook management with fast/comprehensive stages
379
+ - Service watchdog for automatic MCP and WebSocket server monitoring
380
+
381
+ ### Changed
382
+
383
+ - Enhanced CLI with AI agent mode and interactive Rich UI
384
+ - Improved error handling and structured output for AI agents
385
+ - Advanced workflow orchestration with session coordination
386
+
387
+ ### Fixed
388
+
389
+ - MCP server stability and connection handling
390
+ - WebSocket progress reporting accuracy
391
+ - Pre-commit hook execution reliability and performance
392
+
393
+ ______________________________________________________________________
394
+
395
+ ## Historical Context
396
+
397
+ This changelog was reconstructed from git history on 2025-09-02. Prior to v0.30.2, Crackerjack underwent significant development including:
398
+
399
+ - Initial Python project management tool creation
400
+ - UV package manager integration
401
+ - Ruff, pytest, and pre-commit hook unification
402
+ - Basic quality enforcement workflow implementation
403
+ - Foundation for modular architecture patterns
404
+
405
+ For detailed commit history, use: `git log --oneline --since="2025-08-01"`
406
+
407
+ ## Contributing
408
+
409
+ When updating this changelog:
410
+
411
+ 1. Follow [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format
412
+ 1. Group changes under Added, Changed, Deprecated, Removed, Fixed, Security
413
+ 1. Include version numbers and dates for all releases
414
+ 1. Link to relevant issues and pull requests when applicable
415
+ 1. Focus on user-facing changes rather than internal refactoring details
416
+
417
+ ## Version Links
418
+
419
+ - \[0.31.8\]: Latest release with AI agent workflow fixes
420
+ - \[0.31.0\]: Major architectural refactoring to modular design
421
+ - \[0.30.3\]: Coverage ratchet system introduction
422
+ - \[0.30.2\]: AI agent and MCP server integration
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crackerjack
3
- Version: 0.31.8
3
+ Version: 0.31.10
4
4
  Summary: Opinionated Python project management tool
5
5
  Project-URL: documentation, https://github.com/lesleslie/crackerjack
6
6
  Project-URL: homepage, https://github.com/lesleslie/crackerjack
@@ -6,6 +6,7 @@ from pathlib import Path
6
6
 
7
7
  from rich.console import Console
8
8
 
9
+ from crackerjack.agents.base import FixResult, Issue, IssueType, Priority
9
10
  from crackerjack.models.protocols import OptionsProtocol
10
11
 
11
12
  from .phase_coordinator import PhaseCoordinator
@@ -233,6 +234,113 @@ class AsyncWorkflowPipeline:
233
234
 
234
235
  return "continue"
235
236
 
237
+ def _parse_issues_for_agents(
238
+ self, test_issues: list[str], hook_issues: list[str]
239
+ ) -> list[Issue]:
240
+ """Parse string issues into structured Issue objects for AI agent processing."""
241
+ structured_issues = []
242
+
243
+ # Parse hook issues using dedicated parsers
244
+ for issue in hook_issues:
245
+ parsed_issue = self._parse_single_hook_issue(issue)
246
+ structured_issues.append(parsed_issue)
247
+
248
+ # Parse test issues using dedicated parser
249
+ for issue in test_issues:
250
+ parsed_issue = self._parse_single_test_issue(issue)
251
+ structured_issues.append(parsed_issue)
252
+
253
+ return structured_issues
254
+
255
+ def _parse_single_hook_issue(self, issue: str) -> Issue:
256
+ """Parse a single hook issue into structured format."""
257
+ from crackerjack.agents.base import IssueType, Priority
258
+
259
+ # Try refurb-specific parsing first
260
+ if "refurb:" in issue and "[FURB" in issue:
261
+ return self._parse_refurb_issue(issue)
262
+
263
+ # Use generic hook issue parsers
264
+ hook_type_mapping = {
265
+ "pyright:": (IssueType.TYPE_ERROR, Priority.HIGH, "pyright"),
266
+ "Type error": (IssueType.TYPE_ERROR, Priority.HIGH, "pyright"),
267
+ "bandit:": (IssueType.SECURITY, Priority.HIGH, "bandit"),
268
+ "vulture:": (IssueType.DEAD_CODE, Priority.MEDIUM, "vulture"),
269
+ "complexipy:": (IssueType.COMPLEXITY, Priority.MEDIUM, "complexipy"),
270
+ }
271
+
272
+ for keyword, (issue_type, priority, stage) in hook_type_mapping.items():
273
+ if keyword in issue:
274
+ return self._create_generic_issue(issue, issue_type, priority, stage)
275
+
276
+ # Default to generic hook issue
277
+ return self._create_generic_issue(
278
+ issue, IssueType.FORMATTING, Priority.MEDIUM, "hook"
279
+ )
280
+
281
+ def _parse_refurb_issue(self, issue: str) -> Issue:
282
+ """Parse refurb-specific issue format."""
283
+ import re
284
+ import uuid
285
+
286
+ from crackerjack.agents.base import Issue, IssueType, Priority
287
+
288
+ match = re.search(r"refurb:\s*(.+?):(\d+):(\d+)\s+\[(\w+)\]:\s*(.+)", issue)
289
+ if match:
290
+ file_path, line_num, _, error_code, message = match.groups()
291
+ return Issue(
292
+ id=str(uuid.uuid4()),
293
+ type=IssueType.FORMATTING,
294
+ severity=Priority.MEDIUM,
295
+ message=f"[{error_code}] {message}",
296
+ file_path=file_path,
297
+ line_number=int(line_num),
298
+ details=[issue],
299
+ stage="refurb",
300
+ )
301
+
302
+ # Fallback to generic parsing if regex fails
303
+ return self._create_generic_issue(
304
+ issue, IssueType.FORMATTING, Priority.MEDIUM, "refurb"
305
+ )
306
+
307
+ def _parse_single_test_issue(self, issue: str) -> Issue:
308
+ """Parse a single test issue into structured format."""
309
+ import uuid
310
+
311
+ from crackerjack.agents.base import Issue, IssueType, Priority
312
+
313
+ if "FAILED" in issue or "ERROR" in issue:
314
+ severity = Priority.HIGH
315
+ else:
316
+ severity = Priority.MEDIUM
317
+
318
+ return Issue(
319
+ id=str(uuid.uuid4()),
320
+ type=IssueType.TEST_FAILURE,
321
+ severity=severity,
322
+ message=issue,
323
+ details=[issue],
324
+ stage="test",
325
+ )
326
+
327
+ def _create_generic_issue(
328
+ self, issue: str, issue_type: IssueType, priority: Priority, stage: str
329
+ ) -> Issue:
330
+ """Create a generic Issue object with standard fields."""
331
+ import uuid
332
+
333
+ from crackerjack.agents.base import Issue
334
+
335
+ return Issue(
336
+ id=str(uuid.uuid4()),
337
+ type=issue_type,
338
+ severity=priority,
339
+ message=issue,
340
+ details=[issue],
341
+ stage=stage,
342
+ )
343
+
236
344
  async def _run_final_workflow_phases(self, options: OptionsProtocol) -> bool:
237
345
  """Run the final publishing and commit phases."""
238
346
  if not self.phases.run_publishing_phase(options):
@@ -263,7 +371,13 @@ class AsyncWorkflowPipeline:
263
371
  if success:
264
372
  return []
265
373
  else:
266
- return ["Test failures detected - see logs for details"]
374
+ # Get specific test failure details from test manager
375
+ test_failures = self.phases.test_manager.get_test_failures()
376
+ if test_failures:
377
+ return [f"Test failure: {failure}" for failure in test_failures]
378
+ else:
379
+ # Fallback if no specific failures captured
380
+ return ["Test failures detected - see logs for details"]
267
381
  except Exception as e:
268
382
  return [f"Test execution error: {e}"]
269
383
 
@@ -272,11 +386,25 @@ class AsyncWorkflowPipeline:
272
386
  ) -> list[str]:
273
387
  """Collect all comprehensive hook issues without stopping on first failure."""
274
388
  try:
275
- success = await self._run_comprehensive_hooks_async(options)
276
- if success:
277
- return []
278
- else:
279
- return ["Comprehensive hook failures detected - see logs for details"]
389
+ # Run hooks and capture detailed results
390
+ hook_results = await asyncio.to_thread(
391
+ self.phases.hook_manager.run_comprehensive_hooks,
392
+ )
393
+
394
+ # Extract specific issues from failed hooks
395
+ all_issues = []
396
+ for result in hook_results:
397
+ if (
398
+ result.status in ("failed", "error", "timeout")
399
+ and result.issues_found
400
+ ):
401
+ # Add hook context to each issue for better AI agent understanding
402
+ hook_context = f"{result.name}: "
403
+ for issue in result.issues_found:
404
+ all_issues.append(hook_context + issue)
405
+
406
+ return all_issues
407
+
280
408
  except Exception as e:
281
409
  return [f"Comprehensive hooks error: {e}"]
282
410
 
@@ -287,7 +415,7 @@ class AsyncWorkflowPipeline:
287
415
  hook_issues: list[str],
288
416
  iteration: int,
289
417
  ) -> bool:
290
- """Apply AI fixes for all collected issues in batch."""
418
+ """Apply AI fixes for all collected issues in batch using AgentCoordinator."""
291
419
  all_issues = test_issues + hook_issues
292
420
  if not all_issues:
293
421
  return True
@@ -296,24 +424,62 @@ class AsyncWorkflowPipeline:
296
424
  f"🔧 Applying AI fixes for {len(all_issues)} issues in iteration {iteration}"
297
425
  )
298
426
 
299
- # This would integrate with the AI agent system to actually apply fixes
300
- # For now, we'll simulate the fixing process
301
427
  try:
302
- # In a real implementation, this would:
303
- # 1. Analyze all collected issues
304
- # 2. Generate fixes using AI agents
305
- # 3. Apply the fixes to source code
306
- # 4. Return success/failure status
428
+ return await self._execute_ai_fix_workflow(
429
+ test_issues, hook_issues, iteration
430
+ )
431
+ except Exception as e:
432
+ return self._handle_ai_fix_error(e)
307
433
 
308
- # Placeholder for actual AI fixing logic
309
- await asyncio.sleep(0.1) # Simulate processing time
434
+ async def _execute_ai_fix_workflow(
435
+ self, test_issues: list[str], hook_issues: list[str], iteration: int
436
+ ) -> bool:
437
+ """Execute the AI fix workflow and return success status."""
438
+ structured_issues = self._parse_issues_for_agents(test_issues, hook_issues)
310
439
 
311
- self.console.print(f"✅ AI fixes applied for iteration {iteration}")
440
+ if not structured_issues:
441
+ self.console.print("⚠️ No actionable issues found for AI agents")
312
442
  return True
313
443
 
314
- except Exception as e:
315
- self.logger.error(f"AI fixing failed: {e}")
316
- return False
444
+ coordinator = self._create_agent_coordinator()
445
+ fix_result = await coordinator.handle_issues(structured_issues)
446
+
447
+ self._report_fix_results(fix_result, iteration)
448
+ return fix_result.success
449
+
450
+ def _create_agent_coordinator(self):
451
+ """Create and configure the AI agent coordinator."""
452
+ from crackerjack.agents.base import AgentContext
453
+ from crackerjack.agents.coordinator import AgentCoordinator
454
+
455
+ context = AgentContext(project_path=self.pkg_path)
456
+ return AgentCoordinator(context)
457
+
458
+ def _report_fix_results(self, fix_result: FixResult, iteration: int) -> None:
459
+ """Report the results of AI fix attempts to the console."""
460
+ if fix_result.success:
461
+ self._report_successful_fixes(fix_result, iteration)
462
+ else:
463
+ self._report_failed_fixes(fix_result, iteration)
464
+
465
+ def _report_successful_fixes(self, fix_result: FixResult, iteration: int) -> None:
466
+ """Report successful AI fixes to the console."""
467
+ self.console.print(f"✅ AI fixes applied successfully in iteration {iteration}")
468
+ if fix_result.fixes_applied:
469
+ self.console.print(f" Applied {len(fix_result.fixes_applied)} fixes")
470
+
471
+ def _report_failed_fixes(self, fix_result: FixResult, iteration: int) -> None:
472
+ """Report failed AI fixes to the console."""
473
+ self.console.print(f"⚠️ Some AI fixes failed in iteration {iteration}")
474
+ if fix_result.remaining_issues:
475
+ for error in fix_result.remaining_issues[:3]: # Show first 3 errors
476
+ self.console.print(f" Error: {error}")
477
+
478
+ def _handle_ai_fix_error(self, error: Exception) -> bool:
479
+ """Handle errors during AI fix execution."""
480
+ self.logger.error(f"AI fixing failed: {error}")
481
+ self.console.print(f"❌ AI agent system error: {error}")
482
+ return False
317
483
 
318
484
 
319
485
  class AsyncWorkflowOrchestrator:
@@ -157,7 +157,7 @@ class PhaseCoordinator:
157
157
  "CLAUDE.md",
158
158
  "RULES.md",
159
159
  ".gitignore",
160
- "mcp.json",
160
+ "example.mcp.json",
161
161
  "uv.lock",
162
162
  ]
163
163