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.
- crackerjack/CLAUDE.md +288 -705
- crackerjack/__main__.py +22 -8
- crackerjack/agents/__init__.py +0 -3
- crackerjack/agents/architect_agent.py +0 -43
- crackerjack/agents/base.py +1 -9
- crackerjack/agents/coordinator.py +2 -148
- crackerjack/agents/documentation_agent.py +109 -81
- crackerjack/agents/dry_agent.py +122 -97
- crackerjack/agents/formatting_agent.py +3 -16
- crackerjack/agents/import_optimization_agent.py +1174 -130
- crackerjack/agents/performance_agent.py +956 -188
- crackerjack/agents/performance_helpers.py +229 -0
- crackerjack/agents/proactive_agent.py +1 -48
- crackerjack/agents/refactoring_agent.py +516 -246
- crackerjack/agents/refactoring_helpers.py +282 -0
- crackerjack/agents/security_agent.py +393 -90
- crackerjack/agents/test_creation_agent.py +1776 -120
- crackerjack/agents/test_specialist_agent.py +59 -15
- crackerjack/agents/tracker.py +0 -102
- crackerjack/api.py +145 -37
- crackerjack/cli/handlers.py +48 -30
- crackerjack/cli/interactive.py +11 -11
- crackerjack/cli/options.py +66 -4
- crackerjack/code_cleaner.py +808 -148
- crackerjack/config/global_lock_config.py +110 -0
- crackerjack/config/hooks.py +43 -64
- crackerjack/core/async_workflow_orchestrator.py +247 -97
- crackerjack/core/autofix_coordinator.py +192 -109
- crackerjack/core/enhanced_container.py +46 -63
- crackerjack/core/file_lifecycle.py +549 -0
- crackerjack/core/performance.py +9 -8
- crackerjack/core/performance_monitor.py +395 -0
- crackerjack/core/phase_coordinator.py +281 -94
- crackerjack/core/proactive_workflow.py +9 -58
- crackerjack/core/resource_manager.py +501 -0
- crackerjack/core/service_watchdog.py +490 -0
- crackerjack/core/session_coordinator.py +4 -8
- crackerjack/core/timeout_manager.py +504 -0
- crackerjack/core/websocket_lifecycle.py +475 -0
- crackerjack/core/workflow_orchestrator.py +343 -209
- crackerjack/dynamic_config.py +47 -6
- crackerjack/errors.py +3 -4
- crackerjack/executors/async_hook_executor.py +63 -13
- crackerjack/executors/cached_hook_executor.py +14 -14
- crackerjack/executors/hook_executor.py +100 -37
- crackerjack/executors/hook_lock_manager.py +856 -0
- crackerjack/executors/individual_hook_executor.py +120 -86
- crackerjack/intelligence/__init__.py +0 -7
- crackerjack/intelligence/adaptive_learning.py +13 -86
- crackerjack/intelligence/agent_orchestrator.py +15 -78
- crackerjack/intelligence/agent_registry.py +12 -59
- crackerjack/intelligence/agent_selector.py +31 -92
- crackerjack/intelligence/integration.py +1 -41
- crackerjack/interactive.py +9 -9
- crackerjack/managers/async_hook_manager.py +25 -8
- crackerjack/managers/hook_manager.py +9 -9
- crackerjack/managers/publish_manager.py +57 -59
- crackerjack/managers/test_command_builder.py +6 -36
- crackerjack/managers/test_executor.py +9 -61
- crackerjack/managers/test_manager.py +17 -63
- crackerjack/managers/test_manager_backup.py +77 -127
- crackerjack/managers/test_progress.py +4 -23
- crackerjack/mcp/cache.py +5 -12
- crackerjack/mcp/client_runner.py +10 -10
- crackerjack/mcp/context.py +64 -6
- crackerjack/mcp/dashboard.py +14 -11
- crackerjack/mcp/enhanced_progress_monitor.py +55 -55
- crackerjack/mcp/file_monitor.py +72 -42
- crackerjack/mcp/progress_components.py +103 -84
- crackerjack/mcp/progress_monitor.py +122 -49
- crackerjack/mcp/rate_limiter.py +12 -12
- crackerjack/mcp/server_core.py +16 -22
- crackerjack/mcp/service_watchdog.py +26 -26
- crackerjack/mcp/state.py +15 -0
- crackerjack/mcp/tools/core_tools.py +95 -39
- crackerjack/mcp/tools/error_analyzer.py +6 -32
- crackerjack/mcp/tools/execution_tools.py +1 -56
- crackerjack/mcp/tools/execution_tools_backup.py +35 -131
- crackerjack/mcp/tools/intelligence_tool_registry.py +0 -36
- crackerjack/mcp/tools/intelligence_tools.py +2 -55
- crackerjack/mcp/tools/monitoring_tools.py +308 -145
- crackerjack/mcp/tools/proactive_tools.py +12 -42
- crackerjack/mcp/tools/progress_tools.py +23 -15
- crackerjack/mcp/tools/utility_tools.py +3 -40
- crackerjack/mcp/tools/workflow_executor.py +40 -60
- crackerjack/mcp/websocket/app.py +0 -3
- crackerjack/mcp/websocket/endpoints.py +206 -268
- crackerjack/mcp/websocket/jobs.py +213 -66
- crackerjack/mcp/websocket/server.py +84 -6
- crackerjack/mcp/websocket/websocket_handler.py +137 -29
- crackerjack/models/config_adapter.py +3 -16
- crackerjack/models/protocols.py +162 -3
- crackerjack/models/resource_protocols.py +454 -0
- crackerjack/models/task.py +3 -3
- crackerjack/monitoring/__init__.py +0 -0
- crackerjack/monitoring/ai_agent_watchdog.py +25 -71
- crackerjack/monitoring/regression_prevention.py +28 -87
- crackerjack/orchestration/advanced_orchestrator.py +44 -78
- crackerjack/orchestration/coverage_improvement.py +10 -60
- crackerjack/orchestration/execution_strategies.py +16 -16
- crackerjack/orchestration/test_progress_streamer.py +61 -53
- crackerjack/plugins/base.py +1 -1
- crackerjack/plugins/managers.py +22 -20
- crackerjack/py313.py +65 -21
- crackerjack/services/backup_service.py +467 -0
- crackerjack/services/bounded_status_operations.py +627 -0
- crackerjack/services/cache.py +7 -9
- crackerjack/services/config.py +35 -52
- crackerjack/services/config_integrity.py +5 -16
- crackerjack/services/config_merge.py +542 -0
- crackerjack/services/contextual_ai_assistant.py +17 -19
- crackerjack/services/coverage_ratchet.py +44 -73
- crackerjack/services/debug.py +25 -39
- crackerjack/services/dependency_monitor.py +52 -50
- crackerjack/services/enhanced_filesystem.py +14 -11
- crackerjack/services/file_hasher.py +1 -1
- crackerjack/services/filesystem.py +1 -12
- crackerjack/services/git.py +71 -47
- crackerjack/services/health_metrics.py +31 -27
- crackerjack/services/initialization.py +276 -428
- crackerjack/services/input_validator.py +760 -0
- crackerjack/services/log_manager.py +16 -16
- crackerjack/services/logging.py +7 -6
- crackerjack/services/metrics.py +43 -43
- crackerjack/services/pattern_cache.py +2 -31
- crackerjack/services/pattern_detector.py +26 -63
- crackerjack/services/performance_benchmarks.py +20 -45
- crackerjack/services/regex_patterns.py +2887 -0
- crackerjack/services/regex_utils.py +537 -0
- crackerjack/services/secure_path_utils.py +683 -0
- crackerjack/services/secure_status_formatter.py +534 -0
- crackerjack/services/secure_subprocess.py +605 -0
- crackerjack/services/security.py +47 -10
- crackerjack/services/security_logger.py +492 -0
- crackerjack/services/server_manager.py +109 -50
- crackerjack/services/smart_scheduling.py +8 -25
- crackerjack/services/status_authentication.py +603 -0
- crackerjack/services/status_security_manager.py +442 -0
- crackerjack/services/thread_safe_status_collector.py +546 -0
- crackerjack/services/tool_version_service.py +1 -23
- crackerjack/services/unified_config.py +36 -58
- crackerjack/services/validation_rate_limiter.py +269 -0
- crackerjack/services/version_checker.py +9 -40
- crackerjack/services/websocket_resource_limiter.py +572 -0
- crackerjack/slash_commands/__init__.py +52 -2
- crackerjack/tools/__init__.py +0 -0
- crackerjack/tools/validate_input_validator_patterns.py +262 -0
- crackerjack/tools/validate_regex_patterns.py +198 -0
- {crackerjack-0.31.10.dist-info â crackerjack-0.31.12.dist-info}/METADATA +197 -12
- crackerjack-0.31.12.dist-info/RECORD +178 -0
- crackerjack/cli/facade.py +0 -104
- crackerjack-0.31.10.dist-info/RECORD +0 -149
- {crackerjack-0.31.10.dist-info â crackerjack-0.31.12.dist-info}/WHEEL +0 -0
- {crackerjack-0.31.10.dist-info â crackerjack-0.31.12.dist-info}/entry_points.txt +0 -0
- {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.
|
|
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:
|
|
62
|
+
# Crackerjack: Advanced AI-Driven Python Development Platform
|
|
63
63
|
|
|
64
64
|
[](https://www.python.org/downloads/)
|
|
65
65
|
[](https://pytest.org)
|
|
66
66
|
[](https://github.com/astral-sh/ruff)
|
|
67
67
|
[](https://github.com/astral-sh/uv)
|
|
68
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
68
69
|
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
69
70
|
|
|
70
|
-
## đ¯
|
|
71
|
+
## đ¯ Purpose
|
|
71
72
|
|
|
72
|
-
**Crackerjack** transforms Python development from reactive firefighting to proactive excellence.
|
|
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
|
-
-
|
|
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
|
-
- **
|
|
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
|
-
**
|
|
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.
|
|
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
|