crackerjack 0.37.9__py3-none-any.whl → 0.45.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. crackerjack/README.md +19 -0
  2. crackerjack/__init__.py +30 -1
  3. crackerjack/__main__.py +342 -1263
  4. crackerjack/adapters/README.md +18 -0
  5. crackerjack/adapters/__init__.py +27 -5
  6. crackerjack/adapters/_output_paths.py +167 -0
  7. crackerjack/adapters/_qa_adapter_base.py +309 -0
  8. crackerjack/adapters/_tool_adapter_base.py +706 -0
  9. crackerjack/adapters/ai/README.md +65 -0
  10. crackerjack/adapters/ai/__init__.py +5 -0
  11. crackerjack/adapters/ai/claude.py +853 -0
  12. crackerjack/adapters/complexity/README.md +53 -0
  13. crackerjack/adapters/complexity/__init__.py +10 -0
  14. crackerjack/adapters/complexity/complexipy.py +641 -0
  15. crackerjack/adapters/dependency/__init__.py +22 -0
  16. crackerjack/adapters/dependency/pip_audit.py +418 -0
  17. crackerjack/adapters/format/README.md +72 -0
  18. crackerjack/adapters/format/__init__.py +11 -0
  19. crackerjack/adapters/format/mdformat.py +313 -0
  20. crackerjack/adapters/format/ruff.py +516 -0
  21. crackerjack/adapters/lint/README.md +47 -0
  22. crackerjack/adapters/lint/__init__.py +11 -0
  23. crackerjack/adapters/lint/codespell.py +273 -0
  24. crackerjack/adapters/lsp/README.md +49 -0
  25. crackerjack/adapters/lsp/__init__.py +27 -0
  26. crackerjack/adapters/{rust_tool_manager.py → lsp/_manager.py} +3 -3
  27. crackerjack/adapters/{skylos_adapter.py → lsp/skylos.py} +59 -7
  28. crackerjack/adapters/{zuban_adapter.py → lsp/zuban.py} +3 -6
  29. crackerjack/adapters/refactor/README.md +59 -0
  30. crackerjack/adapters/refactor/__init__.py +12 -0
  31. crackerjack/adapters/refactor/creosote.py +318 -0
  32. crackerjack/adapters/refactor/refurb.py +406 -0
  33. crackerjack/adapters/refactor/skylos.py +494 -0
  34. crackerjack/adapters/sast/README.md +132 -0
  35. crackerjack/adapters/sast/__init__.py +32 -0
  36. crackerjack/adapters/sast/_base.py +201 -0
  37. crackerjack/adapters/sast/bandit.py +423 -0
  38. crackerjack/adapters/sast/pyscn.py +405 -0
  39. crackerjack/adapters/sast/semgrep.py +241 -0
  40. crackerjack/adapters/security/README.md +111 -0
  41. crackerjack/adapters/security/__init__.py +17 -0
  42. crackerjack/adapters/security/gitleaks.py +339 -0
  43. crackerjack/adapters/type/README.md +52 -0
  44. crackerjack/adapters/type/__init__.py +12 -0
  45. crackerjack/adapters/type/pyrefly.py +402 -0
  46. crackerjack/adapters/type/ty.py +402 -0
  47. crackerjack/adapters/type/zuban.py +522 -0
  48. crackerjack/adapters/utility/README.md +51 -0
  49. crackerjack/adapters/utility/__init__.py +10 -0
  50. crackerjack/adapters/utility/checks.py +884 -0
  51. crackerjack/agents/README.md +264 -0
  52. crackerjack/agents/__init__.py +40 -12
  53. crackerjack/agents/base.py +1 -0
  54. crackerjack/agents/claude_code_bridge.py +641 -0
  55. crackerjack/agents/coordinator.py +49 -53
  56. crackerjack/agents/dry_agent.py +187 -3
  57. crackerjack/agents/enhanced_coordinator.py +279 -0
  58. crackerjack/agents/enhanced_proactive_agent.py +185 -0
  59. crackerjack/agents/error_middleware.py +53 -0
  60. crackerjack/agents/formatting_agent.py +6 -8
  61. crackerjack/agents/helpers/__init__.py +9 -0
  62. crackerjack/agents/helpers/performance/__init__.py +22 -0
  63. crackerjack/agents/helpers/performance/performance_ast_analyzer.py +357 -0
  64. crackerjack/agents/helpers/performance/performance_pattern_detector.py +909 -0
  65. crackerjack/agents/helpers/performance/performance_recommender.py +572 -0
  66. crackerjack/agents/helpers/refactoring/__init__.py +22 -0
  67. crackerjack/agents/helpers/refactoring/code_transformer.py +536 -0
  68. crackerjack/agents/helpers/refactoring/complexity_analyzer.py +344 -0
  69. crackerjack/agents/helpers/refactoring/dead_code_detector.py +437 -0
  70. crackerjack/agents/helpers/test_creation/__init__.py +19 -0
  71. crackerjack/agents/helpers/test_creation/test_ast_analyzer.py +216 -0
  72. crackerjack/agents/helpers/test_creation/test_coverage_analyzer.py +643 -0
  73. crackerjack/agents/helpers/test_creation/test_template_generator.py +1031 -0
  74. crackerjack/agents/performance_agent.py +121 -1152
  75. crackerjack/agents/refactoring_agent.py +156 -655
  76. crackerjack/agents/semantic_agent.py +479 -0
  77. crackerjack/agents/semantic_helpers.py +356 -0
  78. crackerjack/agents/test_creation_agent.py +19 -1605
  79. crackerjack/api.py +5 -7
  80. crackerjack/cli/README.md +394 -0
  81. crackerjack/cli/__init__.py +1 -1
  82. crackerjack/cli/cache_handlers.py +23 -18
  83. crackerjack/cli/cache_handlers_enhanced.py +1 -4
  84. crackerjack/cli/facade.py +70 -8
  85. crackerjack/cli/formatting.py +13 -0
  86. crackerjack/cli/handlers/__init__.py +85 -0
  87. crackerjack/cli/handlers/advanced.py +103 -0
  88. crackerjack/cli/handlers/ai_features.py +62 -0
  89. crackerjack/cli/handlers/analytics.py +479 -0
  90. crackerjack/cli/handlers/changelog.py +271 -0
  91. crackerjack/cli/handlers/config_handlers.py +16 -0
  92. crackerjack/cli/handlers/coverage.py +84 -0
  93. crackerjack/cli/handlers/documentation.py +280 -0
  94. crackerjack/cli/handlers/main_handlers.py +497 -0
  95. crackerjack/cli/handlers/monitoring.py +371 -0
  96. crackerjack/cli/handlers.py +249 -49
  97. crackerjack/cli/interactive.py +8 -5
  98. crackerjack/cli/options.py +203 -110
  99. crackerjack/cli/semantic_handlers.py +292 -0
  100. crackerjack/cli/version.py +19 -0
  101. crackerjack/code_cleaner.py +60 -24
  102. crackerjack/config/README.md +472 -0
  103. crackerjack/config/__init__.py +256 -0
  104. crackerjack/config/global_lock_config.py +191 -54
  105. crackerjack/config/hooks.py +188 -16
  106. crackerjack/config/loader.py +239 -0
  107. crackerjack/config/settings.py +141 -0
  108. crackerjack/config/tool_commands.py +331 -0
  109. crackerjack/core/README.md +393 -0
  110. crackerjack/core/async_workflow_orchestrator.py +79 -53
  111. crackerjack/core/autofix_coordinator.py +22 -9
  112. crackerjack/core/container.py +10 -9
  113. crackerjack/core/enhanced_container.py +9 -9
  114. crackerjack/core/performance.py +1 -1
  115. crackerjack/core/performance_monitor.py +5 -3
  116. crackerjack/core/phase_coordinator.py +1018 -634
  117. crackerjack/core/proactive_workflow.py +3 -3
  118. crackerjack/core/retry.py +275 -0
  119. crackerjack/core/service_watchdog.py +167 -23
  120. crackerjack/core/session_coordinator.py +187 -382
  121. crackerjack/core/timeout_manager.py +161 -44
  122. crackerjack/core/workflow/__init__.py +21 -0
  123. crackerjack/core/workflow/workflow_ai_coordinator.py +863 -0
  124. crackerjack/core/workflow/workflow_event_orchestrator.py +1107 -0
  125. crackerjack/core/workflow/workflow_issue_parser.py +714 -0
  126. crackerjack/core/workflow/workflow_phase_executor.py +1158 -0
  127. crackerjack/core/workflow/workflow_security_gates.py +400 -0
  128. crackerjack/core/workflow_orchestrator.py +1247 -953
  129. crackerjack/data/README.md +11 -0
  130. crackerjack/data/__init__.py +8 -0
  131. crackerjack/data/models.py +79 -0
  132. crackerjack/data/repository.py +210 -0
  133. crackerjack/decorators/README.md +180 -0
  134. crackerjack/decorators/__init__.py +35 -0
  135. crackerjack/decorators/error_handling.py +649 -0
  136. crackerjack/decorators/error_handling_decorators.py +334 -0
  137. crackerjack/decorators/helpers.py +58 -0
  138. crackerjack/decorators/patterns.py +281 -0
  139. crackerjack/decorators/utils.py +58 -0
  140. crackerjack/docs/README.md +11 -0
  141. crackerjack/docs/generated/api/CLI_REFERENCE.md +1 -1
  142. crackerjack/documentation/README.md +11 -0
  143. crackerjack/documentation/ai_templates.py +1 -1
  144. crackerjack/documentation/dual_output_generator.py +11 -9
  145. crackerjack/documentation/reference_generator.py +104 -59
  146. crackerjack/dynamic_config.py +52 -61
  147. crackerjack/errors.py +1 -1
  148. crackerjack/events/README.md +11 -0
  149. crackerjack/events/__init__.py +16 -0
  150. crackerjack/events/telemetry.py +175 -0
  151. crackerjack/events/workflow_bus.py +346 -0
  152. crackerjack/exceptions/README.md +301 -0
  153. crackerjack/exceptions/__init__.py +5 -0
  154. crackerjack/exceptions/config.py +4 -0
  155. crackerjack/exceptions/tool_execution_error.py +245 -0
  156. crackerjack/executors/README.md +591 -0
  157. crackerjack/executors/__init__.py +2 -0
  158. crackerjack/executors/async_hook_executor.py +539 -77
  159. crackerjack/executors/cached_hook_executor.py +3 -3
  160. crackerjack/executors/hook_executor.py +967 -102
  161. crackerjack/executors/hook_lock_manager.py +31 -22
  162. crackerjack/executors/individual_hook_executor.py +66 -32
  163. crackerjack/executors/lsp_aware_hook_executor.py +136 -57
  164. crackerjack/executors/progress_hook_executor.py +282 -0
  165. crackerjack/executors/tool_proxy.py +23 -7
  166. crackerjack/hooks/README.md +485 -0
  167. crackerjack/hooks/lsp_hook.py +8 -9
  168. crackerjack/intelligence/README.md +557 -0
  169. crackerjack/interactive.py +37 -10
  170. crackerjack/managers/README.md +369 -0
  171. crackerjack/managers/async_hook_manager.py +41 -57
  172. crackerjack/managers/hook_manager.py +449 -79
  173. crackerjack/managers/publish_manager.py +81 -36
  174. crackerjack/managers/test_command_builder.py +290 -12
  175. crackerjack/managers/test_executor.py +93 -8
  176. crackerjack/managers/test_manager.py +1082 -75
  177. crackerjack/managers/test_progress.py +118 -26
  178. crackerjack/mcp/README.md +374 -0
  179. crackerjack/mcp/cache.py +25 -2
  180. crackerjack/mcp/client_runner.py +35 -18
  181. crackerjack/mcp/context.py +9 -9
  182. crackerjack/mcp/dashboard.py +24 -8
  183. crackerjack/mcp/enhanced_progress_monitor.py +34 -23
  184. crackerjack/mcp/file_monitor.py +27 -6
  185. crackerjack/mcp/progress_components.py +45 -34
  186. crackerjack/mcp/progress_monitor.py +6 -9
  187. crackerjack/mcp/rate_limiter.py +11 -7
  188. crackerjack/mcp/server.py +2 -0
  189. crackerjack/mcp/server_core.py +187 -55
  190. crackerjack/mcp/service_watchdog.py +12 -9
  191. crackerjack/mcp/task_manager.py +2 -2
  192. crackerjack/mcp/tools/README.md +27 -0
  193. crackerjack/mcp/tools/__init__.py +2 -0
  194. crackerjack/mcp/tools/core_tools.py +75 -52
  195. crackerjack/mcp/tools/execution_tools.py +87 -31
  196. crackerjack/mcp/tools/intelligence_tools.py +2 -2
  197. crackerjack/mcp/tools/proactive_tools.py +1 -1
  198. crackerjack/mcp/tools/semantic_tools.py +584 -0
  199. crackerjack/mcp/tools/utility_tools.py +180 -132
  200. crackerjack/mcp/tools/workflow_executor.py +87 -46
  201. crackerjack/mcp/websocket/README.md +31 -0
  202. crackerjack/mcp/websocket/app.py +11 -1
  203. crackerjack/mcp/websocket/event_bridge.py +188 -0
  204. crackerjack/mcp/websocket/jobs.py +27 -4
  205. crackerjack/mcp/websocket/monitoring/__init__.py +25 -0
  206. crackerjack/mcp/websocket/monitoring/api/__init__.py +19 -0
  207. crackerjack/mcp/websocket/monitoring/api/dependencies.py +141 -0
  208. crackerjack/mcp/websocket/monitoring/api/heatmap.py +154 -0
  209. crackerjack/mcp/websocket/monitoring/api/intelligence.py +199 -0
  210. crackerjack/mcp/websocket/monitoring/api/metrics.py +203 -0
  211. crackerjack/mcp/websocket/monitoring/api/telemetry.py +101 -0
  212. crackerjack/mcp/websocket/monitoring/dashboard.py +18 -0
  213. crackerjack/mcp/websocket/monitoring/factory.py +109 -0
  214. crackerjack/mcp/websocket/monitoring/filters.py +10 -0
  215. crackerjack/mcp/websocket/monitoring/metrics.py +64 -0
  216. crackerjack/mcp/websocket/monitoring/models.py +90 -0
  217. crackerjack/mcp/websocket/monitoring/utils.py +171 -0
  218. crackerjack/mcp/websocket/monitoring/websocket_manager.py +78 -0
  219. crackerjack/mcp/websocket/monitoring/websockets/__init__.py +17 -0
  220. crackerjack/mcp/websocket/monitoring/websockets/dependencies.py +126 -0
  221. crackerjack/mcp/websocket/monitoring/websockets/heatmap.py +176 -0
  222. crackerjack/mcp/websocket/monitoring/websockets/intelligence.py +291 -0
  223. crackerjack/mcp/websocket/monitoring/websockets/metrics.py +291 -0
  224. crackerjack/mcp/websocket/monitoring_endpoints.py +16 -2930
  225. crackerjack/mcp/websocket/server.py +1 -3
  226. crackerjack/mcp/websocket/websocket_handler.py +107 -6
  227. crackerjack/models/README.md +308 -0
  228. crackerjack/models/__init__.py +10 -1
  229. crackerjack/models/config.py +639 -22
  230. crackerjack/models/config_adapter.py +6 -6
  231. crackerjack/models/protocols.py +1167 -23
  232. crackerjack/models/pydantic_models.py +320 -0
  233. crackerjack/models/qa_config.py +145 -0
  234. crackerjack/models/qa_results.py +134 -0
  235. crackerjack/models/results.py +35 -0
  236. crackerjack/models/semantic_models.py +258 -0
  237. crackerjack/models/task.py +19 -3
  238. crackerjack/models/test_models.py +60 -0
  239. crackerjack/monitoring/README.md +11 -0
  240. crackerjack/monitoring/ai_agent_watchdog.py +5 -4
  241. crackerjack/monitoring/metrics_collector.py +4 -3
  242. crackerjack/monitoring/regression_prevention.py +4 -3
  243. crackerjack/monitoring/websocket_server.py +4 -241
  244. crackerjack/orchestration/README.md +340 -0
  245. crackerjack/orchestration/__init__.py +43 -0
  246. crackerjack/orchestration/advanced_orchestrator.py +20 -67
  247. crackerjack/orchestration/cache/README.md +312 -0
  248. crackerjack/orchestration/cache/__init__.py +37 -0
  249. crackerjack/orchestration/cache/memory_cache.py +338 -0
  250. crackerjack/orchestration/cache/tool_proxy_cache.py +340 -0
  251. crackerjack/orchestration/config.py +297 -0
  252. crackerjack/orchestration/coverage_improvement.py +13 -6
  253. crackerjack/orchestration/execution_strategies.py +6 -6
  254. crackerjack/orchestration/hook_orchestrator.py +1398 -0
  255. crackerjack/orchestration/strategies/README.md +401 -0
  256. crackerjack/orchestration/strategies/__init__.py +39 -0
  257. crackerjack/orchestration/strategies/adaptive_strategy.py +630 -0
  258. crackerjack/orchestration/strategies/parallel_strategy.py +237 -0
  259. crackerjack/orchestration/strategies/sequential_strategy.py +299 -0
  260. crackerjack/orchestration/test_progress_streamer.py +1 -1
  261. crackerjack/plugins/README.md +11 -0
  262. crackerjack/plugins/hooks.py +3 -2
  263. crackerjack/plugins/loader.py +3 -3
  264. crackerjack/plugins/managers.py +1 -1
  265. crackerjack/py313.py +191 -0
  266. crackerjack/security/README.md +11 -0
  267. crackerjack/services/README.md +374 -0
  268. crackerjack/services/__init__.py +8 -21
  269. crackerjack/services/ai/README.md +295 -0
  270. crackerjack/services/ai/__init__.py +7 -0
  271. crackerjack/services/ai/advanced_optimizer.py +878 -0
  272. crackerjack/services/{contextual_ai_assistant.py → ai/contextual_ai_assistant.py} +5 -3
  273. crackerjack/services/ai/embeddings.py +444 -0
  274. crackerjack/services/ai/intelligent_commit.py +328 -0
  275. crackerjack/services/ai/predictive_analytics.py +510 -0
  276. crackerjack/services/api_extractor.py +5 -3
  277. crackerjack/services/bounded_status_operations.py +45 -5
  278. crackerjack/services/cache.py +249 -318
  279. crackerjack/services/changelog_automation.py +7 -3
  280. crackerjack/services/command_execution_service.py +305 -0
  281. crackerjack/services/config_integrity.py +83 -39
  282. crackerjack/services/config_merge.py +9 -6
  283. crackerjack/services/config_service.py +198 -0
  284. crackerjack/services/config_template.py +13 -26
  285. crackerjack/services/coverage_badge_service.py +6 -4
  286. crackerjack/services/coverage_ratchet.py +53 -27
  287. crackerjack/services/debug.py +18 -7
  288. crackerjack/services/dependency_analyzer.py +4 -4
  289. crackerjack/services/dependency_monitor.py +13 -13
  290. crackerjack/services/documentation_generator.py +4 -2
  291. crackerjack/services/documentation_service.py +62 -33
  292. crackerjack/services/enhanced_filesystem.py +81 -27
  293. crackerjack/services/enterprise_optimizer.py +1 -1
  294. crackerjack/services/error_pattern_analyzer.py +10 -10
  295. crackerjack/services/file_filter.py +221 -0
  296. crackerjack/services/file_hasher.py +5 -7
  297. crackerjack/services/file_io_service.py +361 -0
  298. crackerjack/services/file_modifier.py +615 -0
  299. crackerjack/services/filesystem.py +80 -109
  300. crackerjack/services/git.py +99 -5
  301. crackerjack/services/health_metrics.py +4 -6
  302. crackerjack/services/heatmap_generator.py +12 -3
  303. crackerjack/services/incremental_executor.py +380 -0
  304. crackerjack/services/initialization.py +101 -49
  305. crackerjack/services/log_manager.py +2 -2
  306. crackerjack/services/logging.py +120 -68
  307. crackerjack/services/lsp_client.py +12 -12
  308. crackerjack/services/memory_optimizer.py +27 -22
  309. crackerjack/services/monitoring/README.md +30 -0
  310. crackerjack/services/monitoring/__init__.py +9 -0
  311. crackerjack/services/monitoring/dependency_monitor.py +678 -0
  312. crackerjack/services/monitoring/error_pattern_analyzer.py +676 -0
  313. crackerjack/services/monitoring/health_metrics.py +716 -0
  314. crackerjack/services/monitoring/metrics.py +587 -0
  315. crackerjack/services/{performance_benchmarks.py → monitoring/performance_benchmarks.py} +100 -14
  316. crackerjack/services/{performance_cache.py → monitoring/performance_cache.py} +21 -15
  317. crackerjack/services/{performance_monitor.py → monitoring/performance_monitor.py} +10 -6
  318. crackerjack/services/parallel_executor.py +166 -55
  319. crackerjack/services/patterns/__init__.py +142 -0
  320. crackerjack/services/patterns/agents.py +107 -0
  321. crackerjack/services/patterns/code/__init__.py +15 -0
  322. crackerjack/services/patterns/code/detection.py +118 -0
  323. crackerjack/services/patterns/code/imports.py +107 -0
  324. crackerjack/services/patterns/code/paths.py +159 -0
  325. crackerjack/services/patterns/code/performance.py +119 -0
  326. crackerjack/services/patterns/code/replacement.py +36 -0
  327. crackerjack/services/patterns/core.py +212 -0
  328. crackerjack/services/patterns/documentation/__init__.py +14 -0
  329. crackerjack/services/patterns/documentation/badges_markdown.py +96 -0
  330. crackerjack/services/patterns/documentation/comments_blocks.py +83 -0
  331. crackerjack/services/patterns/documentation/docstrings.py +89 -0
  332. crackerjack/services/patterns/formatting.py +226 -0
  333. crackerjack/services/patterns/operations.py +339 -0
  334. crackerjack/services/patterns/security/__init__.py +23 -0
  335. crackerjack/services/patterns/security/code_injection.py +122 -0
  336. crackerjack/services/patterns/security/credentials.py +190 -0
  337. crackerjack/services/patterns/security/path_traversal.py +221 -0
  338. crackerjack/services/patterns/security/unsafe_operations.py +216 -0
  339. crackerjack/services/patterns/templates.py +62 -0
  340. crackerjack/services/patterns/testing/__init__.py +18 -0
  341. crackerjack/services/patterns/testing/error_patterns.py +107 -0
  342. crackerjack/services/patterns/testing/pytest_output.py +126 -0
  343. crackerjack/services/patterns/tool_output/__init__.py +16 -0
  344. crackerjack/services/patterns/tool_output/bandit.py +72 -0
  345. crackerjack/services/patterns/tool_output/other.py +97 -0
  346. crackerjack/services/patterns/tool_output/pyright.py +67 -0
  347. crackerjack/services/patterns/tool_output/ruff.py +44 -0
  348. crackerjack/services/patterns/url_sanitization.py +114 -0
  349. crackerjack/services/patterns/utilities.py +42 -0
  350. crackerjack/services/patterns/utils.py +339 -0
  351. crackerjack/services/patterns/validation.py +46 -0
  352. crackerjack/services/patterns/versioning.py +62 -0
  353. crackerjack/services/predictive_analytics.py +21 -8
  354. crackerjack/services/profiler.py +280 -0
  355. crackerjack/services/quality/README.md +415 -0
  356. crackerjack/services/quality/__init__.py +11 -0
  357. crackerjack/services/quality/anomaly_detector.py +392 -0
  358. crackerjack/services/quality/pattern_cache.py +333 -0
  359. crackerjack/services/quality/pattern_detector.py +479 -0
  360. crackerjack/services/quality/qa_orchestrator.py +491 -0
  361. crackerjack/services/{quality_baseline.py → quality/quality_baseline.py} +163 -2
  362. crackerjack/services/{quality_baseline_enhanced.py → quality/quality_baseline_enhanced.py} +4 -1
  363. crackerjack/services/{quality_intelligence.py → quality/quality_intelligence.py} +180 -16
  364. crackerjack/services/regex_patterns.py +58 -2987
  365. crackerjack/services/regex_utils.py +55 -29
  366. crackerjack/services/secure_status_formatter.py +42 -15
  367. crackerjack/services/secure_subprocess.py +35 -2
  368. crackerjack/services/security.py +16 -8
  369. crackerjack/services/server_manager.py +40 -51
  370. crackerjack/services/smart_scheduling.py +46 -6
  371. crackerjack/services/status_authentication.py +3 -3
  372. crackerjack/services/thread_safe_status_collector.py +1 -0
  373. crackerjack/services/tool_filter.py +368 -0
  374. crackerjack/services/tool_version_service.py +9 -5
  375. crackerjack/services/unified_config.py +43 -351
  376. crackerjack/services/vector_store.py +689 -0
  377. crackerjack/services/version_analyzer.py +6 -4
  378. crackerjack/services/version_checker.py +14 -8
  379. crackerjack/services/zuban_lsp_service.py +5 -4
  380. crackerjack/slash_commands/README.md +11 -0
  381. crackerjack/slash_commands/init.md +2 -12
  382. crackerjack/slash_commands/run.md +84 -50
  383. crackerjack/tools/README.md +11 -0
  384. crackerjack/tools/__init__.py +30 -0
  385. crackerjack/tools/_git_utils.py +105 -0
  386. crackerjack/tools/check_added_large_files.py +139 -0
  387. crackerjack/tools/check_ast.py +105 -0
  388. crackerjack/tools/check_json.py +103 -0
  389. crackerjack/tools/check_jsonschema.py +297 -0
  390. crackerjack/tools/check_toml.py +103 -0
  391. crackerjack/tools/check_yaml.py +110 -0
  392. crackerjack/tools/codespell_wrapper.py +72 -0
  393. crackerjack/tools/end_of_file_fixer.py +202 -0
  394. crackerjack/tools/format_json.py +128 -0
  395. crackerjack/tools/mdformat_wrapper.py +114 -0
  396. crackerjack/tools/trailing_whitespace.py +198 -0
  397. crackerjack/tools/validate_regex_patterns.py +7 -3
  398. crackerjack/ui/README.md +11 -0
  399. crackerjack/ui/dashboard_renderer.py +28 -0
  400. crackerjack/ui/templates/README.md +11 -0
  401. crackerjack/utils/console_utils.py +13 -0
  402. crackerjack/utils/dependency_guard.py +230 -0
  403. crackerjack/utils/retry_utils.py +275 -0
  404. crackerjack/workflows/README.md +590 -0
  405. crackerjack/workflows/__init__.py +46 -0
  406. crackerjack/workflows/actions.py +811 -0
  407. crackerjack/workflows/auto_fix.py +444 -0
  408. crackerjack/workflows/container_builder.py +499 -0
  409. crackerjack/workflows/definitions.py +443 -0
  410. crackerjack/workflows/engine.py +177 -0
  411. crackerjack/workflows/event_bridge.py +242 -0
  412. {crackerjack-0.37.9.dist-info → crackerjack-0.45.2.dist-info}/METADATA +678 -98
  413. crackerjack-0.45.2.dist-info/RECORD +478 -0
  414. {crackerjack-0.37.9.dist-info → crackerjack-0.45.2.dist-info}/WHEEL +1 -1
  415. crackerjack/managers/test_manager_backup.py +0 -1075
  416. crackerjack/mcp/tools/execution_tools_backup.py +0 -1011
  417. crackerjack/mixins/__init__.py +0 -3
  418. crackerjack/mixins/error_handling.py +0 -145
  419. crackerjack/services/config.py +0 -358
  420. crackerjack/ui/server_panels.py +0 -125
  421. crackerjack-0.37.9.dist-info/RECORD +0 -231
  422. /crackerjack/adapters/{rust_tool_adapter.py → lsp/_base.py} +0 -0
  423. /crackerjack/adapters/{lsp_client.py → lsp/_client.py} +0 -0
  424. {crackerjack-0.37.9.dist-info → crackerjack-0.45.2.dist-info}/entry_points.txt +0 -0
  425. {crackerjack-0.37.9.dist-info → crackerjack-0.45.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,591 @@
1
+ > Crackerjack Docs: [Main](<../../README.md>) | [CLAUDE.md](../../docs/guides/CLAUDE.md) | Executors
2
+
3
+ # Executors
4
+
5
+ Execution engines and task runners for intelligent hook execution, caching, and progress tracking.
6
+
7
+ ## Overview
8
+
9
+ The executors package provides specialized execution engines for running quality hooks with various optimization strategies. Executors handle parallel execution, result caching, progress tracking, LSP integration, and lock management to ensure efficient and reliable quality checks.
10
+
11
+ ## Executor Types
12
+
13
+ ### Core Executors
14
+
15
+ - **`hook_executor.py`** - Base hook executor with sequential and parallel execution
16
+ - **`async_hook_executor.py`** - Asynchronous hook execution for concurrent workflows
17
+ - **`cached_hook_executor.py`** - Smart caching for repeated hook executions
18
+ - **`progress_hook_executor.py`** - Real-time progress tracking and reporting
19
+ - **`individual_hook_executor.py`** - Single-hook execution with detailed reporting
20
+
21
+ ### Specialized Executors
22
+
23
+ - **`lsp_aware_hook_executor.py`** - LSP-optimized execution for type checking
24
+ - **`hook_lock_manager.py`** - Lock management to prevent concurrent execution conflicts
25
+ - **`tool_proxy.py`** - Proxy layer for tool execution with error handling
26
+
27
+ ## Core Components
28
+
29
+ ### HookExecutor
30
+
31
+ Base executor providing fundamental hook execution capabilities:
32
+
33
+ **Features:**
34
+
35
+ - **Sequential Execution** - Run hooks one after another
36
+ - **Parallel Execution** - Run compatible hooks concurrently
37
+ - **Strategy Execution** - Execute predefined hook strategies (fast/comprehensive)
38
+ - **Retry Logic** - Automatic retry for formatting hooks
39
+ - **Progress Callbacks** - Optional progress tracking hooks
40
+ - **Timeout Management** - Per-hook and global timeout enforcement
41
+ - **Result Aggregation** - Collect and summarize execution results
42
+
43
+ **Usage:**
44
+
45
+ ```python
46
+ from crackerjack.executors import HookExecutor
47
+ from pathlib import Path
48
+
49
+ executor = HookExecutor(
50
+ console=console,
51
+ pkg_path=Path.cwd(),
52
+ verbose=True,
53
+ quiet=False,
54
+ debug=False,
55
+ use_incremental=True, # Enable incremental execution
56
+ )
57
+
58
+ # Execute strategy
59
+ result = executor.execute_strategy(
60
+ strategy_name="fast_hooks", parallel=True, max_workers=4
61
+ )
62
+ ```
63
+
64
+ ### AsyncHookExecutor
65
+
66
+ Asynchronous executor for concurrent workflow integration:
67
+
68
+ **Features:**
69
+
70
+ - **True Async Execution** - Native asyncio support
71
+ - **Concurrent Hook Groups** - Run independent hook groups in parallel
72
+ - **Event Loop Integration** - Works with existing event loops
73
+ - **Async Context Managers** - Proper resource cleanup
74
+ - **Backpressure Handling** - Prevents system overload
75
+
76
+ **Usage:**
77
+
78
+ ```python
79
+ from crackerjack.executors import AsyncHookExecutor
80
+
81
+
82
+ async def run_hooks():
83
+ executor = AsyncHookExecutor(console=console, pkg_path=pkg_path)
84
+
85
+ # Run hooks asynchronously
86
+ result = await executor.execute_strategy_async("fast_hooks")
87
+
88
+ return result
89
+ ```
90
+
91
+ ### CachedHookExecutor
92
+
93
+ Smart caching executor with intelligent cache invalidation:
94
+
95
+ **Features:**
96
+
97
+ - **Result Caching** - Cache hook execution results
98
+ - **File-Based Invalidation** - Invalidate cache when files change
99
+ - **Smart Cache Manager** - Intelligent cache key generation
100
+ - **Hit Rate Tracking** - Monitor cache effectiveness
101
+ - **TTL Management** - Time-based cache expiration
102
+ - **Memory Efficient** - LRU eviction for large projects
103
+
104
+ **Cache Strategy:**
105
+
106
+ ```python
107
+ from crackerjack.executors import CachedHookExecutor, SmartCacheManager
108
+
109
+ cache_manager = SmartCacheManager(
110
+ cache_dir=Path(".crackerjack/cache"),
111
+ ttl_seconds=3600, # 1 hour
112
+ max_cache_size_mb=100,
113
+ )
114
+
115
+ executor = CachedHookExecutor(
116
+ console=console, pkg_path=pkg_path, cache_manager=cache_manager
117
+ )
118
+
119
+ # First execution - cache miss
120
+ result1 = executor.execute_strategy("fast_hooks")
121
+ print(f"Cache hits: {result1.cache_hits}, misses: {result1.cache_misses}")
122
+
123
+ # Second execution - cache hit (if no files changed)
124
+ result2 = executor.execute_strategy("fast_hooks")
125
+ print(f"Performance gain: {result2.performance_gain:.1%}")
126
+ ```
127
+
128
+ ### ProgressHookExecutor
129
+
130
+ Real-time progress tracking with rich console output:
131
+
132
+ **Features:**
133
+
134
+ - **Live Progress Display** - Real-time progress bars
135
+ - **Task Tracking** - Individual hook progress
136
+ - **Time Estimates** - Remaining time calculations
137
+ - **Success/Failure Visualization** - Color-coded status
138
+ - **Detailed Reporting** - Per-hook execution details
139
+
140
+ **Usage:**
141
+
142
+ ```python
143
+ from crackerjack.executors import ProgressHookExecutor
144
+ from rich.progress import Progress
145
+
146
+ with Progress() as progress:
147
+ executor = ProgressHookExecutor(
148
+ console=console, pkg_path=pkg_path, progress=progress
149
+ )
150
+
151
+ # Progress automatically tracked and displayed
152
+ result = executor.execute_strategy("comprehensive_hooks")
153
+ ```
154
+
155
+ ### IndividualHookExecutor
156
+
157
+ Execute single hooks with detailed error reporting:
158
+
159
+ **Features:**
160
+
161
+ - **Single Hook Focus** - Detailed execution of one hook
162
+ - **Enhanced Error Reporting** - Full error context and stack traces
163
+ - **Debugging Support** - Verbose output for troubleshooting
164
+ - **Exit Code Handling** - Proper subprocess exit code interpretation
165
+ - **Output Streaming** - Real-time stdout/stderr streaming
166
+
167
+ **Usage:**
168
+
169
+ ```python
170
+ from crackerjack.executors import IndividualHookExecutor
171
+
172
+ executor = IndividualHookExecutor(
173
+ console=console,
174
+ pkg_path=pkg_path,
175
+ debug=True, # Enable debug output
176
+ )
177
+
178
+ # Execute single hook
179
+ result = executor.execute_hook(
180
+ hook_name="ruff-check",
181
+ files=[Path("src/main.py")], # Optional file targeting
182
+ )
183
+
184
+ if not result.success:
185
+ print(f"Hook failed with exit code: {result.exit_code}")
186
+ print(f"Error output:\n{result.stderr}")
187
+ ```
188
+
189
+ ### LSPAwareHookExecutor
190
+
191
+ LSP-optimized executor for ultra-fast type checking:
192
+
193
+ **Features:**
194
+
195
+ - **LSP Integration** - Communicates with running LSP servers
196
+ - **Incremental Analysis** - Only check changed files
197
+ - **Fallback Support** - Falls back to direct execution if LSP unavailable
198
+ - **Server Health Checking** - Monitors LSP server status
199
+ - **Shared State** - Leverages LSP server's incremental compilation
200
+
201
+ **Performance:**
202
+
203
+ ```
204
+ Traditional execution: ~30-60s
205
+ LSP-aware execution: ~2-5s (10-20x faster)
206
+ ```
207
+
208
+ **Usage:**
209
+
210
+ ```python
211
+ from crackerjack.executors import LSPAwareHookExecutor
212
+
213
+ executor = LSPAwareHookExecutor(
214
+ console=console, pkg_path=pkg_path, lsp_enabled=True, fallback_enabled=True
215
+ )
216
+
217
+ # Uses LSP server if available, falls back otherwise
218
+ result = executor.execute_type_checking()
219
+ ```
220
+
221
+ ### HookLockManager
222
+
223
+ Prevents concurrent execution conflicts with file-based locking:
224
+
225
+ **Features:**
226
+
227
+ - **File-Based Locks** - Prevents multiple simultaneous executions
228
+ - **Timeout Support** - Configurable lock acquisition timeout
229
+ - **Deadlock Prevention** - Automatic lock release on timeout
230
+ - **Atomic Operations** - Thread-safe lock management
231
+ - **Context Manager Support** - Automatic lock cleanup
232
+
233
+ **Usage:**
234
+
235
+ ```python
236
+ from crackerjack.executors import HookLockManager
237
+
238
+ lock_manager = HookLockManager(
239
+ lock_dir=Path(".crackerjack/locks"),
240
+ timeout=60, # seconds
241
+ )
242
+
243
+ with lock_manager.acquire_lock("fast_hooks"):
244
+ # Only one process can execute this block at a time
245
+ result = executor.execute_strategy("fast_hooks")
246
+ ```
247
+
248
+ ### ToolProxy
249
+
250
+ Proxy layer for tool execution with unified error handling:
251
+
252
+ **Features:**
253
+
254
+ - **Unified Interface** - Consistent tool execution API
255
+ - **Error Normalization** - Standardized error reporting
256
+ - **Output Parsing** - Structured output from various tools
257
+ - **Retry Logic** - Configurable retry for transient failures
258
+ - **Timeout Enforcement** - Prevents hung processes
259
+
260
+ **Usage:**
261
+
262
+ ```python
263
+ from crackerjack.executors import ToolProxy
264
+
265
+ proxy = ToolProxy(console=console, timeout=120, retries=1)
266
+
267
+ # Execute tool through proxy
268
+ result = proxy.execute_tool(tool_name="ruff", args=["check", "src"], cwd=pkg_path)
269
+ ```
270
+
271
+ ## Execution Patterns
272
+
273
+ ### Sequential Execution
274
+
275
+ ```python
276
+ from crackerjack.executors import HookExecutor
277
+
278
+ executor = HookExecutor(console=console, pkg_path=pkg_path)
279
+
280
+ # Execute hooks one by one
281
+ result = executor.execute_strategy(
282
+ strategy_name="fast_hooks",
283
+ parallel=False, # Sequential execution
284
+ )
285
+
286
+ print(f"Total duration: {result.total_duration:.2f}s")
287
+ ```
288
+
289
+ ### Parallel Execution
290
+
291
+ ```python
292
+ # Execute compatible hooks in parallel
293
+ result = executor.execute_strategy(
294
+ strategy_name="comprehensive_hooks",
295
+ parallel=True,
296
+ max_workers=4, # Number of parallel workers
297
+ )
298
+
299
+ print(f"Concurrent execution: {result.concurrent_execution}")
300
+ print(f"Duration: {result.total_duration:.2f}s")
301
+ ```
302
+
303
+ ### Cached Execution
304
+
305
+ ```python
306
+ from crackerjack.executors import CachedHookExecutor
307
+
308
+ cached_executor = CachedHookExecutor(console=console, pkg_path=pkg_path)
309
+
310
+ # First run - populates cache
311
+ result1 = cached_executor.execute_strategy("fast_hooks")
312
+
313
+ # Second run - uses cache for unchanged files
314
+ result2 = cached_executor.execute_strategy("fast_hooks")
315
+
316
+ print(f"Cache hit rate: {result2.cache_hit_rate:.1%}")
317
+ print(f"Performance gain: {result2.performance_gain:.1%}")
318
+ ```
319
+
320
+ ### Async Execution
321
+
322
+ ```python
323
+ from crackerjack.executors import AsyncHookExecutor
324
+
325
+
326
+ async def run_quality_checks():
327
+ executor = AsyncHookExecutor(console=console, pkg_path=pkg_path)
328
+
329
+ # Run multiple hook strategies concurrently
330
+ fast_result, comp_result = await asyncio.gather(
331
+ executor.execute_strategy_async("fast_hooks"),
332
+ executor.execute_strategy_async("comprehensive_hooks"),
333
+ )
334
+
335
+ return fast_result, comp_result
336
+ ```
337
+
338
+ ### Progress Tracking
339
+
340
+ ```python
341
+ from crackerjack.executors import ProgressHookExecutor
342
+ from rich.progress import Progress
343
+
344
+ with Progress() as progress:
345
+ executor = ProgressHookExecutor(
346
+ console=console, pkg_path=pkg_path, progress=progress
347
+ )
348
+
349
+ # Progress bars automatically displayed
350
+ result = executor.execute_strategy("comprehensive_hooks")
351
+ ```
352
+
353
+ ## HookExecutionResult
354
+
355
+ All executors return `HookExecutionResult` with comprehensive execution data:
356
+
357
+ ```python
358
+ @dataclass
359
+ class HookExecutionResult:
360
+ strategy_name: str # Strategy executed
361
+ results: list[HookResult] # Individual hook results
362
+ total_duration: float # Total execution time
363
+ success: bool # Overall success status
364
+ concurrent_execution: bool # Was execution parallel?
365
+ cache_hits: int # Number of cache hits
366
+ cache_misses: int # Number of cache misses
367
+ performance_gain: float # Performance improvement %
368
+
369
+ @property
370
+ def failed_count(self) -> int:
371
+ """Number of failed hooks."""
372
+
373
+ @property
374
+ def passed_count(self) -> int:
375
+ """Number of passed hooks."""
376
+
377
+ @property
378
+ def cache_hit_rate(self) -> float:
379
+ """Cache hit rate percentage."""
380
+
381
+ @property
382
+ def performance_summary(self) -> dict:
383
+ """Comprehensive performance metrics."""
384
+ ```
385
+
386
+ ## Configuration
387
+
388
+ Executors are configured through ACB Settings:
389
+
390
+ ```yaml
391
+ # settings/crackerjack.yaml
392
+
393
+ # Executor configuration
394
+ executor_type: "cached" # base, cached, async, progress
395
+ max_parallel_hooks: 4
396
+ hook_timeout: 300
397
+ retry_attempts: 1
398
+
399
+ # Cache configuration
400
+ cache_enabled: true
401
+ cache_ttl: 3600 # 1 hour
402
+ cache_max_size_mb: 100
403
+ cache_dir: ".crackerjack/cache"
404
+
405
+ # LSP configuration
406
+ lsp_executor_enabled: true
407
+ lsp_fallback_enabled: true
408
+ lsp_server_timeout: 30
409
+
410
+ # Progress tracking
411
+ progress_enabled: true
412
+ progress_style: "rich" # rich, simple, none
413
+
414
+ # Lock management
415
+ lock_enabled: true
416
+ lock_timeout: 60
417
+ lock_dir: ".crackerjack/locks"
418
+ ```
419
+
420
+ ## Usage Examples
421
+
422
+ ### Basic Hook Execution
423
+
424
+ ```python
425
+ from crackerjack.executors import HookExecutor
426
+ from pathlib import Path
427
+
428
+ executor = HookExecutor(console=console, pkg_path=Path.cwd(), verbose=True)
429
+
430
+ # Execute fast hooks
431
+ result = executor.execute_strategy("fast_hooks")
432
+
433
+ if result.success:
434
+ print(f"✅ All {result.passed_count} hooks passed")
435
+ print(f"Duration: {result.total_duration:.2f}s")
436
+ else:
437
+ print(f"❌ {result.failed_count} hooks failed")
438
+ for hook_result in result.results:
439
+ if hook_result.status == "failed":
440
+ print(f" - {hook_result.name}: {hook_result.message}")
441
+ ```
442
+
443
+ ### Cached Execution with Metrics
444
+
445
+ ```python
446
+ from crackerjack.executors import CachedHookExecutor
447
+
448
+ executor = CachedHookExecutor(console=console, pkg_path=pkg_path)
449
+
450
+ # Multiple executions to demonstrate caching
451
+ for i in range(3):
452
+ result = executor.execute_strategy("fast_hooks")
453
+ print(f"Run {i + 1}:")
454
+ print(f" Duration: {result.total_duration:.2f}s")
455
+ print(f" Cache hits: {result.cache_hits}")
456
+ print(f" Cache hit rate: {result.cache_hit_rate:.1%}")
457
+ print(f" Performance gain: {result.performance_gain:.1%}")
458
+ ```
459
+
460
+ ### LSP-Aware Type Checking
461
+
462
+ ```python
463
+ from crackerjack.executors import LSPAwareHookExecutor
464
+
465
+ executor = LSPAwareHookExecutor(console=console, pkg_path=pkg_path, lsp_enabled=True)
466
+
467
+ # Fast type checking via LSP
468
+ result = executor.execute_type_checking()
469
+
470
+ print(f"Type checking completed in {result.total_duration:.2f}s")
471
+ print(f"Used LSP: {result.used_lsp}")
472
+ print(f"Speedup: {result.speedup_factor:.1f}x")
473
+ ```
474
+
475
+ ### Progress Tracking with Rich Console
476
+
477
+ ```python
478
+ from crackerjack.executors import ProgressHookExecutor
479
+ from rich.progress import Progress
480
+ from rich.console import Console
481
+
482
+ console = Console()
483
+
484
+ with Progress() as progress:
485
+ executor = ProgressHookExecutor(
486
+ console=console, pkg_path=pkg_path, progress=progress
487
+ )
488
+
489
+ # Rich progress bars displayed automatically
490
+ result = executor.execute_strategy("comprehensive_hooks")
491
+
492
+ console.print(f"\n[green]✓[/green] Completed in {result.total_duration:.2f}s")
493
+ ```
494
+
495
+ ### Custom Hook Execution
496
+
497
+ ```python
498
+ from crackerjack.config.hooks import HookDefinition, HookStage
499
+
500
+ custom_hook = HookDefinition(
501
+ name="custom-check",
502
+ command=["python", "-m", "my_tool"],
503
+ timeout=120,
504
+ stage=HookStage.COMPREHENSIVE,
505
+ retry_on_failure=False,
506
+ )
507
+
508
+ executor = HookExecutor(console=console, pkg_path=pkg_path)
509
+
510
+ # Execute custom hook
511
+ result = executor.execute_hook(custom_hook)
512
+ ```
513
+
514
+ ## Integration with Workflows
515
+
516
+ Executors integrate seamlessly with ACB workflows:
517
+
518
+ ```python
519
+ from crackerjack.workflows import CrackerjackWorkflowEngine
520
+ from crackerjack.executors import CachedHookExecutor
521
+
522
+ engine = CrackerjackWorkflowEngine()
523
+ executor = CachedHookExecutor(console=console, pkg_path=pkg_path)
524
+
525
+
526
+ # Register executor as workflow action
527
+ @engine.register_action("run_fast_hooks")
528
+ async def run_fast_hooks(context):
529
+ result = executor.execute_strategy("fast_hooks")
530
+ return {"success": result.success, "duration": result.total_duration}
531
+ ```
532
+
533
+ ## Best Practices
534
+
535
+ 1. **Use Cached Executor** - Enable caching for repeated executions (development workflow)
536
+ 1. **Enable Parallelization** - Run independent hooks in parallel when possible
537
+ 1. **Configure Timeouts** - Set appropriate timeouts for long-running hooks
538
+ 1. **Monitor Cache Performance** - Track cache hit rates and adjust TTL
539
+ 1. **Use LSP Executor** - Enable LSP for 10-20x faster type checking
540
+ 1. **Handle Lock Timeouts** - Configure lock timeouts to prevent deadlocks
541
+ 1. **Track Progress** - Use ProgressHookExecutor for long-running operations
542
+ 1. **Retry Formatting Only** - Only retry formatting hooks, not analysis hooks
543
+ 1. **Async for Workflows** - Use AsyncHookExecutor for workflow integration
544
+ 1. **Monitor Performance** - Track execution metrics and optimize slow hooks
545
+
546
+ ## Performance Considerations
547
+
548
+ ### Execution Time Comparison
549
+
550
+ ```
551
+ Sequential (base executor):
552
+ Fast hooks: ~15s
553
+ Comprehensive hooks: ~45s
554
+
555
+ Parallel (max_workers=4):
556
+ Fast hooks: ~5s (3x faster)
557
+ Comprehensive hooks: ~15s (3x faster)
558
+
559
+ Cached (after warmup):
560
+ Fast hooks: ~1s (15x faster)
561
+ Comprehensive hooks: ~3s (15x faster)
562
+
563
+ LSP-aware (type checking):
564
+ Traditional: ~30s
565
+ LSP-aware: ~2s (15x faster)
566
+ ```
567
+
568
+ ### Memory Usage
569
+
570
+ ```
571
+ Base executor: ~100MB
572
+ Cached executor: ~150MB (cache overhead)
573
+ Parallel executor: ~100MB + (50MB × workers)
574
+ LSP-aware: ~100MB (shares LSP server memory)
575
+ ```
576
+
577
+ ## Related
578
+
579
+ - [Hooks](<../hooks/README.md>) - Hook definitions and lifecycle
580
+ - [Workflows](<../workflows/README.md>) - Workflow integration
581
+ - [Config](<../config/README.md>) - Executor configuration
582
+ - [CLAUDE.md](../../docs/guides/CLAUDE.md) - Quality process overview
583
+
584
+ ## Future Enhancements
585
+
586
+ - [ ] Distributed execution across multiple machines
587
+ - [ ] GPU-accelerated hook execution for large codebases
588
+ - [ ] Machine learning for optimal parallelization strategy
589
+ - [ ] Real-time execution monitoring dashboard
590
+ - [ ] Execution profiling and bottleneck detection
591
+ - [ ] Smart scheduling based on historical performance data
@@ -1,11 +1,13 @@
1
1
  from .async_hook_executor import AsyncHookExecutor
2
2
  from .cached_hook_executor import CachedHookExecutor, SmartCacheManager
3
3
  from .hook_executor import HookExecutionResult, HookExecutor
4
+ from .progress_hook_executor import ProgressHookExecutor
4
5
 
5
6
  __all__ = [
6
7
  "AsyncHookExecutor",
7
8
  "CachedHookExecutor",
8
9
  "HookExecutionResult",
9
10
  "HookExecutor",
11
+ "ProgressHookExecutor",
10
12
  "SmartCacheManager",
11
13
  ]