crackerjack 0.31.10__py3-none-any.whl → 0.31.12__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.

Potentially problematic release.


This version of crackerjack might be problematic. Click here for more details.

Files changed (155) hide show
  1. crackerjack/CLAUDE.md +288 -705
  2. crackerjack/__main__.py +22 -8
  3. crackerjack/agents/__init__.py +0 -3
  4. crackerjack/agents/architect_agent.py +0 -43
  5. crackerjack/agents/base.py +1 -9
  6. crackerjack/agents/coordinator.py +2 -148
  7. crackerjack/agents/documentation_agent.py +109 -81
  8. crackerjack/agents/dry_agent.py +122 -97
  9. crackerjack/agents/formatting_agent.py +3 -16
  10. crackerjack/agents/import_optimization_agent.py +1174 -130
  11. crackerjack/agents/performance_agent.py +956 -188
  12. crackerjack/agents/performance_helpers.py +229 -0
  13. crackerjack/agents/proactive_agent.py +1 -48
  14. crackerjack/agents/refactoring_agent.py +516 -246
  15. crackerjack/agents/refactoring_helpers.py +282 -0
  16. crackerjack/agents/security_agent.py +393 -90
  17. crackerjack/agents/test_creation_agent.py +1776 -120
  18. crackerjack/agents/test_specialist_agent.py +59 -15
  19. crackerjack/agents/tracker.py +0 -102
  20. crackerjack/api.py +145 -37
  21. crackerjack/cli/handlers.py +48 -30
  22. crackerjack/cli/interactive.py +11 -11
  23. crackerjack/cli/options.py +66 -4
  24. crackerjack/code_cleaner.py +808 -148
  25. crackerjack/config/global_lock_config.py +110 -0
  26. crackerjack/config/hooks.py +43 -64
  27. crackerjack/core/async_workflow_orchestrator.py +247 -97
  28. crackerjack/core/autofix_coordinator.py +192 -109
  29. crackerjack/core/enhanced_container.py +46 -63
  30. crackerjack/core/file_lifecycle.py +549 -0
  31. crackerjack/core/performance.py +9 -8
  32. crackerjack/core/performance_monitor.py +395 -0
  33. crackerjack/core/phase_coordinator.py +281 -94
  34. crackerjack/core/proactive_workflow.py +9 -58
  35. crackerjack/core/resource_manager.py +501 -0
  36. crackerjack/core/service_watchdog.py +490 -0
  37. crackerjack/core/session_coordinator.py +4 -8
  38. crackerjack/core/timeout_manager.py +504 -0
  39. crackerjack/core/websocket_lifecycle.py +475 -0
  40. crackerjack/core/workflow_orchestrator.py +343 -209
  41. crackerjack/dynamic_config.py +47 -6
  42. crackerjack/errors.py +3 -4
  43. crackerjack/executors/async_hook_executor.py +63 -13
  44. crackerjack/executors/cached_hook_executor.py +14 -14
  45. crackerjack/executors/hook_executor.py +100 -37
  46. crackerjack/executors/hook_lock_manager.py +856 -0
  47. crackerjack/executors/individual_hook_executor.py +120 -86
  48. crackerjack/intelligence/__init__.py +0 -7
  49. crackerjack/intelligence/adaptive_learning.py +13 -86
  50. crackerjack/intelligence/agent_orchestrator.py +15 -78
  51. crackerjack/intelligence/agent_registry.py +12 -59
  52. crackerjack/intelligence/agent_selector.py +31 -92
  53. crackerjack/intelligence/integration.py +1 -41
  54. crackerjack/interactive.py +9 -9
  55. crackerjack/managers/async_hook_manager.py +25 -8
  56. crackerjack/managers/hook_manager.py +9 -9
  57. crackerjack/managers/publish_manager.py +57 -59
  58. crackerjack/managers/test_command_builder.py +6 -36
  59. crackerjack/managers/test_executor.py +9 -61
  60. crackerjack/managers/test_manager.py +17 -63
  61. crackerjack/managers/test_manager_backup.py +77 -127
  62. crackerjack/managers/test_progress.py +4 -23
  63. crackerjack/mcp/cache.py +5 -12
  64. crackerjack/mcp/client_runner.py +10 -10
  65. crackerjack/mcp/context.py +64 -6
  66. crackerjack/mcp/dashboard.py +14 -11
  67. crackerjack/mcp/enhanced_progress_monitor.py +55 -55
  68. crackerjack/mcp/file_monitor.py +72 -42
  69. crackerjack/mcp/progress_components.py +103 -84
  70. crackerjack/mcp/progress_monitor.py +122 -49
  71. crackerjack/mcp/rate_limiter.py +12 -12
  72. crackerjack/mcp/server_core.py +16 -22
  73. crackerjack/mcp/service_watchdog.py +26 -26
  74. crackerjack/mcp/state.py +15 -0
  75. crackerjack/mcp/tools/core_tools.py +95 -39
  76. crackerjack/mcp/tools/error_analyzer.py +6 -32
  77. crackerjack/mcp/tools/execution_tools.py +1 -56
  78. crackerjack/mcp/tools/execution_tools_backup.py +35 -131
  79. crackerjack/mcp/tools/intelligence_tool_registry.py +0 -36
  80. crackerjack/mcp/tools/intelligence_tools.py +2 -55
  81. crackerjack/mcp/tools/monitoring_tools.py +308 -145
  82. crackerjack/mcp/tools/proactive_tools.py +12 -42
  83. crackerjack/mcp/tools/progress_tools.py +23 -15
  84. crackerjack/mcp/tools/utility_tools.py +3 -40
  85. crackerjack/mcp/tools/workflow_executor.py +40 -60
  86. crackerjack/mcp/websocket/app.py +0 -3
  87. crackerjack/mcp/websocket/endpoints.py +206 -268
  88. crackerjack/mcp/websocket/jobs.py +213 -66
  89. crackerjack/mcp/websocket/server.py +84 -6
  90. crackerjack/mcp/websocket/websocket_handler.py +137 -29
  91. crackerjack/models/config_adapter.py +3 -16
  92. crackerjack/models/protocols.py +162 -3
  93. crackerjack/models/resource_protocols.py +454 -0
  94. crackerjack/models/task.py +3 -3
  95. crackerjack/monitoring/__init__.py +0 -0
  96. crackerjack/monitoring/ai_agent_watchdog.py +25 -71
  97. crackerjack/monitoring/regression_prevention.py +28 -87
  98. crackerjack/orchestration/advanced_orchestrator.py +44 -78
  99. crackerjack/orchestration/coverage_improvement.py +10 -60
  100. crackerjack/orchestration/execution_strategies.py +16 -16
  101. crackerjack/orchestration/test_progress_streamer.py +61 -53
  102. crackerjack/plugins/base.py +1 -1
  103. crackerjack/plugins/managers.py +22 -20
  104. crackerjack/py313.py +65 -21
  105. crackerjack/services/backup_service.py +467 -0
  106. crackerjack/services/bounded_status_operations.py +627 -0
  107. crackerjack/services/cache.py +7 -9
  108. crackerjack/services/config.py +35 -52
  109. crackerjack/services/config_integrity.py +5 -16
  110. crackerjack/services/config_merge.py +542 -0
  111. crackerjack/services/contextual_ai_assistant.py +17 -19
  112. crackerjack/services/coverage_ratchet.py +44 -73
  113. crackerjack/services/debug.py +25 -39
  114. crackerjack/services/dependency_monitor.py +52 -50
  115. crackerjack/services/enhanced_filesystem.py +14 -11
  116. crackerjack/services/file_hasher.py +1 -1
  117. crackerjack/services/filesystem.py +1 -12
  118. crackerjack/services/git.py +71 -47
  119. crackerjack/services/health_metrics.py +31 -27
  120. crackerjack/services/initialization.py +276 -428
  121. crackerjack/services/input_validator.py +760 -0
  122. crackerjack/services/log_manager.py +16 -16
  123. crackerjack/services/logging.py +7 -6
  124. crackerjack/services/metrics.py +43 -43
  125. crackerjack/services/pattern_cache.py +2 -31
  126. crackerjack/services/pattern_detector.py +26 -63
  127. crackerjack/services/performance_benchmarks.py +20 -45
  128. crackerjack/services/regex_patterns.py +2887 -0
  129. crackerjack/services/regex_utils.py +537 -0
  130. crackerjack/services/secure_path_utils.py +683 -0
  131. crackerjack/services/secure_status_formatter.py +534 -0
  132. crackerjack/services/secure_subprocess.py +605 -0
  133. crackerjack/services/security.py +47 -10
  134. crackerjack/services/security_logger.py +492 -0
  135. crackerjack/services/server_manager.py +109 -50
  136. crackerjack/services/smart_scheduling.py +8 -25
  137. crackerjack/services/status_authentication.py +603 -0
  138. crackerjack/services/status_security_manager.py +442 -0
  139. crackerjack/services/thread_safe_status_collector.py +546 -0
  140. crackerjack/services/tool_version_service.py +1 -23
  141. crackerjack/services/unified_config.py +36 -58
  142. crackerjack/services/validation_rate_limiter.py +269 -0
  143. crackerjack/services/version_checker.py +9 -40
  144. crackerjack/services/websocket_resource_limiter.py +572 -0
  145. crackerjack/slash_commands/__init__.py +52 -2
  146. crackerjack/tools/__init__.py +0 -0
  147. crackerjack/tools/validate_input_validator_patterns.py +262 -0
  148. crackerjack/tools/validate_regex_patterns.py +198 -0
  149. {crackerjack-0.31.10.dist-info → crackerjack-0.31.12.dist-info}/METADATA +197 -12
  150. crackerjack-0.31.12.dist-info/RECORD +178 -0
  151. crackerjack/cli/facade.py +0 -104
  152. crackerjack-0.31.10.dist-info/RECORD +0 -149
  153. {crackerjack-0.31.10.dist-info → crackerjack-0.31.12.dist-info}/WHEEL +0 -0
  154. {crackerjack-0.31.10.dist-info → crackerjack-0.31.12.dist-info}/entry_points.txt +0 -0
  155. {crackerjack-0.31.10.dist-info → crackerjack-0.31.12.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crackerjack
3
- Version: 0.31.10
3
+ Version: 0.31.12
4
4
  Summary: Opinionated Python project management tool
5
5
  Project-URL: documentation, https://github.com/lesleslie/crackerjack
6
6
  Project-URL: homepage, https://github.com/lesleslie/crackerjack
@@ -59,21 +59,22 @@ Requires-Dist: watchdog>=6
59
59
  Requires-Dist: websockets>=15.0.1
60
60
  Description-Content-Type: text/markdown
61
61
 
62
- # Crackerjack: Proactive AI-Powered Python Project Management
62
+ # Crackerjack: Advanced AI-Driven Python Development Platform
63
63
 
64
64
  [![Python: 3.13+](https://img.shields.io/badge/python-3.13%2B-green)](https://www.python.org/downloads/)
65
65
  [![pytest](https://img.shields.io/badge/pytest-coverage%20ratchet-blue)](https://pytest.org)
66
66
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
67
67
  [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
68
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
68
69
  [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
69
70
 
70
- ## đŸŽ¯ Mission Statement
71
+ ## đŸŽ¯ Purpose
71
72
 
72
- **Crackerjack** transforms Python development from reactive firefighting to proactive excellence. We believe every line of code should be deliberate, every bug should be prevented rather than fixed, and every developer should write flawless code from the start.
73
+ **Crackerjack** transforms Python development from reactive firefighting to proactive excellence. This sophisticated platform empowers developers to create exceptional code through intelligent automation, comprehensive quality enforcement, and AI-powered assistance. Experience the confidence that comes from knowing your code meets the highest standards before it ever runs in production.
73
74
 
74
75
  ### What is "Crackerjack"?
75
76
 
76
- **crackerjack** (noun): *A person or thing of marked excellence or ability; first-rate; exceptional.*
77
+ **crackerjack** /ˈkrÃĻkərˌdʒÃĻk/ (noun): *A person or thing of marked excellence or ability; first-rate; exceptional; outstanding quality or performance.*
77
78
 
78
79
  Just as the name suggests, Crackerjack makes your Python projects first-rate through:
79
80
 
@@ -123,6 +124,7 @@ Crackerjack is built on the following core principles:
123
124
  - **Consistency:** Code style, formatting, and project structure should be consistent across projects
124
125
  - **Reliability:** Tests are essential, and code should be checked rigorously
125
126
  - **Tool Integration:** Leverage powerful existing tools instead of reinventing the wheel
127
+ - **Auto-Discovery:** Prefer intelligent auto-discovery of configurations and settings over manual configuration whenever possible, reducing setup friction and configuration errors
126
128
  - **Static Typing:** Static typing is essential for all development
127
129
 
128
130
  ## Table of Contents
@@ -206,7 +208,13 @@ Limited tool-specific auto-fixes for simple formatting issues:
206
208
  The AI agent intelligently fixes:
207
209
 
208
210
  - **Type Errors (pyright)**: Adds missing annotations, fixes type mismatches
209
- - **Security Issues (bandit)**: Removes hardcoded paths, fixes vulnerabilities
211
+ - **🔒 Security Issues (bandit)**: Comprehensive security hardening including:
212
+ - **Shell Injection Prevention**: Removes `shell=True` from subprocess calls
213
+ - **Weak Cryptography**: Replaces MD5/SHA1 with SHA256
214
+ - **Insecure Random Functions**: Replaces `random.choice` with `secrets.choice`
215
+ - **Unsafe YAML Loading**: Replaces `yaml.load` with `yaml.safe_load`
216
+ - **Token Exposure**: Masks PyPI tokens, GitHub PATs, and sensitive credentials
217
+ - **Debug Print Removal**: Eliminates debug prints containing sensitive information
210
218
  - **Dead Code (vulture)**: Removes unused imports, variables, functions
211
219
  - **Performance Issues**: Transforms inefficient patterns (list concatenation, string building, nested loops)
212
220
  - **Documentation Issues**: Auto-generates changelogs, maintains consistency across .md files
@@ -235,25 +243,57 @@ python -m crackerjack.mcp.progress_monitor <job_id> ws://localhost:8675
235
243
  - **Comprehensive Coverage**: Fixes ALL error types, not just formatting
236
244
  - **Perfect Results**: Achieves 100% code quality compliance
237
245
 
246
+ #### 🤖 Specialized Agent Architecture
247
+
248
+ **9 Domain-Specific Sub-Agents** for targeted code quality improvements:
249
+
250
+ - **🔒 SecurityAgent**: Fixes shell injections, weak crypto, token exposure, unsafe library usage
251
+ - **â™ģī¸ RefactoringAgent**: Reduces complexity ≤15, extracts helper methods, applies SOLID principles
252
+ - **🚀 PerformanceAgent**: Optimizes algorithms, fixes O(n²) patterns, improves string building
253
+ - **📝 DocumentationAgent**: Auto-generates changelogs, maintains .md file consistency
254
+ - **🧹 DRYAgent**: Eliminates code duplication, extracts common patterns to utilities
255
+ - **✨ FormattingAgent**: Handles code style, import organization, formatting violations
256
+ - **đŸ§Ē TestCreationAgent**: Fixes test failures, missing fixtures, dependency issues
257
+ - **đŸ“Ļ ImportOptimizationAgent**: Removes unused imports, restructures import statements
258
+ - **đŸ”Ŧ TestSpecialistAgent**: Advanced testing scenarios, fixture management
259
+
260
+ **Agent Coordination Features**:
261
+
262
+ - **Confidence Scoring**: Routes issues to best-match agent (â‰Ĩ0.7 confidence)
263
+ - **Batch Processing**: Groups related issues for efficient parallel processing
264
+ - **Collaborative Mode**: Multiple agents handle complex cross-cutting concerns
265
+
238
266
  #### Security & Safety Features
239
267
 
240
268
  - **Command Validation**: All AI modifications are validated for safety
241
- - **No Shell Injection**: Uses secure subprocess execution
269
+ - **Enterprise-Grade Regex**: Centralized pattern system eliminates dangerous regex issues
270
+ - **No Shell Injection**: Uses secure subprocess execution with validated patterns
242
271
  - **Rollback Support**: All changes can be reverted via git
243
272
  - **Human Review**: Review AI-generated changes before commit
244
273
 
245
274
  ## Core Workflow
246
275
 
247
- **Two-stage quality enforcement:**
276
+ **Enhanced three-stage quality enforcement with intelligent code cleaning:**
248
277
 
249
278
  1. **Fast Hooks** (~5 seconds): Essential formatting and security checks
250
- 1. **Comprehensive Hooks** (~30 seconds): Complete static analysis
279
+ 1. **🧹 Code Cleaning Stage** (between fast and comprehensive): AI-powered cleanup for optimal comprehensive hook results
280
+ 1. **Comprehensive Hooks** (~30 seconds): Complete static analysis on cleaned code
281
+
282
+ **Optimal Execution Order**:
283
+
284
+ - **Fast hooks first** → **retry once if any fail** (formatting fixes cascade to other issues)
285
+ - **Code cleaning** → Remove TODO detection, apply standardized patterns
286
+ - **Post-cleaning fast hooks sanity check** → Ensure cleaning didn't introduce issues
287
+ - **Full test suite** → Collect ALL test failures (don't stop on first)
288
+ - **Comprehensive hooks** → Collect ALL quality issues on clean codebase
289
+ - **AI batch fixing** → Process all collected issues intelligently
251
290
 
252
291
  **With AI integration:**
253
292
 
254
- - `--ai-agent` flag enables automatic error resolution
255
- - MCP server allows AI agents to run crackerjack commands
256
- - Structured error output for programmatic fixes
293
+ - `--ai-agent` flag enables automatic error resolution with specialized sub-agents
294
+ - MCP server allows AI agents to run crackerjack commands with real-time progress tracking
295
+ - Structured error output for programmatic fixes with confidence scoring
296
+ - Enterprise-grade regex pattern system ensures safe automated text transformations
257
297
 
258
298
  ## Core Features
259
299
 
@@ -310,6 +350,112 @@ python -m crackerjack -t
310
350
  - **Pull Request Creation:** Creates pull requests to upstream repositories on GitHub or GitLab
311
351
  - **Pre-commit Integration:** Ensures code quality before commits
312
352
 
353
+ ## đŸ›Ąī¸ Enterprise-Grade Pattern Management System
354
+
355
+ ### Advanced Regex Pattern Validation
356
+
357
+ Crackerjack includes a revolutionary **centralized regex pattern management system** that eliminates dangerous regex issues through comprehensive validation and safety controls.
358
+
359
+ #### Key Components
360
+
361
+ **đŸ“Ļ Centralized Pattern Registry** (`crackerjack/services/regex_patterns.py`):
362
+
363
+ - **18+ validated patterns** for security, formatting, version management
364
+ - **ValidatedPattern class** with comprehensive testing and safety limits
365
+ - **Thread-safe compiled pattern caching** for performance
366
+ - **Iterative application** for complex multi-word cases (e.g., `pytest - hypothesis - specialist`)
367
+
368
+ **🔧 Pattern Categories**:
369
+
370
+ - **Command & Flag Formatting**: Fix spacing in `python -m command`, `--flags`, hyphenated names
371
+ - **Security Token Masking**: PyPI tokens, GitHub PATs, generic long tokens, assignment patterns
372
+ - **Version Management**: Update `pyproject.toml` versions, coverage requirements
373
+ - **Code Quality**: Subprocess security fixes, unsafe library replacements, formatting normalization
374
+ - **Test Optimization**: Assert statement normalization, job ID validation
375
+
376
+ **⚡ Performance & Safety Features**:
377
+
378
+ ```python
379
+ # Thread-safe pattern cache with size limits
380
+ CompiledPatternCache.get_compiled_pattern(pattern)
381
+
382
+ # Safety limits prevent catastrophic backtracking
383
+ MAX_INPUT_SIZE = 10 * 1024 * 1024 # 10MB max
384
+ MAX_ITERATIONS = 10 # Iterative application limit
385
+
386
+ # Iterative fixes for complex cases
387
+ pattern.apply_iteratively("pytest - hypothesis - specialist")
388
+ # → "pytest-hypothesis-specialist"
389
+
390
+ # Performance monitoring capabilities
391
+ pattern.get_performance_stats(text, iterations=100)
392
+ ```
393
+
394
+ #### Security Pattern Examples
395
+
396
+ **Token Masking Patterns**:
397
+
398
+ ```python
399
+ # PyPI tokens (word boundaries prevent false matches)
400
+ "pypi-AgEIcHlwaS5vcmcCJGE4M2Y3ZjI" → "pypi-****"
401
+
402
+ # GitHub personal access tokens (exactly 40 chars)
403
+ "ghp_1234567890abcdef1234567890abcdef1234" → "ghp_****"
404
+
405
+ # Generic long tokens (32+ chars with word boundaries)
406
+ "secret_key=abcdef1234567890abcdef1234567890abcdef" → "secret_key=****"
407
+ ```
408
+
409
+ **Subprocess Security Fixes**:
410
+
411
+ ```python
412
+ # Automatic shell injection prevention
413
+ subprocess.run(cmd, shell=True) → subprocess.run(cmd.split())
414
+ subprocess.call(cmd, shell=True) → subprocess.call(cmd.split())
415
+ ```
416
+
417
+ **Unsafe Library Replacements**:
418
+
419
+ ```python
420
+ # Weak crypto → Strong crypto
421
+ hashlib.md5(data) → hashlib.sha256(data)
422
+ hashlib.sha1(data) → hashlib.sha256(data)
423
+
424
+ # Insecure random → Cryptographic random
425
+ random.choice(options) → secrets.choice(options)
426
+
427
+ # Unsafe YAML → Safe YAML
428
+ yaml.load(file) → yaml.safe_load(file)
429
+ ```
430
+
431
+ #### Pattern Validation Requirements
432
+
433
+ **Every pattern MUST include**:
434
+
435
+ - ✅ **Comprehensive test cases** (positive, negative, edge cases)
436
+ - ✅ **Replacement syntax validation** (no spaces in `\g<N>`)
437
+ - ✅ **Safety limits** and performance monitoring
438
+ - ✅ **Thread-safe compilation** and caching
439
+ - ✅ **Descriptive documentation** and usage examples
440
+
441
+ **Quality Guarantees**:
442
+
443
+ - **Zero regex-related bugs** since implementation
444
+ - **Performance optimized** with compiled pattern caching
445
+ - **Security hardened** with input size limits and validation
446
+ - **Maintenance friendly** with centralized pattern management
447
+
448
+ ### Pre-commit Regex Validation Hook
449
+
450
+ **Future Enhancement**: Automated validation hook to ensure all regex usage follows safe patterns:
451
+
452
+ ```bash
453
+ # Validates all .py files for regex pattern compliance
454
+ python -m crackerjack.tools.validate_regex_usage
455
+ ```
456
+
457
+ This enterprise-grade pattern management system has **eliminated all regex-related spacing and security issues** that previously plagued the codebase, providing a robust foundation for safe text processing operations.
458
+
313
459
  ## MCP Server Configuration
314
460
 
315
461
  ### What is MCP?
@@ -637,6 +783,45 @@ python -m crackerjack.mcp.progress_monitor <job_id> ws://localhost:8675
637
783
 
638
784
  **Available tools:** `execute_crackerjack`, `get_job_progress`, `run_crackerjack_stage`, `analyze_errors`, `smart_error_analysis`, `get_next_action`, `session_management`
639
785
 
786
+ ## 🤝 Complementary Tools
787
+
788
+ ### Session Management MCP Server
789
+
790
+ For enhanced AI-assisted development with conversation memory and context persistence, consider using the [session-mgmt-mcp](https://github.com/lesleslie/session-mgmt-mcp) server alongside Crackerjack:
791
+
792
+ **Benefits of Combined Usage:**
793
+
794
+ - **🧠 Persistent Learning**: Session-mgmt remembers your error patterns and successful fixes
795
+ - **📝 Context Preservation**: Maintains conversation context across Claude sessions
796
+ - **📊 Quality Tracking**: Monitors your project's quality score evolution over time
797
+ - **🔄 Workflow Optimization**: Learns from your development patterns to suggest improvements
798
+ - **đŸŽ¯ Intelligent Coordination**: The two servers share insights for smarter assistance
799
+
800
+ **Quick Setup:**
801
+
802
+ ```json
803
+ {
804
+ "mcpServers": {
805
+ "crackerjack": {
806
+ "command": "python",
807
+ "args": ["-m", "crackerjack", "--start-mcp-server"]
808
+ },
809
+ "session-mgmt": {
810
+ "command": "python",
811
+ "args": ["-m", "session_mgmt_mcp.server"]
812
+ }
813
+ }
814
+ }
815
+ ```
816
+
817
+ **How They Work Together:**
818
+
819
+ - **Crackerjack** handles code quality enforcement, testing, and release management
820
+ - **Session-mgmt** maintains AI conversation context and learns from your patterns
821
+ - **Combined**: Creates an intelligent development environment that remembers what works and gets smarter over time
822
+
823
+ The integration is automatic - session-mgmt includes a comprehensive `crackerjack_integration.py` module that captures quality metrics, test results, and error patterns for enhanced learning across sessions.
824
+
640
825
  ## 🔧 Troubleshooting
641
826
 
642
827
  ### Common Issues
@@ -0,0 +1,178 @@
1
+ crackerjack/CLAUDE.md,sha256=0N2cAmFLio8qmzXVUm1cwE7tu8WYwytNwxeJD6xb_cw,19534
2
+ crackerjack/RULES.md,sha256=TdhFLM4db7tXORebYvyAohnEWNJnBR-qtA0aVfbvttY,15725
3
+ crackerjack/__init__.py,sha256=k8_Ev_3fWdjFtGNSJdSOvyaSLW54y3j484d3a8k_Ob4,1396
4
+ crackerjack/__main__.py,sha256=9pk6RqxhoEwgsz0WG2Y_BmWEtc8bPRlrzEf_xhw-9Vg,7856
5
+ crackerjack/api.py,sha256=eY6DTqKj_xtUagfeaNzJfj-Gj4RlTvxhcNpTACURmxE,22696
6
+ crackerjack/code_cleaner.py,sha256=3kcLnyb5o0l3qNB6al6xIdtqSWx56P4likUDatFyzTw,46410
7
+ crackerjack/dynamic_config.py,sha256=QR1vv9xE34z4e10kAHlTvG1i71AygHQdMCITJ6eSn38,19107
8
+ crackerjack/errors.py,sha256=yYbZ92kn_y6acEWgQvEPvozAYs2HT65uLwAXrtXxGsE,10049
9
+ crackerjack/interactive.py,sha256=yjTnk0xWvDnZeCaB11TcRGxVLTXWPRnGBsekiMcyRvU,21317
10
+ crackerjack/py313.py,sha256=qaVyH9f-5psJeJH1BVqh29z5QaYlcPGpMOMerJu0NoA,7195
11
+ crackerjack/agents/__init__.py,sha256=OkL6WdzTk1_EnhJpIPsHV2qCrw6tqKegu_zTpZXnJik,908
12
+ crackerjack/agents/architect_agent.py,sha256=Gq9eAy1_pl-1iEYC28xn4rdIPi9AVynZ7Sd5FnBrNn8,8130
13
+ crackerjack/agents/base.py,sha256=CyqM0q1CM6b2pU6bOHcc1DYnvwvqZ_Ix77WEQrBGh8I,4788
14
+ crackerjack/agents/coordinator.py,sha256=k6-Qr48mCJJLefSZHYa3twhi0WPknrV9dESriTOSY4Y,12789
15
+ crackerjack/agents/documentation_agent.py,sha256=PyVfDXJZ72P8uFJdX2l1SsGZclp_osfgHFf6GepfWik,17651
16
+ crackerjack/agents/dry_agent.py,sha256=eC62PmMIescGRxcV8WPhEWRDeS3eGVGSsCz5wMnmqaM,14142
17
+ crackerjack/agents/formatting_agent.py,sha256=PZjusCX1XOWyBvmBkpKA_-86R27DGdEvfG28Zc_M5bw,6820
18
+ crackerjack/agents/import_optimization_agent.py,sha256=JGjGlpjj9Z-9990BIbvZfd4TO34pEgtwQMsD8FbLJqc,49376
19
+ crackerjack/agents/performance_agent.py,sha256=aPrHJR5wOiz4qlr4AWvD6_NKd65qizRS1ffD11zJHvY,52353
20
+ crackerjack/agents/performance_helpers.py,sha256=1pc4qlnjakox0u-WAiCdSYqARtnX7g_3F7DRVdVhf1s,8591
21
+ crackerjack/agents/proactive_agent.py,sha256=dGykjhVmDyYR-2HicZbp8LHsfZCFm3_Db0FhqMVXXxg,2084
22
+ crackerjack/agents/refactoring_agent.py,sha256=sdWB13cV2ZgvGxmtA0aFaK-WZmDqDvAQVx3nQw1ErDw,38801
23
+ crackerjack/agents/refactoring_helpers.py,sha256=qD3uIEUn1oFsYUcUUreAbHi7Hs8ONfi0duOTSYrTUMA,10808
24
+ crackerjack/agents/security_agent.py,sha256=h2St51fGPViT147SEXpJSccWJNagPgqle1Inmr7j2is,31324
25
+ crackerjack/agents/test_creation_agent.py,sha256=0_0XsHYmuGhhzLIWUqcYXB5YqB0g6zZznVKNilGTrfM,87682
26
+ crackerjack/agents/test_specialist_agent.py,sha256=IRWG_HMqSk2Z3ZV9V7oOoANyU_5HENwcF637SLTJ-r0,18698
27
+ crackerjack/agents/tracker.py,sha256=5Hje7Ox-hSPq2yTqkbucwChEvzwlCQxjgVri0KSUUPY,3401
28
+ crackerjack/cli/__init__.py,sha256=6pnXZIglNzax4XA2lWfiqAZQs24Dr7GbXUwIwCF_9_w,583
29
+ crackerjack/cli/handlers.py,sha256=0-h6pI_VeScf5vGUqfHFTyBW8ZPY37RkkdACxugAfa4,9744
30
+ crackerjack/cli/interactive.py,sha256=HxMz9MgQTBirA9tEvwkWtU1_l5U9b3lsYE3puyKZ364,16897
31
+ crackerjack/cli/options.py,sha256=4J5nXURiy8HX-I_rfSq27as3JE5mXBVCXBNGTVvuvOQ,14864
32
+ crackerjack/cli/utils.py,sha256=VHR-PALgA8fsKiPytH0cl8feXrtWKCajjk9TS2piK5w,537
33
+ crackerjack/config/__init__.py,sha256=b0481N2f_JvGufMPcbo5IXu2VjYd111r1BHw0oD3x7o,330
34
+ crackerjack/config/global_lock_config.py,sha256=fq97ojhozCzW84zY0Ne_MTwJEBDmew_AwROec08aVj4,3401
35
+ crackerjack/config/hooks.py,sha256=Z53TsDZGhwAuELgheJnzZFSyVDcx47JScJ4LAUqWQqc,5438
36
+ crackerjack/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ crackerjack/core/async_workflow_orchestrator.py,sha256=d8kpu9q6K2p-n75yjKFaH2y5ocPSXtYBc1ZGyhYcxJE,26814
38
+ crackerjack/core/autofix_coordinator.py,sha256=vL700lNulBl-Ghhgxq85LuBUfq4_mpP90ok5A7BpXbU,9763
39
+ crackerjack/core/container.py,sha256=e9_1YnWHijUJ0yl23lpgf9mennVQy8NkgJBKtZstG-M,2889
40
+ crackerjack/core/enhanced_container.py,sha256=jsCotnGV-ITMe7pg4jABkxeoSnRb2-GyQGasf5UG6DY,17366
41
+ crackerjack/core/file_lifecycle.py,sha256=Jhn8JKKSoEpDOVexWJXmyL1Sfa77cR1p0Qr1cP0Vr-8,18250
42
+ crackerjack/core/performance.py,sha256=j5vnpPsGnwcMi78EhRs0uJWLU2mnwXSAHr2XrWRWOKk,7579
43
+ crackerjack/core/performance_monitor.py,sha256=Olnj1N_tQ0XHEUf-YD9ji9QO3w7vwwjK7BtryTH0ChI,14792
44
+ crackerjack/core/phase_coordinator.py,sha256=5Lkev1_pWGh1ZUsswSbsp5_V-2EA7KQjg9YlqMPaa-A,29196
45
+ crackerjack/core/proactive_workflow.py,sha256=DcmQnOvP4uge5O13t0bfXfBI4K4EjD8fnJPQmlYMO5U,9774
46
+ crackerjack/core/resource_manager.py,sha256=HHfeje_o43Jt5LC1RryLRf63iQ71FEigzzvgjVNFcNY,16231
47
+ crackerjack/core/service_watchdog.py,sha256=m31k5dt9HINwhbQeTDGFVQHQtnSdO8vwLWf8KsulH80,17338
48
+ crackerjack/core/session_coordinator.py,sha256=CtuS1JoBiol0HzZw-JN91S4MqvdDPLT0KghoCkQtmf0,9629
49
+ crackerjack/core/timeout_manager.py,sha256=QonV1rGHpGSfYtRYfwjtfER81K0dcO3DrTGkR-cCgYQ,17603
50
+ crackerjack/core/websocket_lifecycle.py,sha256=60N88lB9FVGernkGg_HQ0uyOzyYHWYkgHprzZYMbh14,15924
51
+ crackerjack/core/workflow_orchestrator.py,sha256=MIsIkrti72lgGausYJyXOtd0nSk7akxzeZUuY4sKcr8,43123
52
+ crackerjack/executors/__init__.py,sha256=HF-DmXvKN45uKKDdiMxOT9bYxuy1B-Z91BihOhkK5lg,322
53
+ crackerjack/executors/async_hook_executor.py,sha256=zyLtAbi2CaSzlEIKJs18hGkVW_TijLqF-RrxQ4aAMzc,17991
54
+ crackerjack/executors/cached_hook_executor.py,sha256=70Zt7WMW5f2WnP4XwE3LwXsrR4ccIqwIhxnjyISKqzA,8186
55
+ crackerjack/executors/hook_executor.py,sha256=fOJ9PaQtHvvj-o_fablbtkLlu7SwHDB3_7xKVa8gR1s,16152
56
+ crackerjack/executors/hook_lock_manager.py,sha256=Mi2i_l8DYKzonaKn0AHrqZwz4Pym32uHLcWKZ0oaM0k,33356
57
+ crackerjack/executors/individual_hook_executor.py,sha256=YN34qBj8YO8AbjIVN90_et2OwqvoeAiyXi5bg6DA0I4,24042
58
+ crackerjack/intelligence/__init__.py,sha256=3Sty6xFyxBEXTyy8W34dpAQk7S7m8SnxUz4wrb3xrZc,878
59
+ crackerjack/intelligence/adaptive_learning.py,sha256=Fj8rKWt-tyf4Q0cn5wOT_XNh3w1mBN3kRYZ-vnxL2pg,25058
60
+ crackerjack/intelligence/agent_orchestrator.py,sha256=cRMifCgpVa5dToKM7xQFFBILjTC3lcI-QSvVwp2Bzv0,16831
61
+ crackerjack/intelligence/agent_registry.py,sha256=jSyuyCDFSTLLZs7Tfo4V59-ap_R3Eto-zyE45btUx1Q,12794
62
+ crackerjack/intelligence/agent_selector.py,sha256=1UYLtToayG5-LWoixV-Y5hqu1LSGHFunO5xu_hSKk4g,15079
63
+ crackerjack/intelligence/integration.py,sha256=vVaC2Fp5RbbABpaohCePzGw1XANuRztGl4qKm_9a1SY,8295
64
+ crackerjack/managers/__init__.py,sha256=PFWccXx4hDQA76T02idAViOLVD-aPeVpgjdfSkh_Dmk,298
65
+ crackerjack/managers/async_hook_manager.py,sha256=K7J7ahTFdVxUTyH70wNi8iilxshNO3gQLOiG5aH_B10,5194
66
+ crackerjack/managers/hook_manager.py,sha256=4iuxlecpTk22aWWSCYOhO2pFXMW-4f25ABa4sUOWGcw,4749
67
+ crackerjack/managers/publish_manager.py,sha256=eLirhzFHMpsJO-NiElHQ65H_9spcy5Kd1EaYRhk7wHA,15677
68
+ crackerjack/managers/test_command_builder.py,sha256=Hmo-Jhl-FLWyXXlyWEep57VilSzj7D-PR0njCNT6e0g,3622
69
+ crackerjack/managers/test_executor.py,sha256=poIXQtlHz-c3i-gacvSWwr1JEOC4aYxZhcPq5xLgzp8,13943
70
+ crackerjack/managers/test_manager.py,sha256=_ZTcrZkbiYjiWL6uyN7YVmICmxQopLJ2N0tVZu8dvR0,9100
71
+ crackerjack/managers/test_manager_backup.py,sha256=iw0MSW8pEBhzwZOlh0sLzi8nw83lV2Zi3LhotUHIXi4,37930
72
+ crackerjack/managers/test_progress.py,sha256=B1013ygUk2nAo37whDXNA7n-FYdsEO4qj17fuDm_fdg,3058
73
+ crackerjack/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ crackerjack/mcp/cache.py,sha256=SqHsXw6FRTVddt8ojf9Fv1_vu2dvzDeu3yjTAvXmEVo,11951
75
+ crackerjack/mcp/client_runner.py,sha256=fNIA-8VVnccaZoZ1s0_XaO2Y5yBAvsPkLpLtXI_n1Yc,2986
76
+ crackerjack/mcp/context.py,sha256=b_ztFTXS6jQoaa9rw8eK4Bi8gCv19yBLIsysQSMDTS0,23614
77
+ crackerjack/mcp/dashboard.py,sha256=ntlXgrtMOBkxb4rnlBlWqZwUmQ2fa_j5WzGRlbFEkzo,19470
78
+ crackerjack/mcp/enhanced_progress_monitor.py,sha256=O0sdNh52J_q_DYEmbThKflF4hzYaR9hiG_1mJmcg33E,16187
79
+ crackerjack/mcp/file_monitor.py,sha256=fHDSA9ExZBaz11eLc21aiJx5logWHtSQ5sQHV21VXeI,12732
80
+ crackerjack/mcp/progress_components.py,sha256=Ox5bsIbtvYox116BQKZGLUDDXMQJP7cnUOA63rHtszo,20175
81
+ crackerjack/mcp/progress_monitor.py,sha256=YWVuQ_HUBNQEkA0Lvh6SQx_5pcaTfRG25gTQZuwtZuw,37493
82
+ crackerjack/mcp/rate_limiter.py,sha256=ob6RBEczZuqazYZj8hIb19mfgpoIJcsmC-SrkWvOTX4,12238
83
+ crackerjack/mcp/server.py,sha256=-AdHHoFNAtoPM1A3_M2giZbIbggUhhvv16uIXk2xqNo,403
84
+ crackerjack/mcp/server_core.py,sha256=JE15yoc14bfVjPEBFvZmGE0lG_cUbOZYeisJgE0Yc_8,6598
85
+ crackerjack/mcp/service_watchdog.py,sha256=Jh5gMtWIFkkhIHOVrhLHgh98OmphRbFftmPNSfSjqA4,16779
86
+ crackerjack/mcp/state.py,sha256=Y2V04sAhsBXVEtmk8THYt_7Ftinz-kthe5XD3K7Mn4M,14632
87
+ crackerjack/mcp/task_manager.py,sha256=3YjAN8pcgiKEqTFzseeDKoXRtupBCnAeE148L8Z1TvE,8560
88
+ crackerjack/mcp/websocket_server.py,sha256=Dsw_orJOSeO7t7zRiVErh8GLp5jAaGab6shOeQTynbw,203
89
+ crackerjack/mcp/tools/__init__.py,sha256=T_RMPXHQQWJLvSJjrPkJYtWi5tmyoRrzm0WS2G--iwU,613
90
+ crackerjack/mcp/tools/core_tools.py,sha256=fLnIdhRAAGnhmr1Fn5MGHDyjziBfm1STHUvpewsWxk4,10671
91
+ crackerjack/mcp/tools/error_analyzer.py,sha256=4F4RIq2Xsqb6vBC1JZn_c0v2NEOShPSbsqAcRmfdUkk,8446
92
+ crackerjack/mcp/tools/execution_tools.py,sha256=Jpubz_GtbwdrE8nhWbCDxZ6IuZJOuHhK766jd9Qjj_g,9817
93
+ crackerjack/mcp/tools/execution_tools_backup.py,sha256=nszD7BwhiG9rGtCk83_wImImQK1RHAqVTJWIQjPXl-o,32655
94
+ crackerjack/mcp/tools/intelligence_tool_registry.py,sha256=H6IaawUJlQHqjPq6OTxDHlTcfzX2kQDho5kteQn66Bw,1199
95
+ crackerjack/mcp/tools/intelligence_tools.py,sha256=ELlRfidY5SAsUZOZUkccBlTGdq7XZZZhHhZEm7nNnrg,9012
96
+ crackerjack/mcp/tools/monitoring_tools.py,sha256=Qc_YMKmbS_Lg6LJtcBRjWdQ3aGgKKrbJzS7YJ65__Kg,23248
97
+ crackerjack/mcp/tools/proactive_tools.py,sha256=QIQ4hqOp5KFrIPiBXbxRylXwzjHvxawKvJQSiVw2GXA,12688
98
+ crackerjack/mcp/tools/progress_tools.py,sha256=gu9ELmHevlN-sfUfZF8tGq8zgB2isKp9lVzXJyBllBU,7038
99
+ crackerjack/mcp/tools/utility_tools.py,sha256=PRHM2j2Rj5BLUW9z_yn1vRc7HGDaCxB05YmKHKJmB0Q,10171
100
+ crackerjack/mcp/tools/workflow_executor.py,sha256=XXPpC8GV1TFTzrz7PcBcqdXsNKpSEmx-Odt-D9RbllA,16578
101
+ crackerjack/mcp/websocket/__init__.py,sha256=lZzyfvYjywHfqyy5X3wWR_jgBkRUxYSpgjdKALBzZcI,345
102
+ crackerjack/mcp/websocket/app.py,sha256=Bfwj7afwtD2nEV1A133vu_CuA-dBQbwNJMxQLNopg6w,1055
103
+ crackerjack/mcp/websocket/endpoints.py,sha256=keIOhfjOmBhH_aKS4Pn-AeFmXQW3EtHGX5PQgXUijrw,17544
104
+ crackerjack/mcp/websocket/jobs.py,sha256=A7xqpDs7bh84iNPd3SYQaJJ68pDWPSCplwTbAQ6E_y8,15575
105
+ crackerjack/mcp/websocket/server.py,sha256=Z8vho1kaj_DMK10p9MYUBUDu5gmitk0sp-BLDUPwqfQ,6719
106
+ crackerjack/mcp/websocket/websocket_handler.py,sha256=GCchZetPBYcifGfcFwChKC0ykyUzUZGoDhJQVgww5IM,7376
107
+ crackerjack/models/__init__.py,sha256=LtKdnwSPDLxKDfGbRa0BuWu50qL7r6EngGNsQRFT6ZY,598
108
+ crackerjack/models/config.py,sha256=M7aIIdEP-aEthtFdS28JmztnEMVOZL8zuy5BiOVnNfg,2194
109
+ crackerjack/models/config_adapter.py,sha256=2m3OyLZ4P2l1zChkf8xKITCaW--4Rxfiha9XgzB1K_s,6737
110
+ crackerjack/models/protocols.py,sha256=kKUX13QoZiGUupkS-9lUukvT8Arqb3socB3GZbXEnDY,7176
111
+ crackerjack/models/resource_protocols.py,sha256=zIztjH2nLSpDvzTv3euT0F68_rALgmKsW4ecy6zFm7E,11887
112
+ crackerjack/models/task.py,sha256=45hWQFq8gqL0y-tdkaVQ9tzIM9m-CBogfzbMDTiDlUE,4425
113
+ crackerjack/monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ crackerjack/monitoring/ai_agent_watchdog.py,sha256=GnjNqS2-7DhcKYYi0h5QX7U67pJ2e7T73u2ZmV79H9M,15049
115
+ crackerjack/monitoring/regression_prevention.py,sha256=VKPp2G6NZu2ipn0EV0YOSUJAwajbnwKtVLDEkNOMxQU,20938
116
+ crackerjack/orchestration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ crackerjack/orchestration/advanced_orchestrator.py,sha256=OrjVyPeb77eKWMXZanWzzkRL7mtXSDM5OXx33Fcn-pM,33761
118
+ crackerjack/orchestration/coverage_improvement.py,sha256=sQy_GoDmFTrX3-B4KHBBOjYGMl51ny_7VHYNBnF9BaQ,6748
119
+ crackerjack/orchestration/execution_strategies.py,sha256=SD4U15Rk9rp9NXbvo3QHDTkOyQ7q0s71BADtPy23xVE,11810
120
+ crackerjack/orchestration/test_progress_streamer.py,sha256=hjOrjTBTYJ1r5RzBK8U1xLy5CYjOmsk8kXL_uNc0Ofo,22253
121
+ crackerjack/plugins/__init__.py,sha256=B7hy9b9amJVbYLHgIz8kgTI29j-vYxsUY_sZ5ISbXU0,386
122
+ crackerjack/plugins/base.py,sha256=YAD-ILMKhKgrE_28U_IBk7UwK75bkdRE0kdBlymHnKU,5713
123
+ crackerjack/plugins/hooks.py,sha256=JkMJNsvkyZMQheyvpZOuLgHg1_rjinqRtMWg7SE4V_c,7317
124
+ crackerjack/plugins/loader.py,sha256=9RmA5Lkizz5BADn-aJDGekISyL7C_O2Grr1tB6undHY,10814
125
+ crackerjack/plugins/managers.py,sha256=__60HQnagyg29j9k4A1wozAr9VI44d8BSWm5EsUnWlo,8643
126
+ crackerjack/services/__init__.py,sha256=thXyf5Yh6WRsnGjG3onf5Obe1xbd_p72Fm2tIl1IA3s,617
127
+ crackerjack/services/backup_service.py,sha256=x9a5522uKXjI6m1vbRY6wSKYRFFAIiK5MObhFUNmXWc,15520
128
+ crackerjack/services/bounded_status_operations.py,sha256=g4Kf7J6JeqhSOo7yrqBaj9OxvUDYtwsO-aF7mphjtjA,23179
129
+ crackerjack/services/cache.py,sha256=RJVCPmJlwwTdkPGIVIdOxdZkXTRzeed3lD7yUGmPBOg,9756
130
+ crackerjack/services/config.py,sha256=Wa7ijGSrke2Sc_72lEWHah7SdNDOkHufYzp1G-pznH0,12940
131
+ crackerjack/services/config_integrity.py,sha256=Ac6-c7WuupsyrP2dxx_ijgjzpNnx9G0NWsXB-SZjelg,2904
132
+ crackerjack/services/config_merge.py,sha256=mzStXjOd43yTc2AtyteNZ5NxIEm5s1Qz_wrdtp6P4UU,19503
133
+ crackerjack/services/contextual_ai_assistant.py,sha256=OlhRdaV0VAchHaOzP4TJU-kLoIvuepV6K2YnvS1uQCs,19148
134
+ crackerjack/services/coverage_ratchet.py,sha256=xNuN88DFFCSI20kdc21JgTfCPrncnMky-bkq3gl-Fcc,12585
135
+ crackerjack/services/debug.py,sha256=36o5V0YpgU7_XP4eEbYkjhEAxLLK6OUtNIMN872_rM0,23202
136
+ crackerjack/services/dependency_monitor.py,sha256=mDCvNfgJmOqQSRYjwYrMJ6JDawZu0ZOjyizE6zlRhPs,20528
137
+ crackerjack/services/enhanced_filesystem.py,sha256=8WoZTIxJMS3bUi4OZlNG2_2QCyZW3nMy73LgiMD62D8,15378
138
+ crackerjack/services/file_hasher.py,sha256=ZxtsUjz3jprKrbRhYFLVijn4CYyO2S3XzGgvTfhjHDw,5204
139
+ crackerjack/services/filesystem.py,sha256=nmL3mYqylS_BSQpwFbC7EMHoA44K5qUxa9CPg1QFZvc,17480
140
+ crackerjack/services/git.py,sha256=ynZJlZJUv3y_OxqiPOIeA1kE4Y_too5ggiSiGrneQE4,9389
141
+ crackerjack/services/health_metrics.py,sha256=RFkoasSHMM6fXSl5d1g6eGL0yg69X5nad0fx8WEVTOU,21464
142
+ crackerjack/services/initialization.py,sha256=aciPat_-zTqjNpwmm8wsaO7gDKUFBjHA7BbFYEWQeeE,26364
143
+ crackerjack/services/input_validator.py,sha256=UQRbqhVpPhymP4zqBUl2oIf1LA7kzSXPdk1hmKFI47I,26008
144
+ crackerjack/services/log_manager.py,sha256=XVlzfj1WiBdDSMM-GTe5zwDuW_iz8xiEClKjqmw9MqQ,8400
145
+ crackerjack/services/logging.py,sha256=tRe4iQjMGZ1_B-LPDzck99iOwPaTlllm6r8ncE8ok8I,5322
146
+ crackerjack/services/metrics.py,sha256=q9qyoe0Hj8gl3BSk7wCNz9x0tiC6NGbb7kjn8aFKSrw,22888
147
+ crackerjack/services/pattern_cache.py,sha256=VcHbfqe1xqguyLBl8bsWLte3RpnXA0--cKNMBrFRNsw,11081
148
+ crackerjack/services/pattern_detector.py,sha256=LNbOlsnCiJ5Ning9yXDvFNZbjPPd2Sc9u_2cpSnmnMw,17987
149
+ crackerjack/services/performance_benchmarks.py,sha256=JEvK7XXBrNea77XN_76Ip4wyzXBFlPFqqg9XELozii4,22222
150
+ crackerjack/services/regex_patterns.py,sha256=_rhzjtUqnDREOq67jQXnsTR4FhX9euocqS4zwR_PIOY,116350
151
+ crackerjack/services/regex_utils.py,sha256=xFAIomsJzNtH2Af2MhWa0iALC-vlfCffOpM061Ofino,18446
152
+ crackerjack/services/secure_path_utils.py,sha256=jffIZEh3x65yNBVCB_gu24ak3ymcmJkRfx8y8XHkO_8,22375
153
+ crackerjack/services/secure_status_formatter.py,sha256=QDnT37AI-j_44hklUJNvNusGmvtmzxoSrno7xYjGo2o,19071
154
+ crackerjack/services/secure_subprocess.py,sha256=f8UrGNom6XBjThs2UVBts7B5wCR2llKU2mq-S712aKY,20734
155
+ crackerjack/services/security.py,sha256=Wm57dP1psnQQjBdlVgWqvEszZNDdc7knOvrlJ5Pz4gU,6847
156
+ crackerjack/services/security_logger.py,sha256=pse6gACpr8_r0qoV_xFG9mhGmxpAo3NQ2h65WgLB3Vs,17438
157
+ crackerjack/services/server_manager.py,sha256=jjytOlo9J8fsovoTeXLPzkWsrxuYbeZaGTcyp0HiTCc,8729
158
+ crackerjack/services/smart_scheduling.py,sha256=VSaL7DpKR6aa0sC_TUrYP9ZgC9CB7tE3TTNzEqB-GpE,4352
159
+ crackerjack/services/status_authentication.py,sha256=bPk3_-ExGMKOmYzoLz6XEcI7ZLVerQ3xmBG-fjXmb9w,21194
160
+ crackerjack/services/status_security_manager.py,sha256=ihUAOMsa1eZG9vahOeuaKEz6oCCJcQvFUcgNW1PXOU0,14854
161
+ crackerjack/services/thread_safe_status_collector.py,sha256=Fp6Mhxj008CDlk0UHetl7AIdvlTUNstxBzS_rBn-R_E,20004
162
+ crackerjack/services/tool_version_service.py,sha256=2FKDAPjnzXALNS_jJCPTy-shLsSPiRRTtHvIFuND3U8,1233
163
+ crackerjack/services/unified_config.py,sha256=7F7M8alv2nPfFJYbEdcI3orPsZIKqYC6gPLhEWFDKtQ,13392
164
+ crackerjack/services/validation_rate_limiter.py,sha256=xe9Xl-Y1Hp43OIS_LiDjGq5tchf1jTo1J7PWwLafiSI,9872
165
+ crackerjack/services/version_checker.py,sha256=uyo_MWIQY1NgabkyJQymFnWVNJV5hn--uzmA1hgF_aQ,7548
166
+ crackerjack/services/websocket_resource_limiter.py,sha256=cIz5YZa0P9qBZtoZ90pzuAiLJ1c6Y9HLP_UQwWr3E2k,21595
167
+ crackerjack/slash_commands/__init__.py,sha256=mMRd3W_NgT5L0jbt7nyDB7FmOr3Mud4tgF6QMiqUyo0,2098
168
+ crackerjack/slash_commands/init.md,sha256=mANRdCiFAzaTw29lKNrI1JFthK4pxVdtiFC5lN2SDSQ,4581
169
+ crackerjack/slash_commands/run.md,sha256=bf_mEtnXagUuw3w8os5h3t1Yi3vjpfiNbkMJvuFEu-Y,6500
170
+ crackerjack/slash_commands/status.md,sha256=U3qqppVLtIIm2lEiMYaKagaHYLI9UplL7OH1j6SRJGw,3921
171
+ crackerjack/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
+ crackerjack/tools/validate_input_validator_patterns.py,sha256=cvplbjkXKvXdtnFZfhKihM3XBkBuXAbcghocaN5PYbg,9195
173
+ crackerjack/tools/validate_regex_patterns.py,sha256=VBoJ7rg3ZvESGq6B6E8_d_7-mXN9r-qruh-0q_OqbP8,6285
174
+ crackerjack-0.31.12.dist-info/METADATA,sha256=g69CQ9NjuQasDImTYAW7WrCrJm4EFLsaLo0ALpB2Z2M,30893
175
+ crackerjack-0.31.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
176
+ crackerjack-0.31.12.dist-info/entry_points.txt,sha256=AJKNft0WXm9xoGUJ3Trl-iXHOWxRAYbagQiza3AILr4,57
177
+ crackerjack-0.31.12.dist-info/licenses/LICENSE,sha256=fDt371P6_6sCu7RyqiZH_AhT1LdN3sN1zjBtqEhDYCk,1531
178
+ crackerjack-0.31.12.dist-info/RECORD,,
crackerjack/cli/facade.py DELETED
@@ -1,104 +0,0 @@
1
- """CLI Facade for backward compatibility.
2
-
3
- This module provides a bridge between the existing CLI interface and the new
4
- workflow orchestrator, ensuring all existing functionality continues to work.
5
- """
6
-
7
- import asyncio
8
- from pathlib import Path
9
-
10
- from rich.console import Console
11
-
12
- from crackerjack.core.workflow_orchestrator import WorkflowOrchestrator
13
- from crackerjack.models.protocols import OptionsProtocol
14
-
15
-
16
- class CrackerjackCLIFacade:
17
- def __init__(
18
- self,
19
- console: Console | None = None,
20
- pkg_path: Path | None = None,
21
- ) -> None:
22
- self.console = console or Console(force_terminal=True)
23
- self.pkg_path = pkg_path or Path.cwd()
24
- self.orchestrator = WorkflowOrchestrator(
25
- console=self.console,
26
- pkg_path=self.pkg_path,
27
- )
28
-
29
- def process(self, options: OptionsProtocol) -> None:
30
- try:
31
- if self._should_handle_special_mode(options):
32
- self._handle_special_modes(options)
33
- return
34
- success = asyncio.run(self.orchestrator.run_complete_workflow(options))
35
- if not success:
36
- self.console.print("[red]❌ Workflow completed with errors[/red]")
37
- else:
38
- self.console.print("[green]🎉 Workflow completed successfully![/green]")
39
- except KeyboardInterrupt:
40
- self.console.print("\n[yellow]âšī¸ Operation cancelled by user[/yellow]")
41
- raise SystemExit(130)
42
- except Exception as e:
43
- self.console.print(f"[red]đŸ’Ĩ Unexpected error: {e}[/red]")
44
- if options.verbose:
45
- import traceback
46
-
47
- self.console.print(f"[dim]{traceback.format_exc()}[/dim]")
48
- raise SystemExit(1)
49
-
50
- async def process_async(self, options: OptionsProtocol) -> None:
51
- await asyncio.to_thread(self.process, options)
52
-
53
- def _should_handle_special_mode(self, options: OptionsProtocol) -> bool:
54
- return (
55
- getattr(options, "start_mcp_server", False)
56
- or getattr(options, "enterprise_batch", False)
57
- or getattr(options, "monitor_dashboard", False)
58
- )
59
-
60
- def _handle_special_modes(self, options: OptionsProtocol) -> None:
61
- if getattr(options, "start_mcp_server", False):
62
- self._start_mcp_server()
63
- elif getattr(options, "enterprise_batch", False):
64
- self._handle_enterprise_batch(options)
65
- elif getattr(options, "monitor_dashboard", False):
66
- self._handle_monitor_dashboard(options)
67
-
68
- def _start_mcp_server(self) -> None:
69
- try:
70
- from crackerjack.mcp.server import main as start_mcp_main
71
-
72
- self.console.print(
73
- "[bold cyan]🤖 Starting Crackerjack MCP Server...[/bold cyan]",
74
- )
75
- start_mcp_main(str(self.pkg_path))
76
- except ImportError:
77
- self.console.print(
78
- "[red]❌ MCP server requires additional dependencies[/red]",
79
- )
80
- self.console.print("[yellow]Install with: uv sync --group mcp[/yellow]")
81
- raise SystemExit(1)
82
- except Exception as e:
83
- self.console.print(f"[red]❌ Failed to start MCP server: {e}[/red]")
84
- raise SystemExit(1)
85
-
86
- def _handle_enterprise_batch(self, options: OptionsProtocol) -> None:
87
- self.console.print(
88
- "[red]❌ Enterprise batch processing is not yet implemented[/red]"
89
- )
90
- raise SystemExit(1)
91
-
92
- def _handle_monitor_dashboard(self, options: OptionsProtocol) -> None:
93
- self.console.print("[red]❌ Monitoring dashboard is not yet implemented[/red]")
94
- raise SystemExit(1)
95
-
96
-
97
- def create_crackerjack_runner(
98
- console: Console | None = None,
99
- pkg_path: Path | None = None,
100
- ) -> CrackerjackCLIFacade:
101
- return CrackerjackCLIFacade(console=console, pkg_path=pkg_path)
102
-
103
-
104
- CrackerjackRunner = CrackerjackCLIFacade