crackerjack 0.34.1__tar.gz → 0.34.2__tar.gz
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-0.34.1 → crackerjack-0.34.2}/CHANGELOG.md +6 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/CLAUDE.md +2 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/PKG-INFO +1 -1
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/secure_subprocess.py +42 -3
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/security_logger.py +10 -4
- {crackerjack-0.34.1 → crackerjack-0.34.2}/pyproject.toml +1 -1
- {crackerjack-0.34.1 → crackerjack-0.34.2}/.github/FUNDING.yml +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/.gitignore +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/.pre-commit-config.yaml +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/AGENTS.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/LICENSE +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/QWEN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/README.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/RULES.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/SECURITY.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/ai/AGENT-CAPABILITIES.json +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/ai/AGENT_SELECTION.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/ai/AI-REFERENCE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/ai/ERROR-PATTERNS.yaml +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/__main__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/lsp_client.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/rust_tool_adapter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/rust_tool_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/skylos_adapter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/adapters/zuban_adapter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/architect_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/base.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/documentation_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/dry_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/formatting_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/import_optimization_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/performance_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/performance_helpers.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/proactive_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/refactoring_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/refactoring_helpers.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/security_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/test_creation_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/test_specialist_agent.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/agents/tracker.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/api.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/cache_handlers.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/cache_handlers_enhanced.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/facade.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/handlers.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/interactive.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/options.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/cli/utils.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/code_cleaner.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/config/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/config/global_lock_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/config/hooks.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/async_workflow_orchestrator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/autofix_coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/container.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/enhanced_container.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/file_lifecycle.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/performance.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/performance_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/phase_coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/proactive_workflow.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/resource_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/service_watchdog.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/session_coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/timeout_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/websocket_lifecycle.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/core/workflow_orchestrator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/INDEX.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/API_REFERENCE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/CLI_REFERENCE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/CROSS_REFERENCES.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/PROTOCOLS.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/SERVICES.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/ai_templates.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/dual_output_generator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/mkdocs_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/reference_generator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/dynamic_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/errors.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/async_hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/cached_hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/hook_lock_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/individual_hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/lsp_aware_hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/executors/tool_proxy.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/hooks/lsp_hook.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/adaptive_learning.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/agent_orchestrator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/agent_registry.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/agent_selector.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/intelligence/integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/interactive.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/async_hook_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/hook_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/publish_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/test_command_builder.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/test_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/test_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/test_manager_backup.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/managers/test_progress.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/cache.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/client_runner.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/context.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/dashboard.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/file_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/progress_components.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/progress_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/progress_monitor.tcss +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/rate_limiter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/server.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/server_core.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/service_watchdog.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/state.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/task_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/core_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/error_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/execution_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/proactive_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/progress_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/utility_tools.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/workflow_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/app.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/endpoints.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/jobs.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/monitoring_endpoints.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/server.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/websocket_server.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mixins/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mixins/error_handling.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/config_adapter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/protocols.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/resource_protocols.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/models/task.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/monitoring/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/monitoring/metrics_collector.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/monitoring/regression_prevention.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/monitoring/websocket_server.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/coverage_improvement.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/execution_strategies.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/test_progress_streamer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/plugins/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/plugins/base.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/plugins/hooks.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/plugins/loader.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/plugins/managers.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/pyproject.toml +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/security/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/security/audit.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/anomaly_detector.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/api_extractor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/backup_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/bounded_status_operations.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/cache.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/changelog_automation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/config_integrity.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/config_merge.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/config_template.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/contextual_ai_assistant.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/coverage_badge_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/coverage_ratchet.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/debug.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/dependency_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/dependency_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/documentation_generator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/documentation_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/enhanced_filesystem.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/enterprise_optimizer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/error_pattern_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/file_hasher.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/filesystem.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/git.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/health_metrics.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/heatmap_generator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/initialization.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/input_validator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/intelligent_commit.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/log_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/logging.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/lsp_client.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/memory_optimizer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/metrics.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/parallel_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/pattern_cache.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/pattern_detector.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/performance_benchmarks.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/performance_cache.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/performance_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/predictive_analytics.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/quality_baseline.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/quality_baseline_enhanced.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/quality_intelligence.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/regex_patterns.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/regex_utils.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/secure_path_utils.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/secure_status_formatter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/security.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/server_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/smart_scheduling.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/status_authentication.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/status_security_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/terminal_utils.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/thread_safe_status_collector.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/tool_version_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/unified_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/validation_rate_limiter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/version_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/version_checker.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/websocket_resource_limiter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/services/zuban_lsp_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/slash_commands/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/slash_commands/init.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/slash_commands/run.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/slash_commands/status.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/tools/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/tools/fix_terminal.sh +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/tools/validate_input_validator_patterns.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/tools/validate_regex_patterns.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/uv.lock +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/architecture/API_REFERENCE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/architecture/ARCHITECTURE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/archive/CONFIG_MANAGEMENT_REPLACEMENT_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/archive/CONFIG_MERGE_REMOVAL_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/archive/DOCUMENTATION_REORGANIZATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/development/IDE-SETUP.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/development/RUST_TOOLING_FRAMEWORK.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/COMPLEXITY_REFACTORING_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/COVERAGE_BADGE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/CURRENT_IMPLEMENTATION_STATUS.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/DOCUMENTATION_SYSTEM_ARCHITECTURE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/EXPERIMENTAL-EVALUATION.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/FEATURE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_IMPLEMENTATION_SUMMARY.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/STAGE_HEADERS_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/TIMEOUT_ARCHITECTURE_SOLUTION.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/TYPE_ANNOTATION_FIXING_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/UVXUSAGE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/ZUBAN_LSP_INTEGRATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/planning/ZUBAN_TOML_PARSING_BUG_ANALYSIS.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/INPUT_VALIDATOR_SECURITY_AUDIT.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/SECURITY-AUDIT.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/SECURITY_AUDIT_REPORT.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/SECURITY_AUDIT_STATUS_DISCLOSURE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/SECURITY_HARDENING_REPORT.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/security/SECURITY_SUBPROCESS_HARDENING_REPORT.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/BACKUP_SYSTEM.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/CACHING_SYSTEM.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/DASHBOARD_ARCHITECTURE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/MCP_INTEGRATION.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/MONITORING_INTEGRATION.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/docs/systems/UNIFIED_MONITORING_ARCHITECTURE.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/example.mcp.json +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/excalidraw.log +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/fix_typing_imports.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/mypy.ini +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/scripts/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/scripts/integrate_resource_management.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/scripts/performance_benchmark.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/templates/api_reference.md.template +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/templates/changelog_entry.md.template +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/templates/user_guide.md.template +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/test_docs_site/site/docs/api-reference.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/test_docs_site/site/docs/getting-started.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/test_docs_site/site/docs/index.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/test_docs_site/site/docs/stylesheets/extra.css +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/test_docs_site/site/mkdocs.yml +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/base_test.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/conftest.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/coverage.json +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/data/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/data/comments_sample.txt +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/data/docstrings_sample.txt +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/data/expected_comments_sample.txt +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/data/init.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/docs/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/docs/TEST_COVERAGE_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/docs/TEST_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/run_tests.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/scripts/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/scripts/agent_audit_report.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/scripts/run_test_suite.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test___main__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_ai_agent_workflow.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_ai_optimized_documentation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_async_hook_executor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_changelog_generation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_cli/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_cli/test_global_lock_options.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_cli_semantic_naming.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_coordinator_performance.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_autofix_coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_comprehensive.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_enhanced_container.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_modules.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_core_performance.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_documentation_agent_simple.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_dynamic_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_dynamic_config_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_end_to_end_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_enhanced_filesystem.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_enhanced_filesystem_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_execution_speed_optimization.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_executors/__init__.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_executors/test_lock_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_fast_hooks_behavior.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_filesystem_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_final_validation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_global_lock_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_hook_lock_manager.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_hook_manager_simple.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_import_coverage_consolidated.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_input_validation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_intelligence_system.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_large_modules_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_main_entry_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_main_module.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_managers_consolidated.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_mcp_progress_monitor.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_mcp_server.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_models_comprehensive.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_models_config_adapter_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_models_focused.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_models_task_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_modernized_code.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_performance_agent_enhanced.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_performance_agent_simple.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_performance_benchmarks_focused.py.bak +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_phase_coordinator_simple.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_plugins_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_proactive_agent_system.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_protocol_compliance.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_publish_manager_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_pytest_features.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_regex_patterns.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_resource_cleanup_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_secure_path_utils.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_secure_status_formatter.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_security_audit.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_security_hardening.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_security_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_services_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_session_coordinator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_session_coordinator_coverage.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_simple_tool_version_service.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_simple_workflow.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_stage_workflow_execution_order.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_structured_errors.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_structured_logging.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_syntax_validation.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_terminal_restoration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_terminal_state.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_timeout_system.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_unified_api.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_unified_config.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_unified_monitoring_dashboard.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_validate_regex_patterns_tool.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_version_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_version_bump_analyzer.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_websocket_endpoints.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_workflow_fast_hooks.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_workflow_integration.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tests/test_workflow_orchestrator.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/tools/validate_regex_patterns_standalone.py +0 -0
- {crackerjack-0.34.1 → crackerjack-0.34.2}/uv.lock +0 -0
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.34.2] - 2025-09-15
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- security: Suppress verbose logging and fix commit validation error (parentheses allowed)
|
|
13
|
+
|
|
8
14
|
## [0.34.0] - 2025-09-15
|
|
9
15
|
|
|
10
16
|
### Changed
|
|
@@ -347,3 +347,5 @@ from ..models.protocols import TestManagerProtocol
|
|
|
347
347
|
- make sure to run `python -m crackerjack` after every editing/debugging cycle for quality checking
|
|
348
348
|
- always put implementation plans in a md doc for review and reference
|
|
349
349
|
- think when you need to think, think harder when you need to think harder
|
|
350
|
+
|
|
351
|
+
# Test debug logging
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crackerjack
|
|
3
|
-
Version: 0.34.
|
|
3
|
+
Version: 0.34.2
|
|
4
4
|
Summary: Crackerjack Python project management tool
|
|
5
5
|
Project-URL: documentation, https://github.com/lesleslie/crackerjack
|
|
6
6
|
Project-URL: homepage, https://github.com/lesleslie/crackerjack
|
|
@@ -318,20 +318,47 @@ class SecureSubprocessExecutor:
|
|
|
318
318
|
)
|
|
319
319
|
continue
|
|
320
320
|
|
|
321
|
-
if self._has_dangerous_patterns(arg, i, issues):
|
|
321
|
+
if self._has_dangerous_patterns(arg, i, issues, command):
|
|
322
322
|
continue
|
|
323
323
|
|
|
324
324
|
validated_command.append(arg)
|
|
325
325
|
|
|
326
326
|
return validated_command, issues
|
|
327
327
|
|
|
328
|
-
def _has_dangerous_patterns(
|
|
328
|
+
def _has_dangerous_patterns(
|
|
329
|
+
self, arg: str, index: int, issues: list[str], command: list[str]
|
|
330
|
+
) -> bool:
|
|
329
331
|
# First check if this is an allowed git pattern
|
|
330
332
|
for git_pattern in self.allowed_git_patterns:
|
|
331
333
|
if re.match(git_pattern, arg):
|
|
332
334
|
return False # It's an allowed git pattern, don't flag as dangerous
|
|
333
335
|
|
|
334
|
-
#
|
|
336
|
+
# Special handling for git commit messages
|
|
337
|
+
if self._is_git_commit_message(index, command):
|
|
338
|
+
# For git commit messages, only check for truly dangerous patterns
|
|
339
|
+
# Parentheses are common in commit messages and should be allowed
|
|
340
|
+
safe_commit_patterns = [
|
|
341
|
+
r"[;&|`$]", # Still dangerous in commit messages
|
|
342
|
+
r"\.\./", # Path traversal
|
|
343
|
+
r"\$\{.*\}", # Variable expansion
|
|
344
|
+
r"`.*`", # Command substitution
|
|
345
|
+
r"\$\(.*\)", # Command substitution (but allow simple parentheses)
|
|
346
|
+
r">\s*/", # Redirection to paths
|
|
347
|
+
r"<\s*/", # Redirection from paths
|
|
348
|
+
]
|
|
349
|
+
|
|
350
|
+
for pattern in safe_commit_patterns:
|
|
351
|
+
if re.search(pattern, arg):
|
|
352
|
+
# Allow simple parentheses that don't look like command substitution
|
|
353
|
+
if pattern == r"\$\(.*\)" and not re.search(r"\$\(", arg):
|
|
354
|
+
continue
|
|
355
|
+
issues.append(
|
|
356
|
+
f"Dangerous pattern '{pattern}' in argument {index}: {arg[:50]}"
|
|
357
|
+
)
|
|
358
|
+
return True
|
|
359
|
+
return False
|
|
360
|
+
|
|
361
|
+
# Check for dangerous patterns in other contexts
|
|
335
362
|
for pattern in self.dangerous_patterns:
|
|
336
363
|
if re.search(pattern, arg):
|
|
337
364
|
issues.append(
|
|
@@ -340,6 +367,18 @@ class SecureSubprocessExecutor:
|
|
|
340
367
|
return True
|
|
341
368
|
return False
|
|
342
369
|
|
|
370
|
+
def _is_git_commit_message(self, index: int, command: list[str]) -> bool:
|
|
371
|
+
"""Check if the current argument is likely a git commit message."""
|
|
372
|
+
# Check if we have a git commit command structure: git commit -m <message>
|
|
373
|
+
if (
|
|
374
|
+
len(command) >= 3
|
|
375
|
+
and command[0] == "git"
|
|
376
|
+
and command[1] == "commit"
|
|
377
|
+
and command[2] == "-m"
|
|
378
|
+
):
|
|
379
|
+
return index == 3
|
|
380
|
+
return False
|
|
381
|
+
|
|
343
382
|
def _validate_executable_permissions(
|
|
344
383
|
self, validated_command: list[str], issues: list[str]
|
|
345
384
|
) -> None:
|
|
@@ -122,20 +122,26 @@ class SecurityLogger:
|
|
|
122
122
|
self._setup_security_logger()
|
|
123
123
|
|
|
124
124
|
def _setup_security_logger(self) -> None:
|
|
125
|
-
|
|
125
|
+
debug_enabled = os.environ.get("CRACKERJACK_DEBUG", "0") == "1"
|
|
126
|
+
|
|
127
|
+
# Set appropriate logger level based on debug mode
|
|
128
|
+
if debug_enabled:
|
|
129
|
+
self.logger.setLevel(logging.DEBUG)
|
|
130
|
+
else:
|
|
131
|
+
# Suppress all security logs during normal operation
|
|
132
|
+
self.logger.setLevel(logging.CRITICAL + 10)
|
|
126
133
|
|
|
127
134
|
if not self.logger.handlers:
|
|
128
135
|
console_handler = logging.StreamHandler()
|
|
129
136
|
|
|
130
|
-
debug_enabled = os.environ.get("CRACKERJACK_DEBUG", "0") == "1"
|
|
131
137
|
if debug_enabled:
|
|
132
|
-
console_handler.setLevel(logging.
|
|
138
|
+
console_handler.setLevel(logging.DEBUG)
|
|
133
139
|
else:
|
|
134
140
|
# Suppress all security logs during normal operation
|
|
135
141
|
console_handler.setLevel(logging.CRITICAL + 10)
|
|
136
142
|
|
|
137
143
|
formatter = logging.Formatter(
|
|
138
|
-
"%(asctime)s - SECURITY - %(levelname)s
|
|
144
|
+
"%(asctime)s - SECURITY - %(levelname)s - %(message)s"
|
|
139
145
|
)
|
|
140
146
|
console_handler.setFormatter(formatter)
|
|
141
147
|
self.logger.addHandler(console_handler)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/docs/generated/api/CROSS_REFERENCES.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/documentation/dual_output_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/mcp/tools/intelligence_tool_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/advanced_orchestrator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crackerjack-0.34.1 → crackerjack-0.34.2}/crackerjack/orchestration/test_progress_streamer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|