crackerjack 0.31.7__tar.gz → 0.31.9__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 (286) hide show
  1. crackerjack-0.31.9/CHANGELOG.md +302 -0
  2. {crackerjack-0.31.7 → crackerjack-0.31.9}/PKG-INFO +1 -1
  3. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/async_workflow_orchestrator.py +186 -20
  4. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/workflow_orchestrator.py +225 -57
  5. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/executors/hook_executor.py +95 -47
  6. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/workflow_executor.py +8 -7
  7. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/pyproject.toml +6 -1
  8. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/git.py +48 -12
  9. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/initialization.py +55 -6
  10. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/uv.lock +151 -4
  11. {crackerjack-0.31.7 → crackerjack-0.31.9}/pyproject.toml +6 -1
  12. {crackerjack-0.31.7 → crackerjack-0.31.9}/uv.lock +151 -4
  13. crackerjack-0.31.7/.mcp.json.bak +0 -154
  14. crackerjack-0.31.7/CHANGELOG.md +0 -469
  15. crackerjack-0.31.7/crackerjack/.mcp.json.bak +0 -186
  16. {crackerjack-0.31.7 → crackerjack-0.31.9}/.github/FUNDING.yml +0 -0
  17. {crackerjack-0.31.7 → crackerjack-0.31.9}/.gitignore +0 -0
  18. {crackerjack-0.31.7 → crackerjack-0.31.9}/.pre-commit-config.yaml +0 -0
  19. {crackerjack-0.31.7 → crackerjack-0.31.9}/AGENTS.md +0 -0
  20. {crackerjack-0.31.7 → crackerjack-0.31.9}/AI-AGENT-RULES.md +0 -0
  21. {crackerjack-0.31.7 → crackerjack-0.31.9}/CLAUDE.md +0 -0
  22. {crackerjack-0.31.7 → crackerjack-0.31.9}/LICENSE +0 -0
  23. {crackerjack-0.31.7 → crackerjack-0.31.9}/README-AI-AGENT.md +0 -0
  24. {crackerjack-0.31.7 → crackerjack-0.31.9}/README.md +0 -0
  25. {crackerjack-0.31.7 → crackerjack-0.31.9}/RULES.md +0 -0
  26. {crackerjack-0.31.7 → crackerjack-0.31.9}/UVXUSAGE.md +0 -0
  27. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/.gitignore +0 -0
  28. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/.pre-commit-config.yaml +0 -0
  29. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/CLAUDE.md +0 -0
  30. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/RULES.md +0 -0
  31. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/__init__.py +0 -0
  32. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/__main__.py +0 -0
  33. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/__init__.py +0 -0
  34. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/architect_agent.py +0 -0
  35. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/base.py +0 -0
  36. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/coordinator.py +0 -0
  37. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/documentation_agent.py +0 -0
  38. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/dry_agent.py +0 -0
  39. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/formatting_agent.py +0 -0
  40. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/import_optimization_agent.py +0 -0
  41. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/performance_agent.py +0 -0
  42. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/proactive_agent.py +0 -0
  43. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/refactoring_agent.py +0 -0
  44. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/security_agent.py +0 -0
  45. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/test_creation_agent.py +0 -0
  46. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/test_specialist_agent.py +0 -0
  47. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/agents/tracker.py +0 -0
  48. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/api.py +0 -0
  49. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/__init__.py +0 -0
  50. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/facade.py +0 -0
  51. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/handlers.py +0 -0
  52. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/interactive.py +0 -0
  53. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/options.py +0 -0
  54. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/cli/utils.py +0 -0
  55. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/code_cleaner.py +0 -0
  56. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/config/__init__.py +0 -0
  57. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/config/hooks.py +0 -0
  58. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/__init__.py +0 -0
  59. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/autofix_coordinator.py +0 -0
  60. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/container.py +0 -0
  61. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/enhanced_container.py +0 -0
  62. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/performance.py +0 -0
  63. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/phase_coordinator.py +0 -0
  64. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/proactive_workflow.py +0 -0
  65. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/core/session_coordinator.py +0 -0
  66. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/dynamic_config.py +0 -0
  67. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/errors.py +0 -0
  68. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/executors/__init__.py +0 -0
  69. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/executors/async_hook_executor.py +0 -0
  70. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/executors/cached_hook_executor.py +0 -0
  71. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/executors/individual_hook_executor.py +0 -0
  72. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/__init__.py +0 -0
  73. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/adaptive_learning.py +0 -0
  74. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/agent_orchestrator.py +0 -0
  75. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/agent_registry.py +0 -0
  76. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/agent_selector.py +0 -0
  77. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/intelligence/integration.py +0 -0
  78. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/interactive.py +0 -0
  79. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/__init__.py +0 -0
  80. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/async_hook_manager.py +0 -0
  81. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/hook_manager.py +0 -0
  82. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/publish_manager.py +0 -0
  83. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/test_command_builder.py +0 -0
  84. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/test_executor.py +0 -0
  85. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/test_manager.py +0 -0
  86. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/test_manager_backup.py +0 -0
  87. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/managers/test_progress.py +0 -0
  88. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/__init__.py +0 -0
  89. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/cache.py +0 -0
  90. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/client_runner.py +0 -0
  91. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/context.py +0 -0
  92. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/dashboard.py +0 -0
  93. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
  94. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
  95. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/file_monitor.py +0 -0
  96. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/progress_components.py +0 -0
  97. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/progress_monitor.py +0 -0
  98. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/progress_monitor.tcss +0 -0
  99. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/rate_limiter.py +0 -0
  100. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/server.py +0 -0
  101. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/server_core.py +0 -0
  102. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/service_watchdog.py +0 -0
  103. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/state.py +0 -0
  104. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/task_manager.py +0 -0
  105. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/__init__.py +0 -0
  106. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/core_tools.py +0 -0
  107. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/error_analyzer.py +0 -0
  108. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/execution_tools.py +0 -0
  109. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
  110. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
  111. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
  112. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
  113. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
  114. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/proactive_tools.py +0 -0
  115. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/progress_tools.py +0 -0
  116. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/tools/utility_tools.py +0 -0
  117. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/__init__.py +0 -0
  118. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/app.py +0 -0
  119. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/endpoints.py +0 -0
  120. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/jobs.py +0 -0
  121. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/server.py +0 -0
  122. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
  123. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/mcp/websocket_server.py +0 -0
  124. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/models/__init__.py +0 -0
  125. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/models/config.py +0 -0
  126. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/models/config_adapter.py +0 -0
  127. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/models/protocols.py +0 -0
  128. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/models/task.py +0 -0
  129. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
  130. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/monitoring/regression_prevention.py +0 -0
  131. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/orchestration/__init__.py +0 -0
  132. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
  133. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/orchestration/coverage_improvement.py +0 -0
  134. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/orchestration/execution_strategies.py +0 -0
  135. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/orchestration/test_progress_streamer.py +0 -0
  136. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/plugins/__init__.py +0 -0
  137. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/plugins/base.py +0 -0
  138. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/plugins/hooks.py +0 -0
  139. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/plugins/loader.py +0 -0
  140. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/plugins/managers.py +0 -0
  141. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/py313.py +0 -0
  142. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/__init__.py +0 -0
  143. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/cache.py +0 -0
  144. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/config.py +0 -0
  145. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/config_integrity.py +0 -0
  146. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/contextual_ai_assistant.py +0 -0
  147. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/coverage_ratchet.py +0 -0
  148. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/debug.py +0 -0
  149. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/dependency_monitor.py +0 -0
  150. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/enhanced_filesystem.py +0 -0
  151. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/file_hasher.py +0 -0
  152. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/filesystem.py +0 -0
  153. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/health_metrics.py +0 -0
  154. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/log_manager.py +0 -0
  155. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/logging.py +0 -0
  156. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/metrics.py +0 -0
  157. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/pattern_cache.py +0 -0
  158. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/pattern_detector.py +0 -0
  159. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/performance_benchmarks.py +0 -0
  160. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/security.py +0 -0
  161. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/server_manager.py +0 -0
  162. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/smart_scheduling.py +0 -0
  163. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/tool_version_service.py +0 -0
  164. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/unified_config.py +0 -0
  165. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/services/version_checker.py +0 -0
  166. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/slash_commands/__init__.py +0 -0
  167. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/slash_commands/init.md +0 -0
  168. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/slash_commands/run.md +0 -0
  169. {crackerjack-0.31.7 → crackerjack-0.31.9}/crackerjack/slash_commands/status.md +0 -0
  170. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/AI_AGENT_DEBUGGING.md +0 -0
  171. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/API_REFERENCE.md +0 -0
  172. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/ARCHITECTURE.md +0 -0
  173. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/FUTURE-ENHANCEMENTS.md +0 -0
  174. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/SUB_AGENT_MONITORING_DESIGN.md +0 -0
  175. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/VERIFICATION_WORKFLOW.md +0 -0
  176. {crackerjack-0.31.7 → crackerjack-0.31.9}/docs/WORKFLOW_KNOWLEDGE_BASE.md +0 -0
  177. {crackerjack-0.31.7 → crackerjack-0.31.9}/example.mcp.json +0 -0
  178. {crackerjack-0.31.7 → crackerjack-0.31.9}/excalidraw.log +0 -0
  179. {crackerjack-0.31.7 → crackerjack-0.31.9}/fix_terminal.sh +0 -0
  180. {crackerjack-0.31.7 → crackerjack-0.31.9}/requirements.txt +0 -0
  181. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/.coverage +0 -0
  182. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
  183. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/TESTING.md +0 -0
  184. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/TEST_COVERAGE_PLAN.md +0 -0
  185. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/__init__.py +0 -0
  186. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/conftest.py +0 -0
  187. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/coverage.json +0 -0
  188. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/data/comments_sample.txt +0 -0
  189. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/data/docstrings_sample.txt +0 -0
  190. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/data/expected_comments_sample.txt +0 -0
  191. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/data/init.py +0 -0
  192. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/scripts/__init__.py +0 -0
  193. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/scripts/agent_audit_report.py +0 -0
  194. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/scripts/run_test_suite.py +0 -0
  195. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test___main__.py +0 -0
  196. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_advanced_orchestrator_strategic.py +0 -0
  197. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_ai_agent_comprehensive.py +0 -0
  198. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_ai_agent_workflow.py +0 -0
  199. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_async_hook_executor.py +0 -0
  200. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_cli_strategic.py +0 -0
  201. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_code_cleaner.py +0 -0
  202. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_contextual_ai_assistant_strategic.py +0 -0
  203. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_additional_strategic.py +0 -0
  204. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_autofix_coordinator.py +0 -0
  205. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_comprehensive.py +0 -0
  206. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_coverage.py +0 -0
  207. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_enhanced_container.py +0 -0
  208. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_modules.py +0 -0
  209. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_performance.py +0 -0
  210. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_strategic.py +0 -0
  211. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_strategic_coverage.py +0 -0
  212. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_core_workflow_orchestration_deep_quality.py +0 -0
  213. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_dependency_monitor_strategic.py +0 -0
  214. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_documentation_agent.py +0 -0
  215. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_documentation_agent_simple.py +0 -0
  216. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_dynamic_config.py +0 -0
  217. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_dynamic_config_coverage.py +0 -0
  218. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_enhanced_filesystem.py +0 -0
  219. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
  220. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_enhanced_filesystem_coverage.py +0 -0
  221. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_enhanced_filesystem_integration.py +0 -0
  222. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_enhanced_filesystem_strategic.py +0 -0
  223. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_filesystem_coverage.py +0 -0
  224. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_health_metrics_strategic.py +0 -0
  225. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_hook_manager_simple.py +0 -0
  226. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_import_coverage_consolidated.py +0 -0
  227. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_import_optimization_agent.py +0 -0
  228. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_intelligence_system.py +0 -0
  229. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_large_modules_coverage.py +0 -0
  230. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_main_entry_coverage.py +0 -0
  231. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_main_module.py +0 -0
  232. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_managers_consolidated.py +0 -0
  233. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_managers_strategic_coverage.py +0 -0
  234. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_additional_strategic.py +0 -0
  235. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_core_strategic.py +0 -0
  236. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_progress_monitor.py +0 -0
  237. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_progress_strategic.py +0 -0
  238. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_server.py +0 -0
  239. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_strategic.py +0 -0
  240. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_mcp_websocket_lifecycle_deep_quality.py +0 -0
  241. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_models_comprehensive.py +0 -0
  242. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_models_config_adapter_coverage.py +0 -0
  243. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_models_focused.py +0 -0
  244. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_models_strategic.py +0 -0
  245. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_models_task_coverage.py +0 -0
  246. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_modernized_code.py +0 -0
  247. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_orchestration_advanced_strategic.py +0 -0
  248. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_orchestration_strategic.py +0 -0
  249. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_performance_agent.py +0 -0
  250. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_performance_agent_simple.py +0 -0
  251. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_performance_benchmarks_focused.py +0 -0
  252. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_performance_benchmarks_strategic.py +0 -0
  253. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_phase_coordinator_simple.py +0 -0
  254. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_plugins_base_strategic.py +0 -0
  255. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_plugins_comprehensive.py +0 -0
  256. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_plugins_coverage.py +0 -0
  257. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_plugins_strategic.py +0 -0
  258. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_plugins_system_strategic.py +0 -0
  259. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_proactive_agent_system.py +0 -0
  260. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_protocol_compliance.py +0 -0
  261. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_publish_manager_coverage.py +0 -0
  262. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_py313_coverage.py +0 -0
  263. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_pytest_features.py +0 -0
  264. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_refactoring_agent.py +0 -0
  265. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_server_manager_strategic.py +0 -0
  266. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_services_coverage.py +0 -0
  267. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_services_strategic.py +0 -0
  268. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_session_coordinator.py +0 -0
  269. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_session_coordinator_coverage.py +0 -0
  270. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_simple_tool_version_service.py +0 -0
  271. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_structured_errors.py +0 -0
  272. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_structured_logging.py +0 -0
  273. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_terminal_restoration.py +0 -0
  274. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_terminal_state.py +0 -0
  275. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_advanced.py +0 -0
  276. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_business_logic.py +0 -0
  277. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_coverage.py +0 -0
  278. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_deep_coverage.py +0 -0
  279. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_functional.py +0 -0
  280. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_simple_working.py +0 -0
  281. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_tool_version_service_strategic.py +0 -0
  282. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_unified_api.py +0 -0
  283. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_unified_config.py +0 -0
  284. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_workflow_integration.py +0 -0
  285. {crackerjack-0.31.7 → crackerjack-0.31.9}/tests/test_workflow_orchestrator.py +0 -0
  286. {crackerjack-0.31.7 → crackerjack-0.31.9}/tools.yaml +0 -0
@@ -0,0 +1,302 @@
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-01
9
+
10
+ ### Added
11
+
12
+ - feat: add new feature
13
+
14
+ ### Fixed
15
+
16
+ - fix: resolve bug in parser
17
+
18
+ ## [Unreleased] - 2025-09-01
19
+
20
+ ### Added
21
+
22
+ - feat: add new feature
23
+
24
+ ### Fixed
25
+
26
+ - fix: resolve bug in parser
27
+
28
+ ## [Unreleased] - 2025-09-01
29
+
30
+ ### Added
31
+
32
+ - feat: add new feature
33
+
34
+ ### Fixed
35
+
36
+ - fix: resolve bug in parser
37
+
38
+ ## [Unreleased] - 2025-09-01
39
+
40
+ ### Added
41
+
42
+ - feat: add new feature
43
+
44
+ ### Fixed
45
+
46
+ - fix: resolve bug in parser
47
+
48
+ ## [Unreleased] - 2025-09-01
49
+
50
+ ### Added
51
+
52
+ - feat: add new feature
53
+
54
+ ### Fixed
55
+
56
+ - fix: resolve bug in parser
57
+
58
+ ## [Unreleased] - 2025-09-01
59
+
60
+ ### Added
61
+
62
+ - feat: add new feature
63
+
64
+ ### Fixed
65
+
66
+ - fix: resolve bug in parser
67
+
68
+ ## [Unreleased] - 2025-09-01
69
+
70
+ ### Added
71
+
72
+ - feat: add new feature
73
+
74
+ ### Fixed
75
+
76
+ - fix: resolve bug in parser
77
+
78
+ ## [Unreleased] - 2025-09-01
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
+ ## [0.31.8] - 2025-09-01
119
+
120
+ ### Fixed
121
+
122
+ - Critical bug in AI agent workflow where specific error details were not being captured from hook failures
123
+ - Fixed `HookExecutor` to properly capture subprocess output in `issues_found` field
124
+ - Fixed `AsyncWorkflowOrchestrator._collect_comprehensive_hook_issues_async()` to extract specific issues from `HookResult.issues_found`
125
+ - Fixed `_collect_test_issues_async()` to use `test_manager.get_test_failures()` for detailed error information
126
+ - Connected `_apply_ai_fixes_async()` to existing `AgentCoordinator` system for structured issue processing
127
+ - Added `_parse_issues_for_agents()` method to convert string issues to structured `Issue` objects
128
+ - Resolved pyright type errors in async workflow orchestrator
129
+
130
+ ### Improved
131
+
132
+ - Enhanced AI agent error collection to provide specific details instead of generic messages
133
+ - Improved iterative fixing workflow to process all collected issues in batch rather than stopping on first failure
134
+ - Better integration between hook execution and AI agent fixing phases
135
+
136
+ ## [0.31.7] - 2025-09-01
137
+
138
+ ### Added
139
+
140
+ - Enhanced configuration management and dependency updates
141
+ - Improved core workflow orchestration patterns
142
+
143
+ ### Fixed
144
+
145
+ - Configuration consistency across different execution modes
146
+ - Core dependency management improvements
147
+
148
+ ## [0.31.6] - 2025-09-01
149
+
150
+ ### Added
151
+
152
+ - Documentation updates for AI agent workflow rules
153
+ - Enhanced configuration management for modular architecture
154
+
155
+ ### Fixed
156
+
157
+ - Core workflow improvements and configuration consistency
158
+ - Documentation accuracy for recent architectural changes
159
+
160
+ ## [0.31.5] - 2025-09-01
161
+
162
+ ### Added
163
+
164
+ - Comprehensive AI agent workflow documentation (AI-AGENT-RULES.md)
165
+ - Detailed iteration protocol specifications for AI agent fixing
166
+ - Sub-agent architecture documentation with 9 specialized agents
167
+ - Enhanced error collection and batch fixing patterns
168
+
169
+ ### Fixed
170
+
171
+ - AI agent workflow iteration boundaries and fix application timing
172
+ - Progress validation between iterations
173
+ - WebSocket progress reporting for MCP server integration
174
+
175
+ ## [0.31.4] - 2025-09-01
176
+
177
+ ### Added
178
+
179
+ - Modular MCP server architecture (70% line reduction from 3,116 to 921 lines)
180
+ - WebSocket server refactoring (35% reduction from 1,479 to 944 lines)
181
+ - Enhanced filesystem operations with XDG compliance and atomic operations
182
+ - Plugin system architecture with dynamic loading and dependency resolution
183
+
184
+ ### Fixed
185
+
186
+ - CLI entry point complexity reduction (80% reduction from 601 to 122 lines)
187
+ - Protocol-based dependency injection improvements
188
+ - Thread-safe session state management with async locks
189
+ - Service lifecycle management with enhanced container patterns
190
+
191
+ ## [0.31.3] - 2025-09-01
192
+
193
+ ### Added
194
+
195
+ - Enhanced container with service lifetime management (SINGLETON, TRANSIENT, SCOPED)
196
+ - Advanced filesystem operations with backup management and security validation
197
+ - Comprehensive health metrics and performance benchmarking
198
+ - Plugin-based hook system with custom validation rules
199
+
200
+ ### Fixed
201
+
202
+ - Service descriptor with factory support and dependency resolution
203
+ - Thread-local scoping for singleton services
204
+ - Circular dependency detection in enhanced container
205
+ - Performance monitoring for file operations
206
+
207
+ ## [0.31.0] - 2025-08-31
208
+
209
+ ### Added
210
+
211
+ - Major architectural refactoring from monolithic to modular design
212
+ - Dependency injection container with protocol-based interfaces
213
+ - Advanced workflow orchestration with parallel execution strategies
214
+ - Session coordination with cleanup handlers and progress management
215
+ - Comprehensive manager pattern for hook, test, and publish operations
216
+
217
+ ### Changed
218
+
219
+ - **BREAKING**: Migrated from monolithic `Crackerjack` class to modular `WorkflowOrchestrator`
220
+ - Restructured CLI interface with dedicated options and handlers modules
221
+ - Enhanced async/await patterns throughout the codebase
222
+ - Protocol-based interfaces in `models/protocols.py` for better testability
223
+
224
+ ### Fixed
225
+
226
+ - All 31+ refurb violations in agents directory (FURB107, FURB109, FURB118, etc.)
227
+ - Major complexity reductions in critical functions (34→3, 33→2)
228
+ - Import error prevention with proper protocol usage
229
+ - Fast hooks consistency and reliability improvements
230
+
231
+ ## [0.30.3] - 2025-08-29
232
+
233
+ ### Added
234
+
235
+ - Coverage ratchet system targeting 100% test coverage
236
+ - Milestone celebration system for coverage achievements
237
+ - Progressive coverage improvement with no regression policy
238
+ - Enhanced test management with intelligent parallelization
239
+
240
+ ### Changed
241
+
242
+ - Replaced arbitrary coverage limits with continuous improvement model
243
+ - Enhanced testing framework with timeout and worker configuration
244
+ - Rich terminal displays for coverage progress visualization
245
+
246
+ ### Fixed
247
+
248
+ - Test execution reliability and performance optimization
249
+ - Coverage measurement accuracy and consistency
250
+ - Memory usage optimization for large test suites
251
+
252
+ ## [0.30.2] - 2025-08-29
253
+
254
+ ### Added
255
+
256
+ - AI agent integration with MCP (Model Context Protocol) server
257
+ - WebSocket-based progress streaming for real-time monitoring
258
+ - Comprehensive pre-commit hook management with fast/comprehensive stages
259
+ - Service watchdog for automatic MCP and WebSocket server monitoring
260
+
261
+ ### Changed
262
+
263
+ - Enhanced CLI with AI agent mode and interactive Rich UI
264
+ - Improved error handling and structured output for AI agents
265
+ - Advanced workflow orchestration with session coordination
266
+
267
+ ### Fixed
268
+
269
+ - MCP server stability and connection handling
270
+ - WebSocket progress reporting accuracy
271
+ - Pre-commit hook execution reliability and performance
272
+
273
+ ______________________________________________________________________
274
+
275
+ ## Historical Context
276
+
277
+ This changelog was reconstructed from git history on 2025-09-02. Prior to v0.30.2, Crackerjack underwent significant development including:
278
+
279
+ - Initial Python project management tool creation
280
+ - UV package manager integration
281
+ - Ruff, pytest, and pre-commit hook unification
282
+ - Basic quality enforcement workflow implementation
283
+ - Foundation for modular architecture patterns
284
+
285
+ For detailed commit history, use: `git log --oneline --since="2025-08-01"`
286
+
287
+ ## Contributing
288
+
289
+ When updating this changelog:
290
+
291
+ 1. Follow [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format
292
+ 1. Group changes under Added, Changed, Deprecated, Removed, Fixed, Security
293
+ 1. Include version numbers and dates for all releases
294
+ 1. Link to relevant issues and pull requests when applicable
295
+ 1. Focus on user-facing changes rather than internal refactoring details
296
+
297
+ ## Version Links
298
+
299
+ - \[0.31.8\]: Latest release with AI agent workflow fixes
300
+ - \[0.31.0\]: Major architectural refactoring to modular design
301
+ - \[0.30.3\]: Coverage ratchet system introduction
302
+ - \[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.7
3
+ Version: 0.31.9
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: