crackerjack 0.35.0__tar.gz → 0.35.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.35.0 → crackerjack-0.35.2}/.pre-commit-config.yaml +19 -15
- {crackerjack-0.35.0 → crackerjack-0.35.2}/CHANGELOG.md +20 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/PKG-INFO +1 -1
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/api.py +4 -4
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/workflow_orchestrator.py +13 -5
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/dynamic_config.py +12 -6
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/server_core.py +34 -7
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/server_manager.py +29 -8
- crackerjack-0.35.2/crackerjack/ui/__init__.py +1 -0
- crackerjack-0.35.2/crackerjack/ui/server_panels.py +125 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/pyproject.toml +1 -1
- {crackerjack-0.35.0 → crackerjack-0.35.2}/uv.lock +4 -4
- {crackerjack-0.35.0 → crackerjack-0.35.2}/.github/FUNDING.yml +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/.gitignore +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/AGENTS.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/CLAUDE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/LICENSE +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/QWEN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/README.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/RULES.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/SECURITY.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/ai/AGENT-CAPABILITIES.json +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/ai/AGENT_SELECTION.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/ai/AI-REFERENCE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/ai/ERROR-PATTERNS.yaml +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/__main__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/lsp_client.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/rust_tool_adapter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/rust_tool_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/skylos_adapter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/adapters/zuban_adapter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/architect_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/base.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/documentation_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/dry_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/formatting_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/import_optimization_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/performance_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/performance_helpers.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/proactive_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/refactoring_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/refactoring_helpers.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/security_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/test_creation_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/test_specialist_agent.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/agents/tracker.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/cache_handlers.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/cache_handlers_enhanced.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/facade.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/handlers.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/interactive.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/options.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/cli/utils.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/code_cleaner.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/config/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/config/global_lock_config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/config/hooks.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/async_workflow_orchestrator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/autofix_coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/container.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/enhanced_container.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/file_lifecycle.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/performance.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/performance_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/phase_coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/proactive_workflow.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/resource_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/service_watchdog.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/session_coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/timeout_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/core/websocket_lifecycle.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/INDEX.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/generated/api/API_REFERENCE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/generated/api/CLI_REFERENCE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/generated/api/CROSS_REFERENCES.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/generated/api/PROTOCOLS.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/docs/generated/api/SERVICES.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/documentation/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/documentation/ai_templates.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/documentation/dual_output_generator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/documentation/mkdocs_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/documentation/reference_generator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/errors.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/async_hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/cached_hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/hook_lock_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/individual_hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/lsp_aware_hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/executors/tool_proxy.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/hooks/lsp_hook.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/adaptive_learning.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/agent_orchestrator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/agent_registry.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/agent_selector.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/intelligence/integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/interactive.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/async_hook_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/hook_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/publish_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/test_command_builder.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/test_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/test_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/test_manager_backup.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/managers/test_progress.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/cache.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/client_runner.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/context.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/dashboard.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/file_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/progress_components.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/progress_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/progress_monitor.tcss +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/rate_limiter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/server.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/service_watchdog.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/state.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/task_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/core_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/error_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/execution_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/proactive_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/progress_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/utility_tools.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/tools/workflow_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/app.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/endpoints.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/jobs.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/monitoring_endpoints.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/server.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mcp/websocket_server.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mixins/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/mixins/error_handling.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/config_adapter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/protocols.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/resource_protocols.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/models/task.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/monitoring/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/monitoring/metrics_collector.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/monitoring/regression_prevention.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/monitoring/websocket_server.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/orchestration/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/orchestration/coverage_improvement.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/orchestration/execution_strategies.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/orchestration/test_progress_streamer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/plugins/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/plugins/base.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/plugins/hooks.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/plugins/loader.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/plugins/managers.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/pyproject.toml +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/security/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/security/audit.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/anomaly_detector.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/api_extractor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/backup_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/bounded_status_operations.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/cache.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/changelog_automation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/config_integrity.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/config_merge.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/config_template.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/contextual_ai_assistant.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/coverage_badge_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/coverage_ratchet.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/debug.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/dependency_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/dependency_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/documentation_generator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/documentation_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/enhanced_filesystem.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/enterprise_optimizer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/error_pattern_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/file_hasher.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/filesystem.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/git.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/health_metrics.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/heatmap_generator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/initialization.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/input_validator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/intelligent_commit.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/log_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/logging.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/lsp_client.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/memory_optimizer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/metrics.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/parallel_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/pattern_cache.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/pattern_detector.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/performance_benchmarks.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/performance_cache.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/performance_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/predictive_analytics.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/quality_baseline.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/quality_baseline_enhanced.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/quality_intelligence.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/regex_patterns.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/regex_utils.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/secure_path_utils.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/secure_status_formatter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/secure_subprocess.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/security.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/security_logger.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/smart_scheduling.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/status_authentication.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/status_security_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/terminal_utils.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/thread_safe_status_collector.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/tool_version_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/unified_config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/validation_rate_limiter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/version_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/version_checker.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/websocket_resource_limiter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/services/zuban_lsp_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/slash_commands/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/slash_commands/init.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/slash_commands/run.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/slash_commands/status.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/tools/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/tools/fix_terminal.sh +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/tools/validate_input_validator_patterns.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/tools/validate_regex_patterns.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/crackerjack/uv.lock +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/architecture/API_REFERENCE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/architecture/ARCHITECTURE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/archive/CONFIG_MANAGEMENT_REPLACEMENT_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/archive/CONFIG_MERGE_REMOVAL_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/archive/DOCUMENTATION_REORGANIZATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/development/IDE-SETUP.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/development/RUST_TOOLING_FRAMEWORK.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/COMPLEXITY_REFACTORING_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/COVERAGE_BADGE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/CURRENT_IMPLEMENTATION_STATUS.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/DOCUMENTATION_SYSTEM_ARCHITECTURE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/EXPERIMENTAL-EVALUATION.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/FEATURE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_IMPLEMENTATION_SUMMARY.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/STAGE_HEADERS_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/TIMEOUT_ARCHITECTURE_SOLUTION.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/TYPE_ANNOTATION_FIXING_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/UVXUSAGE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/ZUBAN_LSP_INTEGRATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/planning/ZUBAN_TOML_PARSING_BUG_ANALYSIS.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/INPUT_VALIDATOR_SECURITY_AUDIT.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/SECURITY-AUDIT.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/SECURITY_AUDIT_REPORT.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/SECURITY_AUDIT_STATUS_DISCLOSURE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/SECURITY_HARDENING_REPORT.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/security/SECURITY_SUBPROCESS_HARDENING_REPORT.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/BACKUP_SYSTEM.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/CACHING_SYSTEM.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/DASHBOARD_ARCHITECTURE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/MCP_INTEGRATION.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/MONITORING_INTEGRATION.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/docs/systems/UNIFIED_MONITORING_ARCHITECTURE.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/example.mcp.json +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/excalidraw.log +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/fix_typing_imports.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/mypy.ini +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/scripts/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/scripts/integrate_resource_management.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/scripts/performance_benchmark.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/templates/api_reference.md.template +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/templates/changelog_entry.md.template +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/templates/user_guide.md.template +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/test_docs_site/site/docs/api-reference.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/test_docs_site/site/docs/getting-started.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/test_docs_site/site/docs/index.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/test_docs_site/site/docs/stylesheets/extra.css +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/test_docs_site/site/mkdocs.yml +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/base_test.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/conftest.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/coverage.json +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/data/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/data/comments_sample.txt +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/data/docstrings_sample.txt +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/data/expected_comments_sample.txt +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/data/init.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/docs/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/docs/TEST_COVERAGE_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/docs/TEST_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/run_tests.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/scripts/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/scripts/agent_audit_report.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/scripts/run_test_suite.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test___main__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_ai_agent_workflow.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_ai_optimized_documentation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_async_hook_executor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_changelog_generation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_cli/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_cli/test_global_lock_options.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_cli_semantic_naming.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_coordinator_performance.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_autofix_coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_comprehensive.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_enhanced_container.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_modules.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_core_performance.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_documentation_agent_simple.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_dynamic_config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_dynamic_config_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_end_to_end_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_enhanced_filesystem.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_enhanced_filesystem_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_execution_speed_optimization.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_executors/__init__.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_executors/test_lock_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_fast_hooks_behavior.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_filesystem_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_final_validation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_global_lock_config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_hook_lock_manager.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_hook_manager_simple.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_import_coverage_consolidated.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_input_validation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_intelligence_system.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_large_modules_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_main_entry_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_main_module.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_managers_consolidated.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_mcp_progress_monitor.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_mcp_server.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_models_comprehensive.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_models_config_adapter_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_models_focused.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_models_task_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_modernized_code.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_performance_agent_enhanced.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_performance_agent_simple.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_performance_benchmarks_focused.py.bak +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_phase_coordinator_simple.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_plugins_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_proactive_agent_system.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_protocol_compliance.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_publish_manager_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_pytest_features.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_regex_patterns.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_resource_cleanup_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_secure_path_utils.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_secure_status_formatter.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_security_audit.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_security_hardening.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_security_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_services_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_session_coordinator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_session_coordinator_coverage.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_simple_tool_version_service.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_simple_workflow.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_stage_workflow_execution_order.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_structured_errors.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_structured_logging.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_syntax_validation.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_terminal_restoration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_terminal_state.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_timeout_system.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_unified_api.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_unified_config.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_unified_monitoring_dashboard.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_validate_regex_patterns_tool.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_version_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_version_bump_analyzer.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_websocket_endpoints.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_workflow_fast_hooks.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_workflow_integration.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tests/test_workflow_orchestrator.py +0 -0
- {crackerjack-0.35.0 → crackerjack-0.35.2}/tools/validate_regex_patterns_standalone.py +0 -0
|
@@ -6,13 +6,14 @@ repos:
|
|
|
6
6
|
entry: uv run python -m crackerjack.tools.validate_regex_patterns
|
|
7
7
|
language: system
|
|
8
8
|
files: \.py$
|
|
9
|
-
exclude: ^\.venv/
|
|
9
|
+
exclude: ^\.venv/|^src/
|
|
10
10
|
- id: skylos
|
|
11
11
|
name: skylos-dead-code-detection
|
|
12
12
|
entry: skylos
|
|
13
13
|
language: system
|
|
14
14
|
args: ["crackerjack"]
|
|
15
15
|
pass_filenames: false
|
|
16
|
+
exclude: ^src/
|
|
16
17
|
stages: ["pre-push", "manual"]
|
|
17
18
|
- id: zuban
|
|
18
19
|
name: zuban-type-checking
|
|
@@ -20,73 +21,76 @@ repos:
|
|
|
20
21
|
language: system
|
|
21
22
|
args: ["--config-file", "mypy.ini", "./crackerjack"]
|
|
22
23
|
pass_filenames: false
|
|
24
|
+
exclude: ^src/
|
|
23
25
|
stages: ["pre-push", "manual"]
|
|
24
26
|
- id: pyright
|
|
25
27
|
name: pyright-type-checking
|
|
26
28
|
entry: uv run pyright
|
|
27
29
|
language: system
|
|
28
30
|
files: ^crackerjack/.*\.py$
|
|
29
|
-
exclude: ^crackerjack/(mcp|plugins)/.*\.py$|crackerjack/code_cleaner\.py
|
|
31
|
+
exclude: ^crackerjack/(mcp|plugins)/.*\.py$|crackerjack/code_cleaner\.py$|^src/
|
|
30
32
|
stages: ["pre-push", "manual"]
|
|
31
33
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
32
34
|
rev: v6.0.0
|
|
33
35
|
hooks:
|
|
34
36
|
- id: trailing-whitespace
|
|
35
37
|
name: trailing-whitespace
|
|
36
|
-
exclude: ^\.venv/
|
|
38
|
+
exclude: ^\.venv/|^src/
|
|
37
39
|
- id: end-of-file-fixer
|
|
38
40
|
name: end-of-file-fixer
|
|
39
|
-
exclude: ^\.venv/
|
|
41
|
+
exclude: ^\.venv/|^src/
|
|
40
42
|
- id: check-yaml
|
|
41
43
|
name: check-yaml
|
|
42
|
-
exclude: ^\.venv/
|
|
44
|
+
exclude: ^\.venv/|^src/
|
|
43
45
|
- id: check-toml
|
|
44
46
|
name: check-toml
|
|
45
|
-
exclude: ^\.venv/
|
|
47
|
+
exclude: ^\.venv/|^src/
|
|
46
48
|
- id: check-added-large-files
|
|
47
49
|
name: check-added-large-files
|
|
48
|
-
exclude: ^\.venv/
|
|
50
|
+
exclude: ^\.venv/|^src/
|
|
49
51
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
50
52
|
rev: 0.8.15
|
|
51
53
|
hooks:
|
|
52
54
|
- id: uv-lock
|
|
53
55
|
files: ^ pyproject\.toml$
|
|
56
|
+
exclude: ^src/
|
|
54
57
|
- repo: https://github.com/gitleaks/gitleaks
|
|
55
58
|
rev: v8.28.0
|
|
56
59
|
hooks:
|
|
57
60
|
- id: gitleaks
|
|
58
|
-
exclude: uv\.lock|pyproject\.toml|tests/.*|docs/.*|.*\.md
|
|
61
|
+
exclude: uv\.lock|pyproject\.toml|tests/.*|docs/.*|.*\.md|^src/
|
|
59
62
|
- repo: https://github.com/PyCQA/bandit
|
|
60
63
|
rev: 1.8.6
|
|
61
64
|
hooks:
|
|
62
65
|
- id: bandit
|
|
63
66
|
args: ["-c", "pyproject.toml", "-r", "-ll"]
|
|
64
67
|
files: ^crackerjack/.*\.py$
|
|
68
|
+
exclude: ^src/
|
|
65
69
|
stages: ["pre-push", "manual"]
|
|
66
70
|
- repo: https://github.com/codespell-project/codespell
|
|
67
71
|
rev: v2.4.1
|
|
68
72
|
hooks:
|
|
69
73
|
- id: codespell
|
|
70
|
-
exclude: ^\.venv/
|
|
74
|
+
exclude: ^\.venv/|^src/
|
|
71
75
|
additional_dependencies: ["tomli"]
|
|
72
76
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
73
77
|
rev: v0.12.12
|
|
74
78
|
hooks:
|
|
75
79
|
- id: ruff-check
|
|
76
|
-
exclude: ^\.venv/
|
|
80
|
+
exclude: ^\.venv/|^src/
|
|
77
81
|
- id: ruff-format
|
|
78
|
-
exclude: ^\.venv/
|
|
82
|
+
exclude: ^\.venv/|^src/
|
|
79
83
|
- repo: https://github.com/executablebooks/mdformat
|
|
80
84
|
rev: 0.7.22
|
|
81
85
|
hooks:
|
|
82
86
|
- id: mdformat
|
|
83
|
-
exclude: ^\.venv/
|
|
87
|
+
exclude: ^\.venv/|^src/
|
|
84
88
|
additional_dependencies: ["mdformat-ruff"]
|
|
85
89
|
- repo: https://github.com/fredrikaverpil/creosote
|
|
86
90
|
rev: v4.1.0
|
|
87
91
|
hooks:
|
|
88
92
|
- id: creosote
|
|
89
|
-
exclude: ^\.venv/
|
|
93
|
+
exclude: ^\.venv/|^src/
|
|
90
94
|
stages: ["pre-push", "manual"]
|
|
91
95
|
- repo: https://github.com/rohaquinlop/complexipy-pre-commit
|
|
92
96
|
rev: v3.3.0
|
|
@@ -94,7 +98,7 @@ repos:
|
|
|
94
98
|
- id: complexipy
|
|
95
99
|
args: ["-d", "low", "--max-complexity-allowed", "15"]
|
|
96
100
|
files: ^crackerjack/.*\.py$
|
|
97
|
-
exclude: ^(\.venv/|tests/)
|
|
101
|
+
exclude: ^(\.venv/|tests/)|^src/
|
|
98
102
|
stages: ["pre-push", "manual"]
|
|
99
103
|
- repo: https://github.com/dosisod/refurb
|
|
100
104
|
rev: v2.1.0
|
|
@@ -102,5 +106,5 @@ repos:
|
|
|
102
106
|
- id: refurb
|
|
103
107
|
args: ["--ignore", "FURB184", "--ignore", "FURB120"]
|
|
104
108
|
files: ^crackerjack/.*\.py$
|
|
105
|
-
exclude: ^tests/.*\.py
|
|
109
|
+
exclude: ^tests/.*\.py$|^src/
|
|
106
110
|
stages: ["pre-push", "manual"]
|
|
@@ -5,6 +5,26 @@ 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.35.2] - 2025-09-15
|
|
9
|
+
|
|
10
|
+
### Documentation
|
|
11
|
+
|
|
12
|
+
- core: Update 6 files
|
|
13
|
+
|
|
14
|
+
### Internal
|
|
15
|
+
|
|
16
|
+
- No changes to commit
|
|
17
|
+
|
|
18
|
+
## [0.35.1] - 2025-09-15
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- Crackerjack (quality: 76/100) - 2025-09-15 22:25:11
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Fixed commit/push stage being skipped when using -s -p -c flags together
|
|
27
|
+
|
|
8
28
|
## [0.35.0] - 2025-09-15
|
|
9
29
|
|
|
10
30
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crackerjack
|
|
3
|
-
Version: 0.35.
|
|
3
|
+
Version: 0.35.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
|
|
@@ -601,10 +601,10 @@ class CrackerjackAPI:
|
|
|
601
601
|
return None
|
|
602
602
|
|
|
603
603
|
def _find_fallback_package_directory(self) -> Path | None:
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
604
|
+
# Only check project directory name, not src
|
|
605
|
+
package_dir = self.project_path / self.project_path.name
|
|
606
|
+
if self._is_valid_python_package_directory(package_dir):
|
|
607
|
+
return package_dir
|
|
608
608
|
return None
|
|
609
609
|
|
|
610
610
|
def _is_valid_python_package_directory(self, directory: Path) -> bool:
|
|
@@ -424,17 +424,25 @@ class WorkflowPipeline:
|
|
|
424
424
|
if self._is_publishing_workflow(options):
|
|
425
425
|
return False
|
|
426
426
|
|
|
427
|
-
|
|
427
|
+
# Execute publishing workflow if requested
|
|
428
|
+
publishing_success = await self._execute_publishing_workflow(
|
|
429
|
+
options, workflow_id
|
|
430
|
+
)
|
|
431
|
+
if not publishing_success:
|
|
428
432
|
success = False
|
|
429
|
-
return
|
|
433
|
+
# Only return early if publishing was requested but failed
|
|
434
|
+
if options.publish or options.all:
|
|
435
|
+
return False
|
|
430
436
|
|
|
431
|
-
|
|
437
|
+
# Execute commit workflow independently if requested
|
|
438
|
+
commit_success = await self._execute_commit_workflow(options, workflow_id)
|
|
439
|
+
if not commit_success:
|
|
432
440
|
success = False
|
|
433
441
|
|
|
434
442
|
return success
|
|
435
443
|
|
|
436
444
|
def _is_publishing_workflow(self, options: OptionsProtocol) -> bool:
|
|
437
|
-
return bool(options.publish or options.all
|
|
445
|
+
return bool(options.publish or options.all)
|
|
438
446
|
|
|
439
447
|
async def _execute_publishing_workflow(
|
|
440
448
|
self, options: OptionsProtocol, workflow_id: str
|
|
@@ -1457,7 +1465,7 @@ class WorkflowPipeline:
|
|
|
1457
1465
|
def _check_security_gates_for_publishing(
|
|
1458
1466
|
self, options: OptionsProtocol
|
|
1459
1467
|
) -> tuple[bool, bool]:
|
|
1460
|
-
publishing_requested = bool(options.publish or options.all
|
|
1468
|
+
publishing_requested = bool(options.publish or options.all)
|
|
1461
1469
|
|
|
1462
1470
|
if not publishing_requested:
|
|
1463
1471
|
return False, False
|
|
@@ -499,13 +499,12 @@ class DynamicConfigGenerator:
|
|
|
499
499
|
except Exception:
|
|
500
500
|
pass
|
|
501
501
|
|
|
502
|
-
# Fallback to
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
return possible_name
|
|
502
|
+
# Fallback to project directory name
|
|
503
|
+
if (current_dir / current_dir.name).exists():
|
|
504
|
+
return current_dir.name
|
|
506
505
|
|
|
507
|
-
# Default fallback
|
|
508
|
-
return
|
|
506
|
+
# Default fallback to current directory name
|
|
507
|
+
return current_dir.name
|
|
509
508
|
|
|
510
509
|
def _should_include_hook(
|
|
511
510
|
self,
|
|
@@ -565,6 +564,13 @@ class DynamicConfigGenerator:
|
|
|
565
564
|
"crackerjack", self.package_directory
|
|
566
565
|
)
|
|
567
566
|
|
|
567
|
+
# Ensure hooks exclude src directories to avoid JavaScript conflicts
|
|
568
|
+
if hook["exclude"]:
|
|
569
|
+
if "src/" not in hook["exclude"]:
|
|
570
|
+
hook["exclude"] = f"{hook['exclude']}|^src/"
|
|
571
|
+
else:
|
|
572
|
+
hook["exclude"] = "^src/"
|
|
573
|
+
|
|
568
574
|
return hook
|
|
569
575
|
|
|
570
576
|
def group_hooks_by_repo(
|
|
@@ -6,6 +6,8 @@ from typing import Final
|
|
|
6
6
|
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
|
|
9
|
+
from ..ui.server_panels import create_server_panels
|
|
10
|
+
|
|
9
11
|
try:
|
|
10
12
|
import tomli
|
|
11
13
|
except ImportError:
|
|
@@ -259,18 +261,23 @@ def _print_server_info(
|
|
|
259
261
|
websocket_port: int | None,
|
|
260
262
|
http_mode: bool,
|
|
261
263
|
) -> None:
|
|
262
|
-
|
|
263
|
-
console.print(f"Project path: {project_path}")
|
|
264
|
+
panels = create_server_panels(console)
|
|
264
265
|
|
|
265
266
|
if mcp_config.get("http_enabled", False) or http_mode:
|
|
266
|
-
|
|
267
|
-
|
|
267
|
+
mode = "HTTP"
|
|
268
|
+
http_endpoint = (
|
|
269
|
+
f"http://{mcp_config['http_host']}:{mcp_config['http_port']}/mcp"
|
|
268
270
|
)
|
|
269
271
|
else:
|
|
270
|
-
|
|
272
|
+
mode = "STDIO"
|
|
273
|
+
http_endpoint = None
|
|
271
274
|
|
|
272
|
-
|
|
273
|
-
|
|
275
|
+
panels.start_panel(
|
|
276
|
+
project_path=project_path,
|
|
277
|
+
mode=mode,
|
|
278
|
+
http_endpoint=http_endpoint,
|
|
279
|
+
websocket_port=websocket_port,
|
|
280
|
+
)
|
|
274
281
|
|
|
275
282
|
|
|
276
283
|
def _run_mcp_server(
|
|
@@ -331,6 +338,26 @@ def main(
|
|
|
331
338
|
f"[yellow]⚠️ WebSocket server auto-start failed: {e}[/yellow]"
|
|
332
339
|
)
|
|
333
340
|
|
|
341
|
+
# Show final success panel before starting the server
|
|
342
|
+
panels = create_server_panels(console)
|
|
343
|
+
|
|
344
|
+
if mcp_config.get("http_enabled", False) or http_mode:
|
|
345
|
+
http_endpoint = (
|
|
346
|
+
f"http://{mcp_config['http_host']}:{mcp_config['http_port']}/mcp"
|
|
347
|
+
)
|
|
348
|
+
else:
|
|
349
|
+
http_endpoint = None
|
|
350
|
+
|
|
351
|
+
websocket_monitor = (
|
|
352
|
+
f"ws://127.0.0.1:{websocket_port}" if websocket_port else None
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
panels.success_panel(
|
|
356
|
+
http_endpoint=http_endpoint,
|
|
357
|
+
websocket_monitor=websocket_monitor,
|
|
358
|
+
process_id=None, # Will be set by the process manager
|
|
359
|
+
)
|
|
360
|
+
|
|
334
361
|
_run_mcp_server(mcp_app, mcp_config, http_mode)
|
|
335
362
|
|
|
336
363
|
except KeyboardInterrupt:
|
|
@@ -7,6 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from rich.console import Console
|
|
9
9
|
|
|
10
|
+
from ..ui.server_panels import create_server_panels
|
|
10
11
|
from .secure_subprocess import execute_secure_subprocess
|
|
11
12
|
from .security_logger import get_security_logger
|
|
12
13
|
|
|
@@ -201,21 +202,27 @@ def stop_mcp_server(console: Console | None = None) -> bool:
|
|
|
201
202
|
if console is None:
|
|
202
203
|
console = Console()
|
|
203
204
|
|
|
205
|
+
panels = create_server_panels(console)
|
|
204
206
|
processes = find_mcp_server_processes()
|
|
205
207
|
|
|
206
208
|
if not processes:
|
|
207
209
|
console.print("[yellow]⚠️ No MCP server processes found[/ yellow]")
|
|
208
210
|
return True
|
|
209
211
|
|
|
212
|
+
panels.stop_servers(len(processes))
|
|
213
|
+
|
|
210
214
|
success = True
|
|
211
215
|
for proc in processes:
|
|
212
|
-
console.print(f"
|
|
216
|
+
console.print(f"Stopping process {proc['pid']}...")
|
|
213
217
|
if stop_process(proc["pid"]):
|
|
214
|
-
console.print(f"✅
|
|
218
|
+
console.print(f"✅ Process {proc['pid']} terminated gracefully")
|
|
215
219
|
else:
|
|
216
220
|
console.print(f"❌ Failed to stop process {proc['pid']}")
|
|
217
221
|
success = False
|
|
218
222
|
|
|
223
|
+
if success:
|
|
224
|
+
panels.stop_complete(len(processes))
|
|
225
|
+
|
|
219
226
|
return success
|
|
220
227
|
|
|
221
228
|
|
|
@@ -282,14 +289,15 @@ def restart_mcp_server(
|
|
|
282
289
|
if console is None:
|
|
283
290
|
console = Console()
|
|
284
291
|
|
|
285
|
-
|
|
292
|
+
panels = create_server_panels(console)
|
|
293
|
+
panels.restart_header()
|
|
286
294
|
|
|
287
295
|
stop_mcp_server(console)
|
|
288
296
|
|
|
289
|
-
|
|
297
|
+
panels.cleanup_wait()
|
|
290
298
|
time.sleep(2)
|
|
291
299
|
|
|
292
|
-
|
|
300
|
+
panels.starting_server()
|
|
293
301
|
try:
|
|
294
302
|
cmd = [sys.executable, "-m", "crackerjack", "--start-mcp-server"]
|
|
295
303
|
if websocket_port:
|
|
@@ -297,7 +305,7 @@ def restart_mcp_server(
|
|
|
297
305
|
|
|
298
306
|
import subprocess
|
|
299
307
|
|
|
300
|
-
subprocess.Popen(
|
|
308
|
+
process = subprocess.Popen(
|
|
301
309
|
cmd,
|
|
302
310
|
stdout=subprocess.DEVNULL,
|
|
303
311
|
stderr=subprocess.DEVNULL,
|
|
@@ -310,11 +318,24 @@ def restart_mcp_server(
|
|
|
310
318
|
purpose="mcp_server_restart",
|
|
311
319
|
)
|
|
312
320
|
|
|
313
|
-
|
|
321
|
+
# Give the server a moment to start
|
|
322
|
+
time.sleep(1)
|
|
323
|
+
|
|
324
|
+
# Display success panel with server details
|
|
325
|
+
http_endpoint = "http://127.0.0.1:8676/mcp"
|
|
326
|
+
websocket_monitor = (
|
|
327
|
+
f"ws://127.0.0.1:{websocket_port or 8675}" if websocket_port else None
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
panels.success_panel(
|
|
331
|
+
http_endpoint=http_endpoint,
|
|
332
|
+
websocket_monitor=websocket_monitor,
|
|
333
|
+
process_id=process.pid,
|
|
334
|
+
)
|
|
314
335
|
return True
|
|
315
336
|
|
|
316
337
|
except Exception as e:
|
|
317
|
-
|
|
338
|
+
panels.failure_panel(str(e))
|
|
318
339
|
return False
|
|
319
340
|
|
|
320
341
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""UI components for Crackerjack."""
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""Rich panel utilities for MCP server operations with consistent styling."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from rich.console import Console
|
|
6
|
+
from rich.panel import Panel
|
|
7
|
+
from rich.text import Text
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ServerPanels:
|
|
11
|
+
"""Rich panel utilities for server operations with 74-char width limit."""
|
|
12
|
+
|
|
13
|
+
WIDTH = 74 # Match session-mgmt-mcp width constraint
|
|
14
|
+
|
|
15
|
+
def __init__(self, console: Console | None = None) -> None:
|
|
16
|
+
self.console = console or Console()
|
|
17
|
+
|
|
18
|
+
def restart_header(self) -> None:
|
|
19
|
+
"""Display server restart header panel."""
|
|
20
|
+
panel = Panel(
|
|
21
|
+
"🔄 Restarting Crackerjack MCP Server...",
|
|
22
|
+
width=self.WIDTH,
|
|
23
|
+
title="Server Restart",
|
|
24
|
+
style="cyan",
|
|
25
|
+
)
|
|
26
|
+
self.console.print(panel)
|
|
27
|
+
|
|
28
|
+
def stop_servers(self, count: int) -> None:
|
|
29
|
+
"""Display stopping servers status."""
|
|
30
|
+
self.console.print("📴 Stopping existing servers...")
|
|
31
|
+
self.console.print(f"🛑 Stopping {count} server process(es)...")
|
|
32
|
+
|
|
33
|
+
def process_stopped(self, pid: int) -> None:
|
|
34
|
+
"""Display process stopped message."""
|
|
35
|
+
self.console.print(f"Stopping process {pid}...")
|
|
36
|
+
self.console.print(f"✅ Process {pid} terminated gracefully")
|
|
37
|
+
|
|
38
|
+
def stop_complete(self, count: int) -> None:
|
|
39
|
+
"""Display stop completion panel."""
|
|
40
|
+
panel = Panel(
|
|
41
|
+
f"✅ Successfully stopped {count} process(es)",
|
|
42
|
+
width=self.WIDTH,
|
|
43
|
+
title="Server Stopped",
|
|
44
|
+
style="green",
|
|
45
|
+
)
|
|
46
|
+
self.console.print(panel)
|
|
47
|
+
|
|
48
|
+
def cleanup_wait(self) -> None:
|
|
49
|
+
"""Display cleanup waiting message."""
|
|
50
|
+
self.console.print("⏳ Waiting for cleanup...")
|
|
51
|
+
|
|
52
|
+
def starting_server(self) -> None:
|
|
53
|
+
"""Display starting server message."""
|
|
54
|
+
self.console.print("🚀 Starting fresh server instance...")
|
|
55
|
+
self.console.print("🚀 Starting Crackerjack MCP Server...")
|
|
56
|
+
self.console.print("⏳ Waiting for server to start...")
|
|
57
|
+
|
|
58
|
+
def success_panel(
|
|
59
|
+
self,
|
|
60
|
+
http_endpoint: str | None = None,
|
|
61
|
+
websocket_monitor: str | None = None,
|
|
62
|
+
process_id: int | None = None,
|
|
63
|
+
) -> None:
|
|
64
|
+
"""Display success panel with server details."""
|
|
65
|
+
content = Text()
|
|
66
|
+
content.append("✅ Server started successfully!\n", style="green bold")
|
|
67
|
+
|
|
68
|
+
if http_endpoint:
|
|
69
|
+
content.append(f"🌐 HTTP Endpoint: {http_endpoint}\n", style="cyan")
|
|
70
|
+
|
|
71
|
+
if websocket_monitor:
|
|
72
|
+
content.append(f"🔌 WebSocket Monitor: {websocket_monitor}\n", style="cyan")
|
|
73
|
+
|
|
74
|
+
if process_id:
|
|
75
|
+
content.append(f"📊 Process ID: {process_id}", style="cyan")
|
|
76
|
+
|
|
77
|
+
panel = Panel(
|
|
78
|
+
content,
|
|
79
|
+
width=self.WIDTH,
|
|
80
|
+
title="Crackerjack MCP Server",
|
|
81
|
+
style="green",
|
|
82
|
+
)
|
|
83
|
+
self.console.print(panel)
|
|
84
|
+
|
|
85
|
+
def failure_panel(self, error: str) -> None:
|
|
86
|
+
"""Display failure panel with error details."""
|
|
87
|
+
panel = Panel(
|
|
88
|
+
f"❌ Server failed to start: {error}",
|
|
89
|
+
width=self.WIDTH,
|
|
90
|
+
title="Server Error",
|
|
91
|
+
style="red",
|
|
92
|
+
)
|
|
93
|
+
self.console.print(panel)
|
|
94
|
+
|
|
95
|
+
def start_panel(
|
|
96
|
+
self,
|
|
97
|
+
project_path: Path,
|
|
98
|
+
mode: str = "STDIO",
|
|
99
|
+
http_endpoint: str | None = None,
|
|
100
|
+
websocket_port: int | None = None,
|
|
101
|
+
) -> None:
|
|
102
|
+
"""Display server start panel with configuration details."""
|
|
103
|
+
content = Text()
|
|
104
|
+
content.append("🚀 Starting Crackerjack MCP Server...\n", style="green bold")
|
|
105
|
+
content.append(f"📁 Project: {project_path.name}\n", style="cyan")
|
|
106
|
+
content.append(f"🔗 Mode: {mode}\n", style="cyan")
|
|
107
|
+
|
|
108
|
+
if http_endpoint:
|
|
109
|
+
content.append(f"🌐 HTTP: {http_endpoint}\n", style="cyan")
|
|
110
|
+
|
|
111
|
+
if websocket_port:
|
|
112
|
+
content.append(f"🔌 WebSocket: {websocket_port}", style="cyan")
|
|
113
|
+
|
|
114
|
+
panel = Panel(
|
|
115
|
+
content,
|
|
116
|
+
width=self.WIDTH,
|
|
117
|
+
title="Server Configuration",
|
|
118
|
+
style="green",
|
|
119
|
+
)
|
|
120
|
+
self.console.print(panel)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def create_server_panels(console: Console | None = None) -> ServerPanels:
|
|
124
|
+
"""Factory function to create ServerPanels instance."""
|
|
125
|
+
return ServerPanels(console)
|
|
@@ -398,7 +398,7 @@ wheels = [
|
|
|
398
398
|
|
|
399
399
|
[[package]]
|
|
400
400
|
name = "crackerjack"
|
|
401
|
-
version = "0.
|
|
401
|
+
version = "0.35.1"
|
|
402
402
|
source = { editable = "." }
|
|
403
403
|
dependencies = [
|
|
404
404
|
{ name = "aiofiles" },
|
|
@@ -2604,7 +2604,7 @@ wheels = [
|
|
|
2604
2604
|
|
|
2605
2605
|
[[package]]
|
|
2606
2606
|
name = "session-mgmt-mcp"
|
|
2607
|
-
version = "0.3.
|
|
2607
|
+
version = "0.3.8"
|
|
2608
2608
|
source = { registry = "https://pypi.org/simple" }
|
|
2609
2609
|
dependencies = [
|
|
2610
2610
|
{ name = "crackerjack" },
|
|
@@ -2622,9 +2622,9 @@ dependencies = [
|
|
|
2622
2622
|
{ name = "transformers" },
|
|
2623
2623
|
{ name = "typer" },
|
|
2624
2624
|
]
|
|
2625
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
2625
|
+
sdist = { url = "https://files.pythonhosted.org/packages/2b/01/6711452ba135bda1b1e01b45adc415ef4c19bdf4c71d2503f824d36bccbf/session_mgmt_mcp-0.3.8.tar.gz", hash = "sha256:4b36805862f433aff38378dbb6f79c87f6608687e7d54ee8daa8e52117aa75cf", size = 491559, upload-time = "2025-09-16T05:26:35.57Z" }
|
|
2626
2626
|
wheels = [
|
|
2627
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2627
|
+
{ url = "https://files.pythonhosted.org/packages/8a/bc/4c1882b677b860df936ef76d21465abf8cec8b407b40c0d58eca9f7cac8b/session_mgmt_mcp-0.3.8-py3-none-any.whl", hash = "sha256:fe6ceb05490e891fbbe3b77d7abdb85e8f48f809eb24019e239b6c2b88cf0922", size = 219059, upload-time = "2025-09-16T05:26:33.538Z" },
|
|
2628
2628
|
]
|
|
2629
2629
|
|
|
2630
2630
|
[[package]]
|
|
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
|