crackerjack 0.18.2__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 (533) hide show
  1. crackerjack/README.md +19 -0
  2. crackerjack/__init__.py +96 -2
  3. crackerjack/__main__.py +637 -138
  4. crackerjack/adapters/README.md +18 -0
  5. crackerjack/adapters/__init__.py +39 -0
  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/lsp/_base.py +194 -0
  27. crackerjack/adapters/lsp/_client.py +358 -0
  28. crackerjack/adapters/lsp/_manager.py +193 -0
  29. crackerjack/adapters/lsp/skylos.py +283 -0
  30. crackerjack/adapters/lsp/zuban.py +557 -0
  31. crackerjack/adapters/refactor/README.md +59 -0
  32. crackerjack/adapters/refactor/__init__.py +12 -0
  33. crackerjack/adapters/refactor/creosote.py +318 -0
  34. crackerjack/adapters/refactor/refurb.py +406 -0
  35. crackerjack/adapters/refactor/skylos.py +494 -0
  36. crackerjack/adapters/sast/README.md +132 -0
  37. crackerjack/adapters/sast/__init__.py +32 -0
  38. crackerjack/adapters/sast/_base.py +201 -0
  39. crackerjack/adapters/sast/bandit.py +423 -0
  40. crackerjack/adapters/sast/pyscn.py +405 -0
  41. crackerjack/adapters/sast/semgrep.py +241 -0
  42. crackerjack/adapters/security/README.md +111 -0
  43. crackerjack/adapters/security/__init__.py +17 -0
  44. crackerjack/adapters/security/gitleaks.py +339 -0
  45. crackerjack/adapters/type/README.md +52 -0
  46. crackerjack/adapters/type/__init__.py +12 -0
  47. crackerjack/adapters/type/pyrefly.py +402 -0
  48. crackerjack/adapters/type/ty.py +402 -0
  49. crackerjack/adapters/type/zuban.py +522 -0
  50. crackerjack/adapters/utility/README.md +51 -0
  51. crackerjack/adapters/utility/__init__.py +10 -0
  52. crackerjack/adapters/utility/checks.py +884 -0
  53. crackerjack/agents/README.md +264 -0
  54. crackerjack/agents/__init__.py +66 -0
  55. crackerjack/agents/architect_agent.py +238 -0
  56. crackerjack/agents/base.py +167 -0
  57. crackerjack/agents/claude_code_bridge.py +641 -0
  58. crackerjack/agents/coordinator.py +600 -0
  59. crackerjack/agents/documentation_agent.py +520 -0
  60. crackerjack/agents/dry_agent.py +585 -0
  61. crackerjack/agents/enhanced_coordinator.py +279 -0
  62. crackerjack/agents/enhanced_proactive_agent.py +185 -0
  63. crackerjack/agents/error_middleware.py +53 -0
  64. crackerjack/agents/formatting_agent.py +230 -0
  65. crackerjack/agents/helpers/__init__.py +9 -0
  66. crackerjack/agents/helpers/performance/__init__.py +22 -0
  67. crackerjack/agents/helpers/performance/performance_ast_analyzer.py +357 -0
  68. crackerjack/agents/helpers/performance/performance_pattern_detector.py +909 -0
  69. crackerjack/agents/helpers/performance/performance_recommender.py +572 -0
  70. crackerjack/agents/helpers/refactoring/__init__.py +22 -0
  71. crackerjack/agents/helpers/refactoring/code_transformer.py +536 -0
  72. crackerjack/agents/helpers/refactoring/complexity_analyzer.py +344 -0
  73. crackerjack/agents/helpers/refactoring/dead_code_detector.py +437 -0
  74. crackerjack/agents/helpers/test_creation/__init__.py +19 -0
  75. crackerjack/agents/helpers/test_creation/test_ast_analyzer.py +216 -0
  76. crackerjack/agents/helpers/test_creation/test_coverage_analyzer.py +643 -0
  77. crackerjack/agents/helpers/test_creation/test_template_generator.py +1031 -0
  78. crackerjack/agents/import_optimization_agent.py +1181 -0
  79. crackerjack/agents/performance_agent.py +325 -0
  80. crackerjack/agents/performance_helpers.py +205 -0
  81. crackerjack/agents/proactive_agent.py +55 -0
  82. crackerjack/agents/refactoring_agent.py +511 -0
  83. crackerjack/agents/refactoring_helpers.py +247 -0
  84. crackerjack/agents/security_agent.py +793 -0
  85. crackerjack/agents/semantic_agent.py +479 -0
  86. crackerjack/agents/semantic_helpers.py +356 -0
  87. crackerjack/agents/test_creation_agent.py +570 -0
  88. crackerjack/agents/test_specialist_agent.py +526 -0
  89. crackerjack/agents/tracker.py +110 -0
  90. crackerjack/api.py +647 -0
  91. crackerjack/cli/README.md +394 -0
  92. crackerjack/cli/__init__.py +24 -0
  93. crackerjack/cli/cache_handlers.py +209 -0
  94. crackerjack/cli/cache_handlers_enhanced.py +680 -0
  95. crackerjack/cli/facade.py +162 -0
  96. crackerjack/cli/formatting.py +13 -0
  97. crackerjack/cli/handlers/__init__.py +85 -0
  98. crackerjack/cli/handlers/advanced.py +103 -0
  99. crackerjack/cli/handlers/ai_features.py +62 -0
  100. crackerjack/cli/handlers/analytics.py +479 -0
  101. crackerjack/cli/handlers/changelog.py +271 -0
  102. crackerjack/cli/handlers/config_handlers.py +16 -0
  103. crackerjack/cli/handlers/coverage.py +84 -0
  104. crackerjack/cli/handlers/documentation.py +280 -0
  105. crackerjack/cli/handlers/main_handlers.py +497 -0
  106. crackerjack/cli/handlers/monitoring.py +371 -0
  107. crackerjack/cli/handlers.py +700 -0
  108. crackerjack/cli/interactive.py +488 -0
  109. crackerjack/cli/options.py +1216 -0
  110. crackerjack/cli/semantic_handlers.py +292 -0
  111. crackerjack/cli/utils.py +19 -0
  112. crackerjack/cli/version.py +19 -0
  113. crackerjack/code_cleaner.py +1307 -0
  114. crackerjack/config/README.md +472 -0
  115. crackerjack/config/__init__.py +275 -0
  116. crackerjack/config/global_lock_config.py +207 -0
  117. crackerjack/config/hooks.py +390 -0
  118. crackerjack/config/loader.py +239 -0
  119. crackerjack/config/settings.py +141 -0
  120. crackerjack/config/tool_commands.py +331 -0
  121. crackerjack/core/README.md +393 -0
  122. crackerjack/core/__init__.py +0 -0
  123. crackerjack/core/async_workflow_orchestrator.py +738 -0
  124. crackerjack/core/autofix_coordinator.py +282 -0
  125. crackerjack/core/container.py +105 -0
  126. crackerjack/core/enhanced_container.py +583 -0
  127. crackerjack/core/file_lifecycle.py +472 -0
  128. crackerjack/core/performance.py +244 -0
  129. crackerjack/core/performance_monitor.py +357 -0
  130. crackerjack/core/phase_coordinator.py +1227 -0
  131. crackerjack/core/proactive_workflow.py +267 -0
  132. crackerjack/core/resource_manager.py +425 -0
  133. crackerjack/core/retry.py +275 -0
  134. crackerjack/core/service_watchdog.py +601 -0
  135. crackerjack/core/session_coordinator.py +239 -0
  136. crackerjack/core/timeout_manager.py +563 -0
  137. crackerjack/core/websocket_lifecycle.py +410 -0
  138. crackerjack/core/workflow/__init__.py +21 -0
  139. crackerjack/core/workflow/workflow_ai_coordinator.py +863 -0
  140. crackerjack/core/workflow/workflow_event_orchestrator.py +1107 -0
  141. crackerjack/core/workflow/workflow_issue_parser.py +714 -0
  142. crackerjack/core/workflow/workflow_phase_executor.py +1158 -0
  143. crackerjack/core/workflow/workflow_security_gates.py +400 -0
  144. crackerjack/core/workflow_orchestrator.py +2243 -0
  145. crackerjack/data/README.md +11 -0
  146. crackerjack/data/__init__.py +8 -0
  147. crackerjack/data/models.py +79 -0
  148. crackerjack/data/repository.py +210 -0
  149. crackerjack/decorators/README.md +180 -0
  150. crackerjack/decorators/__init__.py +35 -0
  151. crackerjack/decorators/error_handling.py +649 -0
  152. crackerjack/decorators/error_handling_decorators.py +334 -0
  153. crackerjack/decorators/helpers.py +58 -0
  154. crackerjack/decorators/patterns.py +281 -0
  155. crackerjack/decorators/utils.py +58 -0
  156. crackerjack/docs/INDEX.md +11 -0
  157. crackerjack/docs/README.md +11 -0
  158. crackerjack/docs/generated/api/API_REFERENCE.md +10895 -0
  159. crackerjack/docs/generated/api/CLI_REFERENCE.md +109 -0
  160. crackerjack/docs/generated/api/CROSS_REFERENCES.md +1755 -0
  161. crackerjack/docs/generated/api/PROTOCOLS.md +3 -0
  162. crackerjack/docs/generated/api/SERVICES.md +1252 -0
  163. crackerjack/documentation/README.md +11 -0
  164. crackerjack/documentation/__init__.py +31 -0
  165. crackerjack/documentation/ai_templates.py +756 -0
  166. crackerjack/documentation/dual_output_generator.py +767 -0
  167. crackerjack/documentation/mkdocs_integration.py +518 -0
  168. crackerjack/documentation/reference_generator.py +1065 -0
  169. crackerjack/dynamic_config.py +678 -0
  170. crackerjack/errors.py +378 -0
  171. crackerjack/events/README.md +11 -0
  172. crackerjack/events/__init__.py +16 -0
  173. crackerjack/events/telemetry.py +175 -0
  174. crackerjack/events/workflow_bus.py +346 -0
  175. crackerjack/exceptions/README.md +301 -0
  176. crackerjack/exceptions/__init__.py +5 -0
  177. crackerjack/exceptions/config.py +4 -0
  178. crackerjack/exceptions/tool_execution_error.py +245 -0
  179. crackerjack/executors/README.md +591 -0
  180. crackerjack/executors/__init__.py +13 -0
  181. crackerjack/executors/async_hook_executor.py +938 -0
  182. crackerjack/executors/cached_hook_executor.py +316 -0
  183. crackerjack/executors/hook_executor.py +1295 -0
  184. crackerjack/executors/hook_lock_manager.py +708 -0
  185. crackerjack/executors/individual_hook_executor.py +739 -0
  186. crackerjack/executors/lsp_aware_hook_executor.py +349 -0
  187. crackerjack/executors/progress_hook_executor.py +282 -0
  188. crackerjack/executors/tool_proxy.py +433 -0
  189. crackerjack/hooks/README.md +485 -0
  190. crackerjack/hooks/lsp_hook.py +93 -0
  191. crackerjack/intelligence/README.md +557 -0
  192. crackerjack/intelligence/__init__.py +37 -0
  193. crackerjack/intelligence/adaptive_learning.py +693 -0
  194. crackerjack/intelligence/agent_orchestrator.py +485 -0
  195. crackerjack/intelligence/agent_registry.py +377 -0
  196. crackerjack/intelligence/agent_selector.py +439 -0
  197. crackerjack/intelligence/integration.py +250 -0
  198. crackerjack/interactive.py +719 -0
  199. crackerjack/managers/README.md +369 -0
  200. crackerjack/managers/__init__.py +11 -0
  201. crackerjack/managers/async_hook_manager.py +135 -0
  202. crackerjack/managers/hook_manager.py +585 -0
  203. crackerjack/managers/publish_manager.py +631 -0
  204. crackerjack/managers/test_command_builder.py +391 -0
  205. crackerjack/managers/test_executor.py +474 -0
  206. crackerjack/managers/test_manager.py +1357 -0
  207. crackerjack/managers/test_progress.py +187 -0
  208. crackerjack/mcp/README.md +374 -0
  209. crackerjack/mcp/__init__.py +0 -0
  210. crackerjack/mcp/cache.py +352 -0
  211. crackerjack/mcp/client_runner.py +121 -0
  212. crackerjack/mcp/context.py +802 -0
  213. crackerjack/mcp/dashboard.py +657 -0
  214. crackerjack/mcp/enhanced_progress_monitor.py +493 -0
  215. crackerjack/mcp/file_monitor.py +394 -0
  216. crackerjack/mcp/progress_components.py +607 -0
  217. crackerjack/mcp/progress_monitor.py +1016 -0
  218. crackerjack/mcp/rate_limiter.py +336 -0
  219. crackerjack/mcp/server.py +24 -0
  220. crackerjack/mcp/server_core.py +526 -0
  221. crackerjack/mcp/service_watchdog.py +505 -0
  222. crackerjack/mcp/state.py +407 -0
  223. crackerjack/mcp/task_manager.py +259 -0
  224. crackerjack/mcp/tools/README.md +27 -0
  225. crackerjack/mcp/tools/__init__.py +19 -0
  226. crackerjack/mcp/tools/core_tools.py +469 -0
  227. crackerjack/mcp/tools/error_analyzer.py +283 -0
  228. crackerjack/mcp/tools/execution_tools.py +384 -0
  229. crackerjack/mcp/tools/intelligence_tool_registry.py +46 -0
  230. crackerjack/mcp/tools/intelligence_tools.py +264 -0
  231. crackerjack/mcp/tools/monitoring_tools.py +628 -0
  232. crackerjack/mcp/tools/proactive_tools.py +367 -0
  233. crackerjack/mcp/tools/progress_tools.py +222 -0
  234. crackerjack/mcp/tools/semantic_tools.py +584 -0
  235. crackerjack/mcp/tools/utility_tools.py +358 -0
  236. crackerjack/mcp/tools/workflow_executor.py +699 -0
  237. crackerjack/mcp/websocket/README.md +31 -0
  238. crackerjack/mcp/websocket/__init__.py +14 -0
  239. crackerjack/mcp/websocket/app.py +54 -0
  240. crackerjack/mcp/websocket/endpoints.py +492 -0
  241. crackerjack/mcp/websocket/event_bridge.py +188 -0
  242. crackerjack/mcp/websocket/jobs.py +406 -0
  243. crackerjack/mcp/websocket/monitoring/__init__.py +25 -0
  244. crackerjack/mcp/websocket/monitoring/api/__init__.py +19 -0
  245. crackerjack/mcp/websocket/monitoring/api/dependencies.py +141 -0
  246. crackerjack/mcp/websocket/monitoring/api/heatmap.py +154 -0
  247. crackerjack/mcp/websocket/monitoring/api/intelligence.py +199 -0
  248. crackerjack/mcp/websocket/monitoring/api/metrics.py +203 -0
  249. crackerjack/mcp/websocket/monitoring/api/telemetry.py +101 -0
  250. crackerjack/mcp/websocket/monitoring/dashboard.py +18 -0
  251. crackerjack/mcp/websocket/monitoring/factory.py +109 -0
  252. crackerjack/mcp/websocket/monitoring/filters.py +10 -0
  253. crackerjack/mcp/websocket/monitoring/metrics.py +64 -0
  254. crackerjack/mcp/websocket/monitoring/models.py +90 -0
  255. crackerjack/mcp/websocket/monitoring/utils.py +171 -0
  256. crackerjack/mcp/websocket/monitoring/websocket_manager.py +78 -0
  257. crackerjack/mcp/websocket/monitoring/websockets/__init__.py +17 -0
  258. crackerjack/mcp/websocket/monitoring/websockets/dependencies.py +126 -0
  259. crackerjack/mcp/websocket/monitoring/websockets/heatmap.py +176 -0
  260. crackerjack/mcp/websocket/monitoring/websockets/intelligence.py +291 -0
  261. crackerjack/mcp/websocket/monitoring/websockets/metrics.py +291 -0
  262. crackerjack/mcp/websocket/monitoring_endpoints.py +21 -0
  263. crackerjack/mcp/websocket/server.py +174 -0
  264. crackerjack/mcp/websocket/websocket_handler.py +276 -0
  265. crackerjack/mcp/websocket_server.py +10 -0
  266. crackerjack/models/README.md +308 -0
  267. crackerjack/models/__init__.py +40 -0
  268. crackerjack/models/config.py +730 -0
  269. crackerjack/models/config_adapter.py +265 -0
  270. crackerjack/models/protocols.py +1535 -0
  271. crackerjack/models/pydantic_models.py +320 -0
  272. crackerjack/models/qa_config.py +145 -0
  273. crackerjack/models/qa_results.py +134 -0
  274. crackerjack/models/resource_protocols.py +299 -0
  275. crackerjack/models/results.py +35 -0
  276. crackerjack/models/semantic_models.py +258 -0
  277. crackerjack/models/task.py +173 -0
  278. crackerjack/models/test_models.py +60 -0
  279. crackerjack/monitoring/README.md +11 -0
  280. crackerjack/monitoring/__init__.py +0 -0
  281. crackerjack/monitoring/ai_agent_watchdog.py +405 -0
  282. crackerjack/monitoring/metrics_collector.py +427 -0
  283. crackerjack/monitoring/regression_prevention.py +580 -0
  284. crackerjack/monitoring/websocket_server.py +406 -0
  285. crackerjack/orchestration/README.md +340 -0
  286. crackerjack/orchestration/__init__.py +43 -0
  287. crackerjack/orchestration/advanced_orchestrator.py +894 -0
  288. crackerjack/orchestration/cache/README.md +312 -0
  289. crackerjack/orchestration/cache/__init__.py +37 -0
  290. crackerjack/orchestration/cache/memory_cache.py +338 -0
  291. crackerjack/orchestration/cache/tool_proxy_cache.py +340 -0
  292. crackerjack/orchestration/config.py +297 -0
  293. crackerjack/orchestration/coverage_improvement.py +180 -0
  294. crackerjack/orchestration/execution_strategies.py +361 -0
  295. crackerjack/orchestration/hook_orchestrator.py +1398 -0
  296. crackerjack/orchestration/strategies/README.md +401 -0
  297. crackerjack/orchestration/strategies/__init__.py +39 -0
  298. crackerjack/orchestration/strategies/adaptive_strategy.py +630 -0
  299. crackerjack/orchestration/strategies/parallel_strategy.py +237 -0
  300. crackerjack/orchestration/strategies/sequential_strategy.py +299 -0
  301. crackerjack/orchestration/test_progress_streamer.py +647 -0
  302. crackerjack/plugins/README.md +11 -0
  303. crackerjack/plugins/__init__.py +15 -0
  304. crackerjack/plugins/base.py +200 -0
  305. crackerjack/plugins/hooks.py +254 -0
  306. crackerjack/plugins/loader.py +335 -0
  307. crackerjack/plugins/managers.py +264 -0
  308. crackerjack/py313.py +191 -0
  309. crackerjack/security/README.md +11 -0
  310. crackerjack/security/__init__.py +0 -0
  311. crackerjack/security/audit.py +197 -0
  312. crackerjack/services/README.md +374 -0
  313. crackerjack/services/__init__.py +9 -0
  314. crackerjack/services/ai/README.md +295 -0
  315. crackerjack/services/ai/__init__.py +7 -0
  316. crackerjack/services/ai/advanced_optimizer.py +878 -0
  317. crackerjack/services/ai/contextual_ai_assistant.py +542 -0
  318. crackerjack/services/ai/embeddings.py +444 -0
  319. crackerjack/services/ai/intelligent_commit.py +328 -0
  320. crackerjack/services/ai/predictive_analytics.py +510 -0
  321. crackerjack/services/anomaly_detector.py +392 -0
  322. crackerjack/services/api_extractor.py +617 -0
  323. crackerjack/services/backup_service.py +467 -0
  324. crackerjack/services/bounded_status_operations.py +530 -0
  325. crackerjack/services/cache.py +369 -0
  326. crackerjack/services/changelog_automation.py +399 -0
  327. crackerjack/services/command_execution_service.py +305 -0
  328. crackerjack/services/config_integrity.py +132 -0
  329. crackerjack/services/config_merge.py +546 -0
  330. crackerjack/services/config_service.py +198 -0
  331. crackerjack/services/config_template.py +493 -0
  332. crackerjack/services/coverage_badge_service.py +173 -0
  333. crackerjack/services/coverage_ratchet.py +381 -0
  334. crackerjack/services/debug.py +733 -0
  335. crackerjack/services/dependency_analyzer.py +460 -0
  336. crackerjack/services/dependency_monitor.py +622 -0
  337. crackerjack/services/documentation_generator.py +493 -0
  338. crackerjack/services/documentation_service.py +704 -0
  339. crackerjack/services/enhanced_filesystem.py +497 -0
  340. crackerjack/services/enterprise_optimizer.py +865 -0
  341. crackerjack/services/error_pattern_analyzer.py +676 -0
  342. crackerjack/services/file_filter.py +221 -0
  343. crackerjack/services/file_hasher.py +149 -0
  344. crackerjack/services/file_io_service.py +361 -0
  345. crackerjack/services/file_modifier.py +615 -0
  346. crackerjack/services/filesystem.py +381 -0
  347. crackerjack/services/git.py +422 -0
  348. crackerjack/services/health_metrics.py +615 -0
  349. crackerjack/services/heatmap_generator.py +744 -0
  350. crackerjack/services/incremental_executor.py +380 -0
  351. crackerjack/services/initialization.py +823 -0
  352. crackerjack/services/input_validator.py +668 -0
  353. crackerjack/services/intelligent_commit.py +327 -0
  354. crackerjack/services/log_manager.py +289 -0
  355. crackerjack/services/logging.py +228 -0
  356. crackerjack/services/lsp_client.py +628 -0
  357. crackerjack/services/memory_optimizer.py +414 -0
  358. crackerjack/services/metrics.py +587 -0
  359. crackerjack/services/monitoring/README.md +30 -0
  360. crackerjack/services/monitoring/__init__.py +9 -0
  361. crackerjack/services/monitoring/dependency_monitor.py +678 -0
  362. crackerjack/services/monitoring/error_pattern_analyzer.py +676 -0
  363. crackerjack/services/monitoring/health_metrics.py +716 -0
  364. crackerjack/services/monitoring/metrics.py +587 -0
  365. crackerjack/services/monitoring/performance_benchmarks.py +410 -0
  366. crackerjack/services/monitoring/performance_cache.py +388 -0
  367. crackerjack/services/monitoring/performance_monitor.py +569 -0
  368. crackerjack/services/parallel_executor.py +527 -0
  369. crackerjack/services/pattern_cache.py +333 -0
  370. crackerjack/services/pattern_detector.py +478 -0
  371. crackerjack/services/patterns/__init__.py +142 -0
  372. crackerjack/services/patterns/agents.py +107 -0
  373. crackerjack/services/patterns/code/__init__.py +15 -0
  374. crackerjack/services/patterns/code/detection.py +118 -0
  375. crackerjack/services/patterns/code/imports.py +107 -0
  376. crackerjack/services/patterns/code/paths.py +159 -0
  377. crackerjack/services/patterns/code/performance.py +119 -0
  378. crackerjack/services/patterns/code/replacement.py +36 -0
  379. crackerjack/services/patterns/core.py +212 -0
  380. crackerjack/services/patterns/documentation/__init__.py +14 -0
  381. crackerjack/services/patterns/documentation/badges_markdown.py +96 -0
  382. crackerjack/services/patterns/documentation/comments_blocks.py +83 -0
  383. crackerjack/services/patterns/documentation/docstrings.py +89 -0
  384. crackerjack/services/patterns/formatting.py +226 -0
  385. crackerjack/services/patterns/operations.py +339 -0
  386. crackerjack/services/patterns/security/__init__.py +23 -0
  387. crackerjack/services/patterns/security/code_injection.py +122 -0
  388. crackerjack/services/patterns/security/credentials.py +190 -0
  389. crackerjack/services/patterns/security/path_traversal.py +221 -0
  390. crackerjack/services/patterns/security/unsafe_operations.py +216 -0
  391. crackerjack/services/patterns/templates.py +62 -0
  392. crackerjack/services/patterns/testing/__init__.py +18 -0
  393. crackerjack/services/patterns/testing/error_patterns.py +107 -0
  394. crackerjack/services/patterns/testing/pytest_output.py +126 -0
  395. crackerjack/services/patterns/tool_output/__init__.py +16 -0
  396. crackerjack/services/patterns/tool_output/bandit.py +72 -0
  397. crackerjack/services/patterns/tool_output/other.py +97 -0
  398. crackerjack/services/patterns/tool_output/pyright.py +67 -0
  399. crackerjack/services/patterns/tool_output/ruff.py +44 -0
  400. crackerjack/services/patterns/url_sanitization.py +114 -0
  401. crackerjack/services/patterns/utilities.py +42 -0
  402. crackerjack/services/patterns/utils.py +339 -0
  403. crackerjack/services/patterns/validation.py +46 -0
  404. crackerjack/services/patterns/versioning.py +62 -0
  405. crackerjack/services/predictive_analytics.py +523 -0
  406. crackerjack/services/profiler.py +280 -0
  407. crackerjack/services/quality/README.md +415 -0
  408. crackerjack/services/quality/__init__.py +11 -0
  409. crackerjack/services/quality/anomaly_detector.py +392 -0
  410. crackerjack/services/quality/pattern_cache.py +333 -0
  411. crackerjack/services/quality/pattern_detector.py +479 -0
  412. crackerjack/services/quality/qa_orchestrator.py +491 -0
  413. crackerjack/services/quality/quality_baseline.py +395 -0
  414. crackerjack/services/quality/quality_baseline_enhanced.py +649 -0
  415. crackerjack/services/quality/quality_intelligence.py +949 -0
  416. crackerjack/services/regex_patterns.py +58 -0
  417. crackerjack/services/regex_utils.py +483 -0
  418. crackerjack/services/secure_path_utils.py +524 -0
  419. crackerjack/services/secure_status_formatter.py +450 -0
  420. crackerjack/services/secure_subprocess.py +635 -0
  421. crackerjack/services/security.py +239 -0
  422. crackerjack/services/security_logger.py +495 -0
  423. crackerjack/services/server_manager.py +411 -0
  424. crackerjack/services/smart_scheduling.py +167 -0
  425. crackerjack/services/status_authentication.py +460 -0
  426. crackerjack/services/status_security_manager.py +315 -0
  427. crackerjack/services/terminal_utils.py +0 -0
  428. crackerjack/services/thread_safe_status_collector.py +441 -0
  429. crackerjack/services/tool_filter.py +368 -0
  430. crackerjack/services/tool_version_service.py +43 -0
  431. crackerjack/services/unified_config.py +115 -0
  432. crackerjack/services/validation_rate_limiter.py +220 -0
  433. crackerjack/services/vector_store.py +689 -0
  434. crackerjack/services/version_analyzer.py +461 -0
  435. crackerjack/services/version_checker.py +223 -0
  436. crackerjack/services/websocket_resource_limiter.py +438 -0
  437. crackerjack/services/zuban_lsp_service.py +391 -0
  438. crackerjack/slash_commands/README.md +11 -0
  439. crackerjack/slash_commands/__init__.py +59 -0
  440. crackerjack/slash_commands/init.md +112 -0
  441. crackerjack/slash_commands/run.md +197 -0
  442. crackerjack/slash_commands/status.md +127 -0
  443. crackerjack/tools/README.md +11 -0
  444. crackerjack/tools/__init__.py +30 -0
  445. crackerjack/tools/_git_utils.py +105 -0
  446. crackerjack/tools/check_added_large_files.py +139 -0
  447. crackerjack/tools/check_ast.py +105 -0
  448. crackerjack/tools/check_json.py +103 -0
  449. crackerjack/tools/check_jsonschema.py +297 -0
  450. crackerjack/tools/check_toml.py +103 -0
  451. crackerjack/tools/check_yaml.py +110 -0
  452. crackerjack/tools/codespell_wrapper.py +72 -0
  453. crackerjack/tools/end_of_file_fixer.py +202 -0
  454. crackerjack/tools/format_json.py +128 -0
  455. crackerjack/tools/mdformat_wrapper.py +114 -0
  456. crackerjack/tools/trailing_whitespace.py +198 -0
  457. crackerjack/tools/validate_input_validator_patterns.py +236 -0
  458. crackerjack/tools/validate_regex_patterns.py +188 -0
  459. crackerjack/ui/README.md +11 -0
  460. crackerjack/ui/__init__.py +1 -0
  461. crackerjack/ui/dashboard_renderer.py +28 -0
  462. crackerjack/ui/templates/README.md +11 -0
  463. crackerjack/utils/console_utils.py +13 -0
  464. crackerjack/utils/dependency_guard.py +230 -0
  465. crackerjack/utils/retry_utils.py +275 -0
  466. crackerjack/workflows/README.md +590 -0
  467. crackerjack/workflows/__init__.py +46 -0
  468. crackerjack/workflows/actions.py +811 -0
  469. crackerjack/workflows/auto_fix.py +444 -0
  470. crackerjack/workflows/container_builder.py +499 -0
  471. crackerjack/workflows/definitions.py +443 -0
  472. crackerjack/workflows/engine.py +177 -0
  473. crackerjack/workflows/event_bridge.py +242 -0
  474. crackerjack-0.45.2.dist-info/METADATA +1678 -0
  475. crackerjack-0.45.2.dist-info/RECORD +478 -0
  476. {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/WHEEL +1 -1
  477. crackerjack-0.45.2.dist-info/entry_points.txt +2 -0
  478. crackerjack/.gitignore +0 -14
  479. crackerjack/.libcst.codemod.yaml +0 -18
  480. crackerjack/.pdm.toml +0 -1
  481. crackerjack/.pre-commit-config.yaml +0 -91
  482. crackerjack/.pytest_cache/.gitignore +0 -2
  483. crackerjack/.pytest_cache/CACHEDIR.TAG +0 -4
  484. crackerjack/.pytest_cache/README.md +0 -8
  485. crackerjack/.pytest_cache/v/cache/nodeids +0 -1
  486. crackerjack/.pytest_cache/v/cache/stepwise +0 -1
  487. crackerjack/.ruff_cache/.gitignore +0 -1
  488. crackerjack/.ruff_cache/0.1.11/3256171999636029978 +0 -0
  489. crackerjack/.ruff_cache/0.1.14/602324811142551221 +0 -0
  490. crackerjack/.ruff_cache/0.1.4/10355199064880463147 +0 -0
  491. crackerjack/.ruff_cache/0.1.6/15140459877605758699 +0 -0
  492. crackerjack/.ruff_cache/0.1.7/1790508110482614856 +0 -0
  493. crackerjack/.ruff_cache/0.1.9/17041001205004563469 +0 -0
  494. crackerjack/.ruff_cache/0.11.2/4070660268492669020 +0 -0
  495. crackerjack/.ruff_cache/0.11.3/9818742842212983150 +0 -0
  496. crackerjack/.ruff_cache/0.11.4/9818742842212983150 +0 -0
  497. crackerjack/.ruff_cache/0.11.6/3557596832929915217 +0 -0
  498. crackerjack/.ruff_cache/0.11.7/10386934055395314831 +0 -0
  499. crackerjack/.ruff_cache/0.11.7/3557596832929915217 +0 -0
  500. crackerjack/.ruff_cache/0.11.8/530407680854991027 +0 -0
  501. crackerjack/.ruff_cache/0.2.0/10047773857155985907 +0 -0
  502. crackerjack/.ruff_cache/0.2.1/8522267973936635051 +0 -0
  503. crackerjack/.ruff_cache/0.2.2/18053836298936336950 +0 -0
  504. crackerjack/.ruff_cache/0.3.0/12548816621480535786 +0 -0
  505. crackerjack/.ruff_cache/0.3.3/11081883392474770722 +0 -0
  506. crackerjack/.ruff_cache/0.3.4/676973378459347183 +0 -0
  507. crackerjack/.ruff_cache/0.3.5/16311176246009842383 +0 -0
  508. crackerjack/.ruff_cache/0.5.7/1493622539551733492 +0 -0
  509. crackerjack/.ruff_cache/0.5.7/6231957614044513175 +0 -0
  510. crackerjack/.ruff_cache/0.5.7/9932762556785938009 +0 -0
  511. crackerjack/.ruff_cache/0.6.0/11982804814124138945 +0 -0
  512. crackerjack/.ruff_cache/0.6.0/12055761203849489982 +0 -0
  513. crackerjack/.ruff_cache/0.6.2/1206147804896221174 +0 -0
  514. crackerjack/.ruff_cache/0.6.4/1206147804896221174 +0 -0
  515. crackerjack/.ruff_cache/0.6.5/1206147804896221174 +0 -0
  516. crackerjack/.ruff_cache/0.6.7/3657366982708166874 +0 -0
  517. crackerjack/.ruff_cache/0.6.9/285614542852677309 +0 -0
  518. crackerjack/.ruff_cache/0.7.1/1024065805990144819 +0 -0
  519. crackerjack/.ruff_cache/0.7.1/285614542852677309 +0 -0
  520. crackerjack/.ruff_cache/0.7.3/16061516852537040135 +0 -0
  521. crackerjack/.ruff_cache/0.8.4/16354268377385700367 +0 -0
  522. crackerjack/.ruff_cache/0.9.10/12813592349865671909 +0 -0
  523. crackerjack/.ruff_cache/0.9.10/923908772239632759 +0 -0
  524. crackerjack/.ruff_cache/0.9.3/13948373885254993391 +0 -0
  525. crackerjack/.ruff_cache/0.9.9/12813592349865671909 +0 -0
  526. crackerjack/.ruff_cache/0.9.9/8843823720003377982 +0 -0
  527. crackerjack/.ruff_cache/CACHEDIR.TAG +0 -1
  528. crackerjack/crackerjack.py +0 -855
  529. crackerjack/pyproject.toml +0 -214
  530. crackerjack-0.18.2.dist-info/METADATA +0 -420
  531. crackerjack-0.18.2.dist-info/RECORD +0 -59
  532. crackerjack-0.18.2.dist-info/entry_points.txt +0 -4
  533. {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,187 @@
1
+ import threading
2
+ import time
3
+ import typing as t
4
+
5
+
6
+ class TestProgress:
7
+ def __init__(self) -> None:
8
+ self.total_tests: int = 0
9
+ self.passed: int = 0
10
+ self.failed: int = 0
11
+ self.skipped: int = 0
12
+ self.errors: int = 0
13
+ self.current_test: str = ""
14
+ self.start_time: float = 0
15
+ self.is_complete: bool = False
16
+ self.is_collecting: bool = True
17
+ self.files_discovered: int = 0
18
+ self.collection_status: str = "Starting collection..."
19
+ self._lock = threading.Lock()
20
+ self._seen_files: set[str] = set()
21
+
22
+ @property
23
+ def completed(self) -> int:
24
+ return self.passed + self.failed + self.skipped + self.errors
25
+
26
+ @property
27
+ def elapsed_time(self) -> float:
28
+ return time.time() - self.start_time if self.start_time else 0
29
+
30
+ @property
31
+ def eta_seconds(self) -> float | None:
32
+ if self.completed <= 0 or self.total_tests <= 0:
33
+ return None
34
+ progress_rate = (
35
+ self.completed / self.elapsed_time if self.elapsed_time > 0 else 0
36
+ )
37
+ remaining = self.total_tests - self.completed
38
+ return remaining / progress_rate if progress_rate > 0 else None
39
+
40
+ @property
41
+ def tests_per_second(self) -> float:
42
+ """Calculate test execution rate."""
43
+ if self.elapsed_time > 0 and self.completed > 0:
44
+ return self.completed / self.elapsed_time
45
+ return 0.0
46
+
47
+ @property
48
+ def overall_status_color(self) -> str:
49
+ """Determine overall status color based on test results."""
50
+ if self.failed > 0 or self.errors > 0:
51
+ return "red"
52
+ elif self.completed > 0 and self.completed == self.total_tests:
53
+ return "green"
54
+ elif self.passed > 0:
55
+ return "yellow" # Tests running, some passed
56
+ return "cyan" # Default color
57
+
58
+ def update(self, **kwargs: t.Any) -> None:
59
+ with self._lock:
60
+ for key, value in kwargs.items():
61
+ if hasattr(self, key):
62
+ setattr(self, key, value)
63
+
64
+ def _create_progress_bar(self, width: int = 20) -> str:
65
+ """Create a visual progress bar.
66
+
67
+ Args:
68
+ width: Width of the progress bar in characters
69
+
70
+ Returns:
71
+ Formatted progress bar string like [████████░░░░] 40%
72
+ """
73
+ if self.total_tests == 0:
74
+ return ""
75
+
76
+ progress_ratio = self.completed / self.total_tests
77
+ filled = int(progress_ratio * width)
78
+ empty = width - filled
79
+
80
+ # Use different characters for passed vs failed
81
+ if self.failed > 0 or self.errors > 0:
82
+ fill_char = "▓" # Denser for failures
83
+ bar_color = "red"
84
+ else:
85
+ fill_char = "█"
86
+ bar_color = "green" if self.completed == self.total_tests else "yellow"
87
+
88
+ bar = fill_char * filled + "░" * empty
89
+ percentage = int(progress_ratio * 100)
90
+
91
+ return f"[{bar_color}][{bar}] {percentage}%[/{bar_color}]"
92
+
93
+ def _format_eta(self) -> str:
94
+ """Format ETA in human-readable form.
95
+
96
+ Returns:
97
+ Formatted ETA string like "ETA: 12s" or "ETA: 2m 34s"
98
+ """
99
+ eta = self.eta_seconds
100
+ if eta is None or eta <= 0:
101
+ return ""
102
+
103
+ if eta < 60:
104
+ return f"ETA: {int(eta)}s"
105
+ elif eta < 3600:
106
+ minutes = int(eta // 60)
107
+ seconds = int(eta % 60)
108
+ return f"ETA: {minutes}m {seconds}s"
109
+ else:
110
+ hours = int(eta // 3600)
111
+ minutes = int((eta % 3600) // 60)
112
+ return f"ETA: {hours}h {minutes}m"
113
+
114
+ def _format_test_rate(self) -> str:
115
+ """Format test execution rate.
116
+
117
+ Returns:
118
+ Formatted rate string like "12.5 tests/s"
119
+ """
120
+ rate = self.tests_per_second
121
+ if rate == 0:
122
+ return ""
123
+ return f"{rate:.1f} tests/s"
124
+
125
+ def format_progress(self) -> str:
126
+ if self.is_collecting:
127
+ return self._format_collection_progress()
128
+ return self._format_execution_progress()
129
+
130
+ def _format_collection_progress(self) -> str:
131
+ status_parts = [f"⠋ [cyan]{self.collection_status}[/cyan]"]
132
+
133
+ if self.files_discovered > 0:
134
+ status_parts.append(f"[dim]{self.files_discovered} test files[/dim]")
135
+
136
+ elapsed = self.elapsed_time
137
+ if elapsed > 1:
138
+ status_parts.append(f"[dim]{elapsed:.1f}s[/dim]")
139
+
140
+ return " | ".join(status_parts)
141
+
142
+ def _format_progress_counters(self) -> list[str]:
143
+ """Format pass/fail/skip/error status counters.
144
+
145
+ Returns:
146
+ List of formatted status counter strings
147
+ """
148
+ status_parts = []
149
+ if self.completed > 0:
150
+ progress_pct = (self.completed / self.total_tests) * 100
151
+ status_parts.append(
152
+ f"[dim]{self.completed}/{self.total_tests} ({progress_pct:.0f}%)[/dim]"
153
+ )
154
+
155
+ if self.passed > 0:
156
+ status_parts.append(f"[green]✅ {self.passed}[/green]")
157
+ if self.failed > 0:
158
+ status_parts.append(f"[red]❌ {self.failed}[/red]")
159
+ if self.skipped > 0:
160
+ status_parts.append(f"[yellow]⏭ {self.skipped}[/yellow]")
161
+ if self.errors > 0:
162
+ status_parts.append(f"[red]💥 {self.errors}[/red]")
163
+
164
+ return status_parts
165
+
166
+ def _format_execution_progress(self) -> str:
167
+ parts = []
168
+
169
+ # Simple spinner-based display for parallel test execution
170
+ if self.total_tests > 0:
171
+ # Main message with test count (using simple spinner character)
172
+ parts.append(f"⠋ [cyan]Running {self.total_tests} tests[/cyan]")
173
+
174
+ # Add status counters with emojis if any tests have completed
175
+ status_parts = self._format_progress_counters()
176
+ if status_parts:
177
+ parts.append(" | ".join(status_parts))
178
+
179
+ # Add elapsed time
180
+ elapsed = self.elapsed_time
181
+ if elapsed > 1:
182
+ parts.append(f"[dim]{elapsed:.0f}s[/dim]")
183
+ else:
184
+ # Before collection completes
185
+ parts.append("⠋ [cyan]Preparing tests...[/cyan]")
186
+
187
+ return " | ".join(parts) if len(parts) > 1 else (parts[0] if parts else "")
@@ -0,0 +1,374 @@
1
+ > Crackerjack Docs: [Main](<../../README.md>) | [CLAUDE.md](../../docs/guides/CLAUDE.md) | [MCP](<./README.md>)
2
+
3
+ # MCP
4
+
5
+ Model Context Protocol (MCP) server implementation for AI agent interoperability and real-time workflow monitoring.
6
+
7
+ ## Overview
8
+
9
+ The MCP package provides a comprehensive FastMCP server that enables Claude and other AI agents to interact directly with Crackerjack's quality enforcement tools. It includes WebSocket support for real-time progress monitoring, intelligent error caching, job tracking, and advanced workflow execution capabilities.
10
+
11
+ ## Core Components
12
+
13
+ ### Server Infrastructure
14
+
15
+ - **server.py / server_core.py**: Main FastMCP server entry point with tool registration
16
+ - **context.py**: MCP context management and session state tracking
17
+ - **state.py**: Global state management for jobs, sessions, and progress
18
+ - **cache.py**: Error pattern caching and intelligent analysis recommendations
19
+ - **rate_limiter.py**: Request rate limiting and abuse prevention
20
+ - **client_runner.py**: MCP client runner for testing and development
21
+
22
+ ### WebSocket & Monitoring
23
+
24
+ - **websocket_server.py**: WebSocket server for real-time progress streaming
25
+ - **progress_monitor.py**: Real-time job progress monitoring and display
26
+ - **enhanced_progress_monitor.py**: Enhanced monitoring with pattern analysis
27
+ - **progress_components.py**: Reusable UI components for progress display
28
+ - **file_monitor.py**: File system monitoring for code changes
29
+ - **dashboard.py**: Comprehensive monitoring dashboard
30
+
31
+ ### Workflow & Execution
32
+
33
+ - **task_manager.py**: Async task management and job coordination
34
+ - **service_watchdog.py**: Service health monitoring and auto-restart
35
+ - **tools/**: MCP tool implementations organized by category
36
+
37
+ ## MCP Tools
38
+
39
+ Tools are organized into specialized modules:
40
+
41
+ ### Core Tools (`tools/core_tools.py`)
42
+
43
+ - **execute_crackerjack**: Start iterative auto-fixing with job tracking
44
+ - **run_crackerjack_stage**: Execute specific quality stages (fast, comprehensive, tests)
45
+ - **get_comprehensive_status**: Full project status including health metrics
46
+ - **session_management**: Session lifecycle (start, checkpoint, resume, end)
47
+
48
+ ### Execution Tools (`tools/execution_tools.py`)
49
+
50
+ - Workflow execution with subagent coordination
51
+ - Stage validation and argument parsing
52
+ - Settings adaptation for different execution modes
53
+
54
+ ### Error Analysis (`tools/error_analyzer.py`)
55
+
56
+ - **analyze_errors**: Categorize and analyze code quality errors
57
+ - **analyze_errors_with_caching**: AI-powered error analysis with cached patterns
58
+ - Pattern detection and recommendation generation
59
+ - Error classification by type (security, performance, complexity, etc.)
60
+
61
+ ### Progress Tools (`tools/progress_tools.py`)
62
+
63
+ - **get_job_progress**: Real-time progress for running jobs
64
+ - **get_stage_status**: Current status of quality stages
65
+ - Job metadata and completion tracking
66
+
67
+ ### Intelligence Tools (`tools/intelligence_tools.py`)
68
+
69
+ - **get_next_action**: Optimal next action based on session state
70
+ - **smart_error_analysis**: Advanced error analysis with context
71
+ - Intelligent recommendations and fix suggestions
72
+
73
+ ### Monitoring Tools (`tools/monitoring_tools.py`)
74
+
75
+ - Health metrics collection and reporting
76
+ - Performance tracking
77
+ - Resource usage monitoring
78
+
79
+ ### Semantic Tools (`tools/semantic_tools.py`)
80
+
81
+ - Code comprehension and semantic analysis
82
+ - Context-aware recommendations
83
+ - Pattern recognition and suggestions
84
+
85
+ ### Proactive Tools (`tools/proactive_tools.py`)
86
+
87
+ - Predictive issue prevention
88
+ - Preemptive optimization suggestions
89
+ - Pattern-based early detection
90
+
91
+ ### Utility Tools (`tools/utility_tools.py`)
92
+
93
+ - Helper functions for tool development
94
+ - Common validation and formatting utilities
95
+
96
+ ## Architecture
97
+
98
+ ### Dual Protocol Support
99
+
100
+ The MCP server supports both standard MCP protocol and WebSocket for different use cases:
101
+
102
+ ```python
103
+ # Standard MCP (stdio-based)
104
+ # Used by: Claude Desktop, MCP clients
105
+ # Protocol: JSON-RPC over stdio
106
+ python -m crackerjack --start-mcp-server
107
+
108
+ # WebSocket-enabled MCP
109
+ # Used by: Real-time progress monitoring, dashboards
110
+ # Protocol: WebSocket on localhost:8675
111
+ # Endpoints: /ws/progress/{job_id}
112
+ ```
113
+
114
+ ### Job Tracking System
115
+
116
+ Jobs are tracked through their complete lifecycle:
117
+
118
+ ```python
119
+ # Job states
120
+ JobState.PENDING → JobState.RUNNING → JobState.COMPLETED
121
+ → JobState.FAILED
122
+ → JobState.CANCELLED
123
+
124
+ # Progress tracking
125
+ {
126
+ "job_id": "uuid",
127
+ "state": "RUNNING",
128
+ "progress": 0.65, # 0.0 to 1.0
129
+ "current_phase": "comprehensive_hooks",
130
+ "issues_fixed": 42,
131
+ "total_issues": 100
132
+ }
133
+ ```
134
+
135
+ ### Error Pattern Caching
136
+
137
+ Intelligent caching system learns from error patterns:
138
+
139
+ ```python
140
+ # Cache structure
141
+ {
142
+ "error_hash": "sha256(error_pattern)",
143
+ "category": "security|performance|complexity|...",
144
+ "recommendations": ["Fix 1", "Fix 2"],
145
+ "confidence": 0.85,
146
+ "occurrences": 12,
147
+ "last_seen": datetime,
148
+ }
149
+ ```
150
+
151
+ ## Usage
152
+
153
+ ### Starting the MCP Server
154
+
155
+ ```bash
156
+ # Standard MCP server (stdio)
157
+ python -m crackerjack --start-mcp-server
158
+
159
+ # With WebSocket monitoring
160
+ python -m crackerjack --start-mcp-server
161
+ # WebSocket available at: ws://localhost:8675
162
+
163
+ # Restart server
164
+ python -m crackerjack --restart-mcp-server
165
+
166
+ # Stop server
167
+ python -m crackerjack --stop-mcp-server
168
+ ```
169
+
170
+ ### MCP Client Configuration
171
+
172
+ Add to your MCP client configuration (e.g., Claude Desktop):
173
+
174
+ ```json
175
+ {
176
+ "mcpServers": {
177
+ "crackerjack": {
178
+ "command": "uvx",
179
+ "args": [
180
+ "crackerjack",
181
+ "--start-mcp-server"
182
+ ],
183
+ "env": {
184
+ "UV_KEYRING_PROVIDER": "subprocess",
185
+ "EDITOR": "code --wait"
186
+ }
187
+ }
188
+ }
189
+ }
190
+ ```
191
+
192
+ ### Using MCP Tools
193
+
194
+ From Claude or other MCP clients:
195
+
196
+ ```python
197
+ # Execute quality workflow
198
+ execute_crackerjack(command="test", ai_agent_mode=True, timeout=600)
199
+
200
+ # Get job progress
201
+ progress = get_job_progress(job_id="abc123")
202
+
203
+ # Analyze errors with AI
204
+ analysis = analyze_errors_with_caching(
205
+ errors=["Type error on line 42"], context={"file": "main.py"}
206
+ )
207
+
208
+ # Get smart recommendations
209
+ action = get_next_action(session_id="xyz789")
210
+ ```
211
+
212
+ ### WebSocket Progress Monitoring
213
+
214
+ ```bash
215
+ # Monitor job progress in real-time
216
+ python -m crackerjack.mcp.progress_monitor <job_id> ws://localhost:8675
217
+
218
+ # Or programmatically
219
+ import asyncio
220
+ from crackerjack.mcp.progress_monitor import ProgressMonitor
221
+
222
+ async def monitor():
223
+ monitor = ProgressMonitor(job_id="abc123")
224
+ await monitor.connect("ws://localhost:8675")
225
+ await monitor.stream_progress()
226
+ ```
227
+
228
+ ### Dashboard
229
+
230
+ ```bash
231
+ # Start comprehensive monitoring dashboard
232
+ python -m crackerjack --dashboard
233
+
234
+ # Enhanced monitoring with patterns
235
+ python -m crackerjack --enhanced-monitor
236
+ ```
237
+
238
+ ## Slash Commands
239
+
240
+ MCP integrates with crackerjack slash commands:
241
+
242
+ - `/crackerjack:run` — Autonomous code quality enforcement with AI agent
243
+ - `/crackerjack:init` — Initialize or update project configuration
244
+ - `/crackerjack:status` — Check current workflow status
245
+
246
+ See `crackerjack/slash_commands/` for implementation details.
247
+
248
+ ## Security
249
+
250
+ ### Rate Limiting
251
+
252
+ Built-in rate limiting prevents abuse:
253
+
254
+ ```python
255
+ # Default limits
256
+ max_requests_per_minute = 60
257
+ max_concurrent_jobs = 5
258
+ max_job_duration = 3600 # 1 hour
259
+ ```
260
+
261
+ ### WebSocket Security
262
+
263
+ - **Localhost-only**: WebSocket server binds to 127.0.0.1
264
+ - **No authentication**: Assumes trusted local environment
265
+ - **Origin validation**: CORS headers restrict access
266
+ - **Resource limits**: Connection timeout and max message size
267
+
268
+ ### Input Validation
269
+
270
+ All MCP tool inputs are validated:
271
+
272
+ - JSON schema validation
273
+ - Type checking
274
+ - Size limits
275
+ - Injection prevention
276
+
277
+ ## Configuration
278
+
279
+ MCP settings in `settings/crackerjack.yaml`:
280
+
281
+ ```yaml
282
+ # MCP Server
283
+ mcp_server_enabled: true
284
+ mcp_websocket_port: 8675
285
+ mcp_max_concurrent_jobs: 5
286
+
287
+ # Progress Monitoring
288
+ progress_update_interval: 1.0 # seconds
289
+ progress_websocket_enabled: true
290
+
291
+ # Error Caching
292
+ error_cache_size: 1000
293
+ error_cache_ttl: 3600 # seconds
294
+ ```
295
+
296
+ ## Performance
297
+
298
+ Typical MCP server performance:
299
+
300
+ - **Tool Execution**: < 100ms for metadata tools
301
+ - **Job Creation**: < 50ms overhead
302
+ - **WebSocket Latency**: < 10ms for progress updates
303
+ - **Error Analysis**: 200-500ms with caching
304
+ - **Concurrent Jobs**: Up to 5 simultaneous workflows
305
+
306
+ ## Tools Subdirectories
307
+
308
+ - `tools/` — Main tools directory
309
+ - `README.md` — Tool development guide
310
+ - `websocket/` — WebSocket protocol implementation
311
+ - `README.md` — WebSocket integration docs
312
+
313
+ ## Best Practices
314
+
315
+ 1. **Use Job IDs**: Always track jobs by their UUIDs
316
+ 1. **Monitor Progress**: Use WebSocket for long-running jobs
317
+ 1. **Handle Errors**: Check job status and error messages
318
+ 1. **Cache Patterns**: Let error caching learn common issues
319
+ 1. **Session Management**: Use checkpoints for resumability
320
+ 1. **Rate Limits**: Respect rate limits in automation
321
+
322
+ ## Troubleshooting
323
+
324
+ ### Server Won't Start
325
+
326
+ ```bash
327
+ # Check if port is in use
328
+ netstat -an | grep :8675
329
+
330
+ # View server logs
331
+ python -m crackerjack --start-mcp-server --verbose
332
+
333
+ # Force restart
334
+ python -m crackerjack --restart-mcp-server
335
+ ```
336
+
337
+ ### WebSocket Connection Issues
338
+
339
+ ```bash
340
+ # Test WebSocket connectivity
341
+ curl -s "http://localhost:8675/" || echo "Server not responding"
342
+
343
+ # Check firewall rules
344
+ # Ensure localhost traffic allowed
345
+ ```
346
+
347
+ ### Job Stuck
348
+
349
+ ```bash
350
+ # Check job status
351
+ get_job_progress(job_id="abc123")
352
+
353
+ # View comprehensive status
354
+ get_comprehensive_status()
355
+
356
+ # If necessary, restart watchdog
357
+ python -m crackerjack --watchdog
358
+ ```
359
+
360
+ ## Related
361
+
362
+ - [Agents](<../agents/README.md>) — AI agents that MCP coordinates
363
+ - [Orchestration](<../orchestration/README.md>) — Workflow orchestration layer
364
+ - [Slash Commands](<../slash_commands/README.md>) — MCP slash command implementations
365
+ - [Main README](<../../README.md>) — MCP integration overview
366
+
367
+ ## Future Enhancements
368
+
369
+ - [ ] Multi-user support with authentication
370
+ - [ ] Distributed job execution across machines
371
+ - [ ] Persistent job history database
372
+ - [ ] Advanced analytics dashboard
373
+ - [ ] Plugin system for custom tools
374
+ - [ ] OpenTelemetry integration for observability
File without changes