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,371 @@
1
+ """CLI handlers for monitoring, server, and LSP commands.
2
+
3
+ This module contains command coordinators for:
4
+ - Monitoring modes (monitor, enhanced_monitor, dashboard, watchdog)
5
+ - WebSocket server lifecycle (start, stop, restart)
6
+ - MCP server lifecycle (start, stop, restart)
7
+ - Zuban LSP lifecycle (start, stop, restart)
8
+ """
9
+
10
+ import asyncio
11
+ from pathlib import Path
12
+
13
+ from acb.console import Console
14
+ from acb.depends import Inject, depends
15
+
16
+
17
+ @depends.inject # type: ignore[misc]
18
+ def handle_mcp_server(
19
+ websocket_port: int | None = None, console: Inject[Console] = None
20
+ ) -> None:
21
+ from crackerjack.mcp.server import main as start_mcp_main
22
+
23
+ project_path = str(Path.cwd())
24
+
25
+ if websocket_port:
26
+ start_mcp_main(project_path, websocket_port)
27
+ else:
28
+ start_mcp_main(project_path)
29
+
30
+
31
+ @depends.inject # type: ignore[misc]
32
+ def handle_monitor_mode(
33
+ dev_mode: bool = False, console: Inject[Console] = None
34
+ ) -> None:
35
+ from crackerjack.mcp.progress_monitor import run_progress_monitor
36
+
37
+ console.print("[bold cyan]🌟 Starting Multi-Project Progress Monitor[/ bold cyan]")
38
+ console.print(
39
+ "[bold yellow]🐕 With integrated Service Watchdog and WebSocket polling[/ bold yellow]",
40
+ )
41
+
42
+ try:
43
+ asyncio.run(run_progress_monitor(dev_mode=dev_mode))
44
+ except KeyboardInterrupt:
45
+ console.print("\n[yellow]🛑 Monitor stopped[/ yellow]")
46
+
47
+
48
+ @depends.inject # type: ignore[misc]
49
+ def handle_enhanced_monitor_mode(
50
+ dev_mode: bool = False, console: Inject[Console] = None
51
+ ) -> None:
52
+ from crackerjack.mcp.enhanced_progress_monitor import run_enhanced_progress_monitor
53
+
54
+ console.print("[bold magenta]✨ Starting Enhanced Progress Monitor[/ bold magenta]")
55
+ console.print(
56
+ "[bold cyan]📊 With advanced MetricCard widgets and modern web UI patterns[/ bold cyan]",
57
+ )
58
+
59
+ try:
60
+ asyncio.run(run_enhanced_progress_monitor(dev_mode=dev_mode))
61
+ except KeyboardInterrupt:
62
+ console.print("\n[yellow]🛑 Enhanced Monitor stopped[/ yellow]")
63
+
64
+
65
+ @depends.inject # type: ignore[misc]
66
+ def handle_dashboard_mode(
67
+ dev_mode: bool = False, console: Inject[Console] = None
68
+ ) -> None:
69
+ from crackerjack.mcp.dashboard import run_dashboard
70
+
71
+ console.print("[bold green]🎯 Starting Comprehensive Dashboard[/ bold green]")
72
+ console.print(
73
+ "[bold cyan]📈 With system metrics, job tracking, and performance monitoring[/ bold cyan]",
74
+ )
75
+
76
+ try:
77
+ run_dashboard()
78
+ except KeyboardInterrupt:
79
+ console.print("\n[yellow]🛑 Dashboard stopped[/ yellow]")
80
+
81
+
82
+ @depends.inject # type: ignore[misc]
83
+ def handle_unified_dashboard_mode(
84
+ port: int = 8675, dev_mode: bool = False, console: Inject[Console] = None
85
+ ) -> None:
86
+ from crackerjack.monitoring.websocket_server import CrackerjackMonitoringServer
87
+
88
+ console.print("[bold green]🚀 Starting Unified Monitoring Dashboard[/bold green]")
89
+ console.print(
90
+ f"[bold cyan]🌐 WebSocket server on port {port} with real-time streaming and web UI[/bold cyan]",
91
+ )
92
+
93
+ try:
94
+ server = CrackerjackMonitoringServer()
95
+ asyncio.run(server.start_monitoring(port))
96
+ except KeyboardInterrupt:
97
+ console.print("\n[yellow]🛑 Unified Dashboard stopped[/yellow]")
98
+ except Exception as e:
99
+ console.print(f"\n[red]❌ Unified Dashboard failed: {e}[/red]")
100
+
101
+
102
+ @depends.inject # type: ignore[misc]
103
+ def handle_watchdog_mode(console: Inject[Console] = None) -> None:
104
+ from crackerjack.mcp.service_watchdog import main as start_watchdog
105
+
106
+ try:
107
+ asyncio.run(start_watchdog())
108
+ except KeyboardInterrupt:
109
+ console.print("\n[yellow]🛑 Watchdog stopped[/ yellow]")
110
+
111
+
112
+ def handle_start_websocket_server(port: int = 8675) -> None:
113
+ from crackerjack.mcp.websocket.server import handle_websocket_server_command
114
+
115
+ handle_websocket_server_command(start=True, port=port)
116
+
117
+
118
+ def handle_stop_websocket_server() -> None:
119
+ from crackerjack.mcp.websocket.server import handle_websocket_server_command
120
+
121
+ handle_websocket_server_command(stop=True)
122
+
123
+
124
+ def handle_restart_websocket_server(port: int = 8675) -> None:
125
+ from crackerjack.mcp.websocket.server import handle_websocket_server_command
126
+
127
+ handle_websocket_server_command(restart=True, port=port)
128
+
129
+
130
+ @depends.inject # type: ignore[misc]
131
+ def handle_stop_mcp_server(console: Inject[Console] = None) -> None:
132
+ from crackerjack.services.server_manager import (
133
+ list_server_status,
134
+ stop_all_servers,
135
+ )
136
+
137
+ console.print("[bold red]🛑 Stopping MCP Servers[/ bold red]")
138
+
139
+ list_server_status(console)
140
+
141
+ if stop_all_servers(console):
142
+ console.print("\n[bold green]✅ All servers stopped successfully[/ bold green]")
143
+ else:
144
+ console.print("\n[bold red]❌ Some servers failed to stop[/ bold red]")
145
+ raise SystemExit(1)
146
+
147
+
148
+ @depends.inject # type: ignore[misc]
149
+ def handle_restart_mcp_server(
150
+ websocket_port: int | None = None, console: Inject[Console] = None
151
+ ) -> None:
152
+ from crackerjack.services.server_manager import restart_mcp_server
153
+
154
+ if restart_mcp_server(websocket_port, console):
155
+ console.print("\n[bold green]✅ MCP server restart completed[/ bold green]")
156
+ else:
157
+ console.print("\n[bold red]❌ MCP server restart failed[/ bold red]")
158
+ raise SystemExit(1)
159
+
160
+
161
+ @depends.inject # type: ignore[misc]
162
+ def handle_start_zuban_lsp(
163
+ port: int = 8677, mode: str = "tcp", console: Inject[Console] = None
164
+ ) -> None:
165
+ """Start Zuban LSP server."""
166
+ from crackerjack.services.zuban_lsp_service import (
167
+ create_zuban_lsp_service,
168
+ )
169
+
170
+ console.print("[bold cyan]🚀 Starting Zuban LSP Server[/bold cyan]")
171
+
172
+ async def _start() -> None:
173
+ lsp_service = await create_zuban_lsp_service(
174
+ port=port, mode=mode, console=console
175
+ )
176
+ if await lsp_service.start():
177
+ console.print(
178
+ f"[bold green]✅ Zuban LSP server started on port {port} ({mode} mode)[/bold green]"
179
+ )
180
+ else:
181
+ console.print("[bold red]❌ Failed to start Zuban LSP server[/bold red]")
182
+ raise SystemExit(1)
183
+
184
+ try:
185
+ asyncio.run(_start())
186
+ except KeyboardInterrupt:
187
+ console.print("\n[yellow]🛑 Zuban LSP startup interrupted[/yellow]")
188
+
189
+
190
+ @depends.inject # type: ignore[misc]
191
+ def handle_stop_zuban_lsp(console: Inject[Console] = None) -> None:
192
+ """Stop Zuban LSP server."""
193
+ from crackerjack.services.server_manager import stop_zuban_lsp
194
+
195
+ console.print("[bold red]🛑 Stopping Zuban LSP Server[/bold red]")
196
+
197
+ if stop_zuban_lsp(console):
198
+ console.print(
199
+ "\n[bold green]✅ Zuban LSP server stopped successfully[/bold green]"
200
+ )
201
+ else:
202
+ console.print("\n[bold red]❌ Failed to stop Zuban LSP server[/bold red]")
203
+ raise SystemExit(1)
204
+
205
+
206
+ @depends.inject # type: ignore[misc]
207
+ def handle_restart_zuban_lsp(
208
+ port: int = 8677, mode: str = "tcp", console: Inject[Console] = None
209
+ ) -> None:
210
+ """Restart Zuban LSP server."""
211
+ from crackerjack.services.server_manager import restart_zuban_lsp
212
+
213
+ if restart_zuban_lsp(console):
214
+ console.print(
215
+ "\n[bold green]✅ Zuban LSP server restart completed[/bold green]"
216
+ )
217
+ else:
218
+ console.print("\n[bold red]❌ Zuban LSP server restart failed[/bold red]")
219
+ raise SystemExit(1)
220
+
221
+
222
+ def handle_monitoring_commands(
223
+ monitor: bool,
224
+ enhanced_monitor: bool,
225
+ dashboard: bool,
226
+ unified_dashboard: bool,
227
+ unified_dashboard_port: int | None,
228
+ watchdog: bool,
229
+ dev: bool,
230
+ ) -> bool:
231
+ """Route monitoring and dashboard commands to appropriate handlers."""
232
+ if monitor:
233
+ handle_monitor_mode(dev_mode=dev)
234
+ return True
235
+ if enhanced_monitor:
236
+ handle_enhanced_monitor_mode(dev_mode=dev)
237
+ return True
238
+ if dashboard:
239
+ handle_dashboard_mode(dev_mode=dev)
240
+ return True
241
+ if unified_dashboard:
242
+ port = unified_dashboard_port or 8675
243
+ handle_unified_dashboard_mode(port=port, dev_mode=dev)
244
+ return True
245
+ if watchdog:
246
+ handle_watchdog_mode()
247
+ return True
248
+ return False
249
+
250
+
251
+ def handle_websocket_commands(
252
+ start_websocket_server: bool,
253
+ stop_websocket_server: bool,
254
+ restart_websocket_server: bool,
255
+ websocket_port: int | None,
256
+ ) -> bool:
257
+ """Route WebSocket server lifecycle commands to appropriate handlers."""
258
+ if start_websocket_server:
259
+ port = websocket_port or 8675
260
+ handle_start_websocket_server(port)
261
+ return True
262
+ if stop_websocket_server:
263
+ handle_stop_websocket_server()
264
+ return True
265
+ if restart_websocket_server:
266
+ port = websocket_port or 8675
267
+ handle_restart_websocket_server(port)
268
+ return True
269
+ return False
270
+
271
+
272
+ def handle_mcp_commands(
273
+ start_mcp_server: bool,
274
+ stop_mcp_server: bool,
275
+ restart_mcp_server: bool,
276
+ websocket_port: int | None,
277
+ ) -> bool:
278
+ """Route MCP server lifecycle commands to appropriate handlers."""
279
+ if start_mcp_server:
280
+ handle_mcp_server(websocket_port)
281
+ return True
282
+ if stop_mcp_server:
283
+ handle_stop_mcp_server()
284
+ return True
285
+ if restart_mcp_server:
286
+ handle_restart_mcp_server(websocket_port)
287
+ return True
288
+ return False
289
+
290
+
291
+ def handle_zuban_lsp_commands(
292
+ start_zuban_lsp: bool,
293
+ stop_zuban_lsp: bool,
294
+ restart_zuban_lsp: bool,
295
+ zuban_lsp_port: int,
296
+ zuban_lsp_mode: str,
297
+ ) -> bool:
298
+ """Route Zuban LSP lifecycle commands to appropriate handlers."""
299
+ if start_zuban_lsp:
300
+ handle_start_zuban_lsp(port=zuban_lsp_port, mode=zuban_lsp_mode)
301
+ return True
302
+ if stop_zuban_lsp:
303
+ handle_stop_zuban_lsp()
304
+ return True
305
+ if restart_zuban_lsp:
306
+ handle_restart_zuban_lsp(port=zuban_lsp_port, mode=zuban_lsp_mode)
307
+ return True
308
+ return False
309
+
310
+
311
+ def handle_server_commands(
312
+ monitor: bool,
313
+ enhanced_monitor: bool,
314
+ dashboard: bool,
315
+ unified_dashboard: bool,
316
+ unified_dashboard_port: int | None,
317
+ watchdog: bool,
318
+ start_websocket_server: bool,
319
+ stop_websocket_server: bool,
320
+ restart_websocket_server: bool,
321
+ start_mcp_server: bool,
322
+ stop_mcp_server: bool,
323
+ restart_mcp_server: bool,
324
+ websocket_port: int | None,
325
+ start_zuban_lsp: bool,
326
+ stop_zuban_lsp: bool,
327
+ restart_zuban_lsp: bool,
328
+ zuban_lsp_port: int,
329
+ zuban_lsp_mode: str,
330
+ dev: bool,
331
+ ) -> bool:
332
+ """Master coordinator for all server-related commands.
333
+
334
+ Routes to:
335
+ - handle_monitoring_commands (monitor, dashboard, watchdog)
336
+ - handle_websocket_commands (WebSocket server lifecycle)
337
+ - handle_mcp_commands (MCP server lifecycle)
338
+ - handle_zuban_lsp_commands (LSP server lifecycle)
339
+
340
+ Returns True if any server command was handled.
341
+ """
342
+ return (
343
+ handle_monitoring_commands(
344
+ monitor,
345
+ enhanced_monitor,
346
+ dashboard,
347
+ unified_dashboard,
348
+ unified_dashboard_port,
349
+ watchdog,
350
+ dev,
351
+ )
352
+ or handle_websocket_commands(
353
+ start_websocket_server,
354
+ stop_websocket_server,
355
+ restart_websocket_server,
356
+ websocket_port,
357
+ )
358
+ or handle_mcp_commands(
359
+ start_mcp_server,
360
+ stop_mcp_server,
361
+ restart_mcp_server,
362
+ websocket_port,
363
+ )
364
+ or handle_zuban_lsp_commands(
365
+ start_zuban_lsp,
366
+ stop_zuban_lsp,
367
+ restart_zuban_lsp,
368
+ zuban_lsp_port,
369
+ zuban_lsp_mode,
370
+ )
371
+ )