crackerjack 0.18.2__py3-none-any.whl → 0.45.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- crackerjack/README.md +19 -0
- crackerjack/__init__.py +96 -2
- crackerjack/__main__.py +637 -138
- crackerjack/adapters/README.md +18 -0
- crackerjack/adapters/__init__.py +39 -0
- crackerjack/adapters/_output_paths.py +167 -0
- crackerjack/adapters/_qa_adapter_base.py +309 -0
- crackerjack/adapters/_tool_adapter_base.py +706 -0
- crackerjack/adapters/ai/README.md +65 -0
- crackerjack/adapters/ai/__init__.py +5 -0
- crackerjack/adapters/ai/claude.py +853 -0
- crackerjack/adapters/complexity/README.md +53 -0
- crackerjack/adapters/complexity/__init__.py +10 -0
- crackerjack/adapters/complexity/complexipy.py +641 -0
- crackerjack/adapters/dependency/__init__.py +22 -0
- crackerjack/adapters/dependency/pip_audit.py +418 -0
- crackerjack/adapters/format/README.md +72 -0
- crackerjack/adapters/format/__init__.py +11 -0
- crackerjack/adapters/format/mdformat.py +313 -0
- crackerjack/adapters/format/ruff.py +516 -0
- crackerjack/adapters/lint/README.md +47 -0
- crackerjack/adapters/lint/__init__.py +11 -0
- crackerjack/adapters/lint/codespell.py +273 -0
- crackerjack/adapters/lsp/README.md +49 -0
- crackerjack/adapters/lsp/__init__.py +27 -0
- crackerjack/adapters/lsp/_base.py +194 -0
- crackerjack/adapters/lsp/_client.py +358 -0
- crackerjack/adapters/lsp/_manager.py +193 -0
- crackerjack/adapters/lsp/skylos.py +283 -0
- crackerjack/adapters/lsp/zuban.py +557 -0
- crackerjack/adapters/refactor/README.md +59 -0
- crackerjack/adapters/refactor/__init__.py +12 -0
- crackerjack/adapters/refactor/creosote.py +318 -0
- crackerjack/adapters/refactor/refurb.py +406 -0
- crackerjack/adapters/refactor/skylos.py +494 -0
- crackerjack/adapters/sast/README.md +132 -0
- crackerjack/adapters/sast/__init__.py +32 -0
- crackerjack/adapters/sast/_base.py +201 -0
- crackerjack/adapters/sast/bandit.py +423 -0
- crackerjack/adapters/sast/pyscn.py +405 -0
- crackerjack/adapters/sast/semgrep.py +241 -0
- crackerjack/adapters/security/README.md +111 -0
- crackerjack/adapters/security/__init__.py +17 -0
- crackerjack/adapters/security/gitleaks.py +339 -0
- crackerjack/adapters/type/README.md +52 -0
- crackerjack/adapters/type/__init__.py +12 -0
- crackerjack/adapters/type/pyrefly.py +402 -0
- crackerjack/adapters/type/ty.py +402 -0
- crackerjack/adapters/type/zuban.py +522 -0
- crackerjack/adapters/utility/README.md +51 -0
- crackerjack/adapters/utility/__init__.py +10 -0
- crackerjack/adapters/utility/checks.py +884 -0
- crackerjack/agents/README.md +264 -0
- crackerjack/agents/__init__.py +66 -0
- crackerjack/agents/architect_agent.py +238 -0
- crackerjack/agents/base.py +167 -0
- crackerjack/agents/claude_code_bridge.py +641 -0
- crackerjack/agents/coordinator.py +600 -0
- crackerjack/agents/documentation_agent.py +520 -0
- crackerjack/agents/dry_agent.py +585 -0
- crackerjack/agents/enhanced_coordinator.py +279 -0
- crackerjack/agents/enhanced_proactive_agent.py +185 -0
- crackerjack/agents/error_middleware.py +53 -0
- crackerjack/agents/formatting_agent.py +230 -0
- crackerjack/agents/helpers/__init__.py +9 -0
- crackerjack/agents/helpers/performance/__init__.py +22 -0
- crackerjack/agents/helpers/performance/performance_ast_analyzer.py +357 -0
- crackerjack/agents/helpers/performance/performance_pattern_detector.py +909 -0
- crackerjack/agents/helpers/performance/performance_recommender.py +572 -0
- crackerjack/agents/helpers/refactoring/__init__.py +22 -0
- crackerjack/agents/helpers/refactoring/code_transformer.py +536 -0
- crackerjack/agents/helpers/refactoring/complexity_analyzer.py +344 -0
- crackerjack/agents/helpers/refactoring/dead_code_detector.py +437 -0
- crackerjack/agents/helpers/test_creation/__init__.py +19 -0
- crackerjack/agents/helpers/test_creation/test_ast_analyzer.py +216 -0
- crackerjack/agents/helpers/test_creation/test_coverage_analyzer.py +643 -0
- crackerjack/agents/helpers/test_creation/test_template_generator.py +1031 -0
- crackerjack/agents/import_optimization_agent.py +1181 -0
- crackerjack/agents/performance_agent.py +325 -0
- crackerjack/agents/performance_helpers.py +205 -0
- crackerjack/agents/proactive_agent.py +55 -0
- crackerjack/agents/refactoring_agent.py +511 -0
- crackerjack/agents/refactoring_helpers.py +247 -0
- crackerjack/agents/security_agent.py +793 -0
- crackerjack/agents/semantic_agent.py +479 -0
- crackerjack/agents/semantic_helpers.py +356 -0
- crackerjack/agents/test_creation_agent.py +570 -0
- crackerjack/agents/test_specialist_agent.py +526 -0
- crackerjack/agents/tracker.py +110 -0
- crackerjack/api.py +647 -0
- crackerjack/cli/README.md +394 -0
- crackerjack/cli/__init__.py +24 -0
- crackerjack/cli/cache_handlers.py +209 -0
- crackerjack/cli/cache_handlers_enhanced.py +680 -0
- crackerjack/cli/facade.py +162 -0
- crackerjack/cli/formatting.py +13 -0
- crackerjack/cli/handlers/__init__.py +85 -0
- crackerjack/cli/handlers/advanced.py +103 -0
- crackerjack/cli/handlers/ai_features.py +62 -0
- crackerjack/cli/handlers/analytics.py +479 -0
- crackerjack/cli/handlers/changelog.py +271 -0
- crackerjack/cli/handlers/config_handlers.py +16 -0
- crackerjack/cli/handlers/coverage.py +84 -0
- crackerjack/cli/handlers/documentation.py +280 -0
- crackerjack/cli/handlers/main_handlers.py +497 -0
- crackerjack/cli/handlers/monitoring.py +371 -0
- crackerjack/cli/handlers.py +700 -0
- crackerjack/cli/interactive.py +488 -0
- crackerjack/cli/options.py +1216 -0
- crackerjack/cli/semantic_handlers.py +292 -0
- crackerjack/cli/utils.py +19 -0
- crackerjack/cli/version.py +19 -0
- crackerjack/code_cleaner.py +1307 -0
- crackerjack/config/README.md +472 -0
- crackerjack/config/__init__.py +275 -0
- crackerjack/config/global_lock_config.py +207 -0
- crackerjack/config/hooks.py +390 -0
- crackerjack/config/loader.py +239 -0
- crackerjack/config/settings.py +141 -0
- crackerjack/config/tool_commands.py +331 -0
- crackerjack/core/README.md +393 -0
- crackerjack/core/__init__.py +0 -0
- crackerjack/core/async_workflow_orchestrator.py +738 -0
- crackerjack/core/autofix_coordinator.py +282 -0
- crackerjack/core/container.py +105 -0
- crackerjack/core/enhanced_container.py +583 -0
- crackerjack/core/file_lifecycle.py +472 -0
- crackerjack/core/performance.py +244 -0
- crackerjack/core/performance_monitor.py +357 -0
- crackerjack/core/phase_coordinator.py +1227 -0
- crackerjack/core/proactive_workflow.py +267 -0
- crackerjack/core/resource_manager.py +425 -0
- crackerjack/core/retry.py +275 -0
- crackerjack/core/service_watchdog.py +601 -0
- crackerjack/core/session_coordinator.py +239 -0
- crackerjack/core/timeout_manager.py +563 -0
- crackerjack/core/websocket_lifecycle.py +410 -0
- crackerjack/core/workflow/__init__.py +21 -0
- crackerjack/core/workflow/workflow_ai_coordinator.py +863 -0
- crackerjack/core/workflow/workflow_event_orchestrator.py +1107 -0
- crackerjack/core/workflow/workflow_issue_parser.py +714 -0
- crackerjack/core/workflow/workflow_phase_executor.py +1158 -0
- crackerjack/core/workflow/workflow_security_gates.py +400 -0
- crackerjack/core/workflow_orchestrator.py +2243 -0
- crackerjack/data/README.md +11 -0
- crackerjack/data/__init__.py +8 -0
- crackerjack/data/models.py +79 -0
- crackerjack/data/repository.py +210 -0
- crackerjack/decorators/README.md +180 -0
- crackerjack/decorators/__init__.py +35 -0
- crackerjack/decorators/error_handling.py +649 -0
- crackerjack/decorators/error_handling_decorators.py +334 -0
- crackerjack/decorators/helpers.py +58 -0
- crackerjack/decorators/patterns.py +281 -0
- crackerjack/decorators/utils.py +58 -0
- crackerjack/docs/INDEX.md +11 -0
- crackerjack/docs/README.md +11 -0
- crackerjack/docs/generated/api/API_REFERENCE.md +10895 -0
- crackerjack/docs/generated/api/CLI_REFERENCE.md +109 -0
- crackerjack/docs/generated/api/CROSS_REFERENCES.md +1755 -0
- crackerjack/docs/generated/api/PROTOCOLS.md +3 -0
- crackerjack/docs/generated/api/SERVICES.md +1252 -0
- crackerjack/documentation/README.md +11 -0
- crackerjack/documentation/__init__.py +31 -0
- crackerjack/documentation/ai_templates.py +756 -0
- crackerjack/documentation/dual_output_generator.py +767 -0
- crackerjack/documentation/mkdocs_integration.py +518 -0
- crackerjack/documentation/reference_generator.py +1065 -0
- crackerjack/dynamic_config.py +678 -0
- crackerjack/errors.py +378 -0
- crackerjack/events/README.md +11 -0
- crackerjack/events/__init__.py +16 -0
- crackerjack/events/telemetry.py +175 -0
- crackerjack/events/workflow_bus.py +346 -0
- crackerjack/exceptions/README.md +301 -0
- crackerjack/exceptions/__init__.py +5 -0
- crackerjack/exceptions/config.py +4 -0
- crackerjack/exceptions/tool_execution_error.py +245 -0
- crackerjack/executors/README.md +591 -0
- crackerjack/executors/__init__.py +13 -0
- crackerjack/executors/async_hook_executor.py +938 -0
- crackerjack/executors/cached_hook_executor.py +316 -0
- crackerjack/executors/hook_executor.py +1295 -0
- crackerjack/executors/hook_lock_manager.py +708 -0
- crackerjack/executors/individual_hook_executor.py +739 -0
- crackerjack/executors/lsp_aware_hook_executor.py +349 -0
- crackerjack/executors/progress_hook_executor.py +282 -0
- crackerjack/executors/tool_proxy.py +433 -0
- crackerjack/hooks/README.md +485 -0
- crackerjack/hooks/lsp_hook.py +93 -0
- crackerjack/intelligence/README.md +557 -0
- crackerjack/intelligence/__init__.py +37 -0
- crackerjack/intelligence/adaptive_learning.py +693 -0
- crackerjack/intelligence/agent_orchestrator.py +485 -0
- crackerjack/intelligence/agent_registry.py +377 -0
- crackerjack/intelligence/agent_selector.py +439 -0
- crackerjack/intelligence/integration.py +250 -0
- crackerjack/interactive.py +719 -0
- crackerjack/managers/README.md +369 -0
- crackerjack/managers/__init__.py +11 -0
- crackerjack/managers/async_hook_manager.py +135 -0
- crackerjack/managers/hook_manager.py +585 -0
- crackerjack/managers/publish_manager.py +631 -0
- crackerjack/managers/test_command_builder.py +391 -0
- crackerjack/managers/test_executor.py +474 -0
- crackerjack/managers/test_manager.py +1357 -0
- crackerjack/managers/test_progress.py +187 -0
- crackerjack/mcp/README.md +374 -0
- crackerjack/mcp/__init__.py +0 -0
- crackerjack/mcp/cache.py +352 -0
- crackerjack/mcp/client_runner.py +121 -0
- crackerjack/mcp/context.py +802 -0
- crackerjack/mcp/dashboard.py +657 -0
- crackerjack/mcp/enhanced_progress_monitor.py +493 -0
- crackerjack/mcp/file_monitor.py +394 -0
- crackerjack/mcp/progress_components.py +607 -0
- crackerjack/mcp/progress_monitor.py +1016 -0
- crackerjack/mcp/rate_limiter.py +336 -0
- crackerjack/mcp/server.py +24 -0
- crackerjack/mcp/server_core.py +526 -0
- crackerjack/mcp/service_watchdog.py +505 -0
- crackerjack/mcp/state.py +407 -0
- crackerjack/mcp/task_manager.py +259 -0
- crackerjack/mcp/tools/README.md +27 -0
- crackerjack/mcp/tools/__init__.py +19 -0
- crackerjack/mcp/tools/core_tools.py +469 -0
- crackerjack/mcp/tools/error_analyzer.py +283 -0
- crackerjack/mcp/tools/execution_tools.py +384 -0
- crackerjack/mcp/tools/intelligence_tool_registry.py +46 -0
- crackerjack/mcp/tools/intelligence_tools.py +264 -0
- crackerjack/mcp/tools/monitoring_tools.py +628 -0
- crackerjack/mcp/tools/proactive_tools.py +367 -0
- crackerjack/mcp/tools/progress_tools.py +222 -0
- crackerjack/mcp/tools/semantic_tools.py +584 -0
- crackerjack/mcp/tools/utility_tools.py +358 -0
- crackerjack/mcp/tools/workflow_executor.py +699 -0
- crackerjack/mcp/websocket/README.md +31 -0
- crackerjack/mcp/websocket/__init__.py +14 -0
- crackerjack/mcp/websocket/app.py +54 -0
- crackerjack/mcp/websocket/endpoints.py +492 -0
- crackerjack/mcp/websocket/event_bridge.py +188 -0
- crackerjack/mcp/websocket/jobs.py +406 -0
- crackerjack/mcp/websocket/monitoring/__init__.py +25 -0
- crackerjack/mcp/websocket/monitoring/api/__init__.py +19 -0
- crackerjack/mcp/websocket/monitoring/api/dependencies.py +141 -0
- crackerjack/mcp/websocket/monitoring/api/heatmap.py +154 -0
- crackerjack/mcp/websocket/monitoring/api/intelligence.py +199 -0
- crackerjack/mcp/websocket/monitoring/api/metrics.py +203 -0
- crackerjack/mcp/websocket/monitoring/api/telemetry.py +101 -0
- crackerjack/mcp/websocket/monitoring/dashboard.py +18 -0
- crackerjack/mcp/websocket/monitoring/factory.py +109 -0
- crackerjack/mcp/websocket/monitoring/filters.py +10 -0
- crackerjack/mcp/websocket/monitoring/metrics.py +64 -0
- crackerjack/mcp/websocket/monitoring/models.py +90 -0
- crackerjack/mcp/websocket/monitoring/utils.py +171 -0
- crackerjack/mcp/websocket/monitoring/websocket_manager.py +78 -0
- crackerjack/mcp/websocket/monitoring/websockets/__init__.py +17 -0
- crackerjack/mcp/websocket/monitoring/websockets/dependencies.py +126 -0
- crackerjack/mcp/websocket/monitoring/websockets/heatmap.py +176 -0
- crackerjack/mcp/websocket/monitoring/websockets/intelligence.py +291 -0
- crackerjack/mcp/websocket/monitoring/websockets/metrics.py +291 -0
- crackerjack/mcp/websocket/monitoring_endpoints.py +21 -0
- crackerjack/mcp/websocket/server.py +174 -0
- crackerjack/mcp/websocket/websocket_handler.py +276 -0
- crackerjack/mcp/websocket_server.py +10 -0
- crackerjack/models/README.md +308 -0
- crackerjack/models/__init__.py +40 -0
- crackerjack/models/config.py +730 -0
- crackerjack/models/config_adapter.py +265 -0
- crackerjack/models/protocols.py +1535 -0
- crackerjack/models/pydantic_models.py +320 -0
- crackerjack/models/qa_config.py +145 -0
- crackerjack/models/qa_results.py +134 -0
- crackerjack/models/resource_protocols.py +299 -0
- crackerjack/models/results.py +35 -0
- crackerjack/models/semantic_models.py +258 -0
- crackerjack/models/task.py +173 -0
- crackerjack/models/test_models.py +60 -0
- crackerjack/monitoring/README.md +11 -0
- crackerjack/monitoring/__init__.py +0 -0
- crackerjack/monitoring/ai_agent_watchdog.py +405 -0
- crackerjack/monitoring/metrics_collector.py +427 -0
- crackerjack/monitoring/regression_prevention.py +580 -0
- crackerjack/monitoring/websocket_server.py +406 -0
- crackerjack/orchestration/README.md +340 -0
- crackerjack/orchestration/__init__.py +43 -0
- crackerjack/orchestration/advanced_orchestrator.py +894 -0
- crackerjack/orchestration/cache/README.md +312 -0
- crackerjack/orchestration/cache/__init__.py +37 -0
- crackerjack/orchestration/cache/memory_cache.py +338 -0
- crackerjack/orchestration/cache/tool_proxy_cache.py +340 -0
- crackerjack/orchestration/config.py +297 -0
- crackerjack/orchestration/coverage_improvement.py +180 -0
- crackerjack/orchestration/execution_strategies.py +361 -0
- crackerjack/orchestration/hook_orchestrator.py +1398 -0
- crackerjack/orchestration/strategies/README.md +401 -0
- crackerjack/orchestration/strategies/__init__.py +39 -0
- crackerjack/orchestration/strategies/adaptive_strategy.py +630 -0
- crackerjack/orchestration/strategies/parallel_strategy.py +237 -0
- crackerjack/orchestration/strategies/sequential_strategy.py +299 -0
- crackerjack/orchestration/test_progress_streamer.py +647 -0
- crackerjack/plugins/README.md +11 -0
- crackerjack/plugins/__init__.py +15 -0
- crackerjack/plugins/base.py +200 -0
- crackerjack/plugins/hooks.py +254 -0
- crackerjack/plugins/loader.py +335 -0
- crackerjack/plugins/managers.py +264 -0
- crackerjack/py313.py +191 -0
- crackerjack/security/README.md +11 -0
- crackerjack/security/__init__.py +0 -0
- crackerjack/security/audit.py +197 -0
- crackerjack/services/README.md +374 -0
- crackerjack/services/__init__.py +9 -0
- crackerjack/services/ai/README.md +295 -0
- crackerjack/services/ai/__init__.py +7 -0
- crackerjack/services/ai/advanced_optimizer.py +878 -0
- crackerjack/services/ai/contextual_ai_assistant.py +542 -0
- crackerjack/services/ai/embeddings.py +444 -0
- crackerjack/services/ai/intelligent_commit.py +328 -0
- crackerjack/services/ai/predictive_analytics.py +510 -0
- crackerjack/services/anomaly_detector.py +392 -0
- crackerjack/services/api_extractor.py +617 -0
- crackerjack/services/backup_service.py +467 -0
- crackerjack/services/bounded_status_operations.py +530 -0
- crackerjack/services/cache.py +369 -0
- crackerjack/services/changelog_automation.py +399 -0
- crackerjack/services/command_execution_service.py +305 -0
- crackerjack/services/config_integrity.py +132 -0
- crackerjack/services/config_merge.py +546 -0
- crackerjack/services/config_service.py +198 -0
- crackerjack/services/config_template.py +493 -0
- crackerjack/services/coverage_badge_service.py +173 -0
- crackerjack/services/coverage_ratchet.py +381 -0
- crackerjack/services/debug.py +733 -0
- crackerjack/services/dependency_analyzer.py +460 -0
- crackerjack/services/dependency_monitor.py +622 -0
- crackerjack/services/documentation_generator.py +493 -0
- crackerjack/services/documentation_service.py +704 -0
- crackerjack/services/enhanced_filesystem.py +497 -0
- crackerjack/services/enterprise_optimizer.py +865 -0
- crackerjack/services/error_pattern_analyzer.py +676 -0
- crackerjack/services/file_filter.py +221 -0
- crackerjack/services/file_hasher.py +149 -0
- crackerjack/services/file_io_service.py +361 -0
- crackerjack/services/file_modifier.py +615 -0
- crackerjack/services/filesystem.py +381 -0
- crackerjack/services/git.py +422 -0
- crackerjack/services/health_metrics.py +615 -0
- crackerjack/services/heatmap_generator.py +744 -0
- crackerjack/services/incremental_executor.py +380 -0
- crackerjack/services/initialization.py +823 -0
- crackerjack/services/input_validator.py +668 -0
- crackerjack/services/intelligent_commit.py +327 -0
- crackerjack/services/log_manager.py +289 -0
- crackerjack/services/logging.py +228 -0
- crackerjack/services/lsp_client.py +628 -0
- crackerjack/services/memory_optimizer.py +414 -0
- crackerjack/services/metrics.py +587 -0
- crackerjack/services/monitoring/README.md +30 -0
- crackerjack/services/monitoring/__init__.py +9 -0
- crackerjack/services/monitoring/dependency_monitor.py +678 -0
- crackerjack/services/monitoring/error_pattern_analyzer.py +676 -0
- crackerjack/services/monitoring/health_metrics.py +716 -0
- crackerjack/services/monitoring/metrics.py +587 -0
- crackerjack/services/monitoring/performance_benchmarks.py +410 -0
- crackerjack/services/monitoring/performance_cache.py +388 -0
- crackerjack/services/monitoring/performance_monitor.py +569 -0
- crackerjack/services/parallel_executor.py +527 -0
- crackerjack/services/pattern_cache.py +333 -0
- crackerjack/services/pattern_detector.py +478 -0
- crackerjack/services/patterns/__init__.py +142 -0
- crackerjack/services/patterns/agents.py +107 -0
- crackerjack/services/patterns/code/__init__.py +15 -0
- crackerjack/services/patterns/code/detection.py +118 -0
- crackerjack/services/patterns/code/imports.py +107 -0
- crackerjack/services/patterns/code/paths.py +159 -0
- crackerjack/services/patterns/code/performance.py +119 -0
- crackerjack/services/patterns/code/replacement.py +36 -0
- crackerjack/services/patterns/core.py +212 -0
- crackerjack/services/patterns/documentation/__init__.py +14 -0
- crackerjack/services/patterns/documentation/badges_markdown.py +96 -0
- crackerjack/services/patterns/documentation/comments_blocks.py +83 -0
- crackerjack/services/patterns/documentation/docstrings.py +89 -0
- crackerjack/services/patterns/formatting.py +226 -0
- crackerjack/services/patterns/operations.py +339 -0
- crackerjack/services/patterns/security/__init__.py +23 -0
- crackerjack/services/patterns/security/code_injection.py +122 -0
- crackerjack/services/patterns/security/credentials.py +190 -0
- crackerjack/services/patterns/security/path_traversal.py +221 -0
- crackerjack/services/patterns/security/unsafe_operations.py +216 -0
- crackerjack/services/patterns/templates.py +62 -0
- crackerjack/services/patterns/testing/__init__.py +18 -0
- crackerjack/services/patterns/testing/error_patterns.py +107 -0
- crackerjack/services/patterns/testing/pytest_output.py +126 -0
- crackerjack/services/patterns/tool_output/__init__.py +16 -0
- crackerjack/services/patterns/tool_output/bandit.py +72 -0
- crackerjack/services/patterns/tool_output/other.py +97 -0
- crackerjack/services/patterns/tool_output/pyright.py +67 -0
- crackerjack/services/patterns/tool_output/ruff.py +44 -0
- crackerjack/services/patterns/url_sanitization.py +114 -0
- crackerjack/services/patterns/utilities.py +42 -0
- crackerjack/services/patterns/utils.py +339 -0
- crackerjack/services/patterns/validation.py +46 -0
- crackerjack/services/patterns/versioning.py +62 -0
- crackerjack/services/predictive_analytics.py +523 -0
- crackerjack/services/profiler.py +280 -0
- crackerjack/services/quality/README.md +415 -0
- crackerjack/services/quality/__init__.py +11 -0
- crackerjack/services/quality/anomaly_detector.py +392 -0
- crackerjack/services/quality/pattern_cache.py +333 -0
- crackerjack/services/quality/pattern_detector.py +479 -0
- crackerjack/services/quality/qa_orchestrator.py +491 -0
- crackerjack/services/quality/quality_baseline.py +395 -0
- crackerjack/services/quality/quality_baseline_enhanced.py +649 -0
- crackerjack/services/quality/quality_intelligence.py +949 -0
- crackerjack/services/regex_patterns.py +58 -0
- crackerjack/services/regex_utils.py +483 -0
- crackerjack/services/secure_path_utils.py +524 -0
- crackerjack/services/secure_status_formatter.py +450 -0
- crackerjack/services/secure_subprocess.py +635 -0
- crackerjack/services/security.py +239 -0
- crackerjack/services/security_logger.py +495 -0
- crackerjack/services/server_manager.py +411 -0
- crackerjack/services/smart_scheduling.py +167 -0
- crackerjack/services/status_authentication.py +460 -0
- crackerjack/services/status_security_manager.py +315 -0
- crackerjack/services/terminal_utils.py +0 -0
- crackerjack/services/thread_safe_status_collector.py +441 -0
- crackerjack/services/tool_filter.py +368 -0
- crackerjack/services/tool_version_service.py +43 -0
- crackerjack/services/unified_config.py +115 -0
- crackerjack/services/validation_rate_limiter.py +220 -0
- crackerjack/services/vector_store.py +689 -0
- crackerjack/services/version_analyzer.py +461 -0
- crackerjack/services/version_checker.py +223 -0
- crackerjack/services/websocket_resource_limiter.py +438 -0
- crackerjack/services/zuban_lsp_service.py +391 -0
- crackerjack/slash_commands/README.md +11 -0
- crackerjack/slash_commands/__init__.py +59 -0
- crackerjack/slash_commands/init.md +112 -0
- crackerjack/slash_commands/run.md +197 -0
- crackerjack/slash_commands/status.md +127 -0
- crackerjack/tools/README.md +11 -0
- crackerjack/tools/__init__.py +30 -0
- crackerjack/tools/_git_utils.py +105 -0
- crackerjack/tools/check_added_large_files.py +139 -0
- crackerjack/tools/check_ast.py +105 -0
- crackerjack/tools/check_json.py +103 -0
- crackerjack/tools/check_jsonschema.py +297 -0
- crackerjack/tools/check_toml.py +103 -0
- crackerjack/tools/check_yaml.py +110 -0
- crackerjack/tools/codespell_wrapper.py +72 -0
- crackerjack/tools/end_of_file_fixer.py +202 -0
- crackerjack/tools/format_json.py +128 -0
- crackerjack/tools/mdformat_wrapper.py +114 -0
- crackerjack/tools/trailing_whitespace.py +198 -0
- crackerjack/tools/validate_input_validator_patterns.py +236 -0
- crackerjack/tools/validate_regex_patterns.py +188 -0
- crackerjack/ui/README.md +11 -0
- crackerjack/ui/__init__.py +1 -0
- crackerjack/ui/dashboard_renderer.py +28 -0
- crackerjack/ui/templates/README.md +11 -0
- crackerjack/utils/console_utils.py +13 -0
- crackerjack/utils/dependency_guard.py +230 -0
- crackerjack/utils/retry_utils.py +275 -0
- crackerjack/workflows/README.md +590 -0
- crackerjack/workflows/__init__.py +46 -0
- crackerjack/workflows/actions.py +811 -0
- crackerjack/workflows/auto_fix.py +444 -0
- crackerjack/workflows/container_builder.py +499 -0
- crackerjack/workflows/definitions.py +443 -0
- crackerjack/workflows/engine.py +177 -0
- crackerjack/workflows/event_bridge.py +242 -0
- crackerjack-0.45.2.dist-info/METADATA +1678 -0
- crackerjack-0.45.2.dist-info/RECORD +478 -0
- {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/WHEEL +1 -1
- crackerjack-0.45.2.dist-info/entry_points.txt +2 -0
- crackerjack/.gitignore +0 -14
- crackerjack/.libcst.codemod.yaml +0 -18
- crackerjack/.pdm.toml +0 -1
- crackerjack/.pre-commit-config.yaml +0 -91
- crackerjack/.pytest_cache/.gitignore +0 -2
- crackerjack/.pytest_cache/CACHEDIR.TAG +0 -4
- crackerjack/.pytest_cache/README.md +0 -8
- crackerjack/.pytest_cache/v/cache/nodeids +0 -1
- crackerjack/.pytest_cache/v/cache/stepwise +0 -1
- crackerjack/.ruff_cache/.gitignore +0 -1
- crackerjack/.ruff_cache/0.1.11/3256171999636029978 +0 -0
- crackerjack/.ruff_cache/0.1.14/602324811142551221 +0 -0
- crackerjack/.ruff_cache/0.1.4/10355199064880463147 +0 -0
- crackerjack/.ruff_cache/0.1.6/15140459877605758699 +0 -0
- crackerjack/.ruff_cache/0.1.7/1790508110482614856 +0 -0
- crackerjack/.ruff_cache/0.1.9/17041001205004563469 +0 -0
- crackerjack/.ruff_cache/0.11.2/4070660268492669020 +0 -0
- crackerjack/.ruff_cache/0.11.3/9818742842212983150 +0 -0
- crackerjack/.ruff_cache/0.11.4/9818742842212983150 +0 -0
- crackerjack/.ruff_cache/0.11.6/3557596832929915217 +0 -0
- crackerjack/.ruff_cache/0.11.7/10386934055395314831 +0 -0
- crackerjack/.ruff_cache/0.11.7/3557596832929915217 +0 -0
- crackerjack/.ruff_cache/0.11.8/530407680854991027 +0 -0
- crackerjack/.ruff_cache/0.2.0/10047773857155985907 +0 -0
- crackerjack/.ruff_cache/0.2.1/8522267973936635051 +0 -0
- crackerjack/.ruff_cache/0.2.2/18053836298936336950 +0 -0
- crackerjack/.ruff_cache/0.3.0/12548816621480535786 +0 -0
- crackerjack/.ruff_cache/0.3.3/11081883392474770722 +0 -0
- crackerjack/.ruff_cache/0.3.4/676973378459347183 +0 -0
- crackerjack/.ruff_cache/0.3.5/16311176246009842383 +0 -0
- crackerjack/.ruff_cache/0.5.7/1493622539551733492 +0 -0
- crackerjack/.ruff_cache/0.5.7/6231957614044513175 +0 -0
- crackerjack/.ruff_cache/0.5.7/9932762556785938009 +0 -0
- crackerjack/.ruff_cache/0.6.0/11982804814124138945 +0 -0
- crackerjack/.ruff_cache/0.6.0/12055761203849489982 +0 -0
- crackerjack/.ruff_cache/0.6.2/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.4/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.5/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.7/3657366982708166874 +0 -0
- crackerjack/.ruff_cache/0.6.9/285614542852677309 +0 -0
- crackerjack/.ruff_cache/0.7.1/1024065805990144819 +0 -0
- crackerjack/.ruff_cache/0.7.1/285614542852677309 +0 -0
- crackerjack/.ruff_cache/0.7.3/16061516852537040135 +0 -0
- crackerjack/.ruff_cache/0.8.4/16354268377385700367 +0 -0
- crackerjack/.ruff_cache/0.9.10/12813592349865671909 +0 -0
- crackerjack/.ruff_cache/0.9.10/923908772239632759 +0 -0
- crackerjack/.ruff_cache/0.9.3/13948373885254993391 +0 -0
- crackerjack/.ruff_cache/0.9.9/12813592349865671909 +0 -0
- crackerjack/.ruff_cache/0.9.9/8843823720003377982 +0 -0
- crackerjack/.ruff_cache/CACHEDIR.TAG +0 -1
- crackerjack/crackerjack.py +0 -855
- crackerjack/pyproject.toml +0 -214
- crackerjack-0.18.2.dist-info/METADATA +0 -420
- crackerjack-0.18.2.dist-info/RECORD +0 -59
- crackerjack-0.18.2.dist-info/entry_points.txt +0 -4
- {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
> Crackerjack Docs: [Main](<../../README.md>) | [CLAUDE.md](../../docs/guides/CLAUDE.md) | [Config](<./README.md>)
|
|
2
|
+
|
|
3
|
+
# Config
|
|
4
|
+
|
|
5
|
+
Configuration management using ACB Settings with YAML-based configuration, type validation, and dependency injection.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The config package provides centralized configuration management for Crackerjack using the ACB Settings framework. Configuration is loaded from YAML files with a priority system, validated using Pydantic models, and integrated with the dependency injection system for seamless access throughout the application.
|
|
10
|
+
|
|
11
|
+
## Core Components
|
|
12
|
+
|
|
13
|
+
- **settings.py**: ACB Settings definitions with Pydantic validation
|
|
14
|
+
- **loader.py**: Configuration loading and merging logic
|
|
15
|
+
- **hooks.py**: Hook definitions and metadata configuration
|
|
16
|
+
- **tool_commands.py**: Tool command definitions and execution parameters
|
|
17
|
+
- **global_lock_config.py**: Global lock configuration for session management
|
|
18
|
+
|
|
19
|
+
## Configuration Architecture
|
|
20
|
+
|
|
21
|
+
### File Hierarchy
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
settings/
|
|
25
|
+
├── crackerjack.yaml # Base configuration (committed to git)
|
|
26
|
+
└── local.yaml # Local overrides (gitignored, for development)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Priority Order
|
|
30
|
+
|
|
31
|
+
Configuration is loaded with the following priority (highest to lowest):
|
|
32
|
+
|
|
33
|
+
1. **`settings/local.yaml`** — Local developer overrides (gitignored)
|
|
34
|
+
1. **`settings/crackerjack.yaml`** — Base project configuration
|
|
35
|
+
1. **Default values** in `CrackerjackSettings` class definitions
|
|
36
|
+
|
|
37
|
+
### Loading Modes
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from crackerjack.config import CrackerjackSettings
|
|
41
|
+
from acb.depends import depends
|
|
42
|
+
|
|
43
|
+
# Option 1: Load directly (synchronous)
|
|
44
|
+
settings = CrackerjackSettings.load()
|
|
45
|
+
|
|
46
|
+
# Option 2: Get from dependency injection (recommended)
|
|
47
|
+
settings = depends.get(CrackerjackSettings)
|
|
48
|
+
|
|
49
|
+
# Option 3: Load asynchronously (for runtime use)
|
|
50
|
+
settings = await CrackerjackSettings.load_async()
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Settings Structure
|
|
54
|
+
|
|
55
|
+
### Main Settings Class
|
|
56
|
+
|
|
57
|
+
The `CrackerjackSettings` class aggregates all configuration categories:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
class CrackerjackSettings(Settings):
|
|
61
|
+
console: ConsoleSettings
|
|
62
|
+
cleaning: CleaningSettings
|
|
63
|
+
hooks: HookSettings
|
|
64
|
+
testing: TestSettings
|
|
65
|
+
publishing: PublishSettings
|
|
66
|
+
git: GitSettings
|
|
67
|
+
ai: AISettings
|
|
68
|
+
execution: ExecutionSettings
|
|
69
|
+
progress: ProgressSettings
|
|
70
|
+
cleanup: CleanupSettings
|
|
71
|
+
advanced: AdvancedSettings
|
|
72
|
+
mcp_server: MCPServerSettings
|
|
73
|
+
zuban_lsp: ZubanLSPSettings
|
|
74
|
+
global_lock: GlobalLockSettings
|
|
75
|
+
|
|
76
|
+
# Orchestration settings
|
|
77
|
+
enable_orchestration: bool = True
|
|
78
|
+
orchestration_mode: str = "acb"
|
|
79
|
+
enable_caching: bool = True
|
|
80
|
+
cache_backend: str = "memory"
|
|
81
|
+
cache_ttl: int = 3600
|
|
82
|
+
max_parallel_hooks: int = 4
|
|
83
|
+
default_timeout: int = 600
|
|
84
|
+
# ... and more
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Configuration Categories
|
|
88
|
+
|
|
89
|
+
#### Console Settings
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
class ConsoleSettings(Settings):
|
|
93
|
+
width: int = 70 # Console output width
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Hook Settings
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
class HookSettings(Settings):
|
|
100
|
+
skip_hooks: bool = False
|
|
101
|
+
update_precommit: bool = False
|
|
102
|
+
experimental_hooks: bool = False
|
|
103
|
+
enable_pyrefly: bool = False
|
|
104
|
+
enable_ty: bool = False
|
|
105
|
+
enable_lsp_optimization: bool = False
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### Test Settings
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
class TestSettings(Settings):
|
|
112
|
+
test: bool = False
|
|
113
|
+
benchmark: bool = False
|
|
114
|
+
test_workers: int = 0 # 0 = auto-detect
|
|
115
|
+
test_timeout: int = 0
|
|
116
|
+
auto_detect_workers: bool = True
|
|
117
|
+
max_workers: int = 8
|
|
118
|
+
min_workers: int = 2
|
|
119
|
+
memory_per_worker_gb: float = 2.0
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### AI Settings
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
class AISettings(Settings):
|
|
126
|
+
ai_agent: bool = False
|
|
127
|
+
start_mcp_server: bool = False
|
|
128
|
+
max_iterations: int = 5
|
|
129
|
+
autofix: bool = True
|
|
130
|
+
ai_agent_autofix: bool = False
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### MCP Server Settings
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
class MCPServerSettings(Settings):
|
|
137
|
+
http_port: int = 8676
|
|
138
|
+
http_host: str = "127.0.0.1"
|
|
139
|
+
websocket_port: int = 8675
|
|
140
|
+
http_enabled: bool = False
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Global Lock Settings
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
class GlobalLockSettings(Settings):
|
|
147
|
+
enabled: bool = True
|
|
148
|
+
timeout_seconds: float = 600.0
|
|
149
|
+
stale_lock_hours: float = 2.0
|
|
150
|
+
lock_directory: Path = Path.home() / ".crackerjack" / "locks"
|
|
151
|
+
session_heartbeat_interval: float = 30.0
|
|
152
|
+
max_retry_attempts: int = 3
|
|
153
|
+
retry_delay_seconds: float = 5.0
|
|
154
|
+
enable_lock_monitoring: bool = True
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Usage Examples
|
|
158
|
+
|
|
159
|
+
### Accessing Settings
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
from acb.depends import depends, Inject
|
|
163
|
+
from crackerjack.config import CrackerjackSettings
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
@depends.inject
|
|
167
|
+
def my_function(settings: Inject[CrackerjackSettings] = None) -> None:
|
|
168
|
+
# Access nested settings
|
|
169
|
+
if settings.testing.auto_detect_workers:
|
|
170
|
+
workers = calculate_workers(settings.testing.max_workers)
|
|
171
|
+
|
|
172
|
+
# Access top-level settings
|
|
173
|
+
if settings.enable_caching:
|
|
174
|
+
setup_cache(ttl=settings.cache_ttl)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Creating Local Overrides
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
# settings/local.yaml (gitignored)
|
|
181
|
+
|
|
182
|
+
# Development overrides
|
|
183
|
+
execution:
|
|
184
|
+
verbose: true
|
|
185
|
+
debug: true
|
|
186
|
+
|
|
187
|
+
testing:
|
|
188
|
+
test_workers: 4
|
|
189
|
+
max_workers: 8
|
|
190
|
+
|
|
191
|
+
ai:
|
|
192
|
+
ai_agent: true
|
|
193
|
+
max_iterations: 10
|
|
194
|
+
|
|
195
|
+
mcp_server:
|
|
196
|
+
websocket_port: 8675
|
|
197
|
+
http_enabled: true
|
|
198
|
+
|
|
199
|
+
hooks:
|
|
200
|
+
experimental_hooks: true
|
|
201
|
+
enable_lsp_optimization: true
|
|
202
|
+
|
|
203
|
+
# Orchestration tuning
|
|
204
|
+
max_parallel_hooks: 8
|
|
205
|
+
cache_ttl: 7200
|
|
206
|
+
log_cache_stats: true
|
|
207
|
+
log_execution_timing: true
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Hook Configuration
|
|
211
|
+
|
|
212
|
+
Hooks are defined in `hooks.py` with metadata for orchestration:
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
from crackerjack.config.hooks import HookDefinition, HookStage, SecurityLevel
|
|
216
|
+
|
|
217
|
+
hook = HookDefinition(
|
|
218
|
+
name="ruff",
|
|
219
|
+
command=["ruff", "check", "--fix"],
|
|
220
|
+
timeout=45,
|
|
221
|
+
stage=HookStage.FAST,
|
|
222
|
+
dependencies=[],
|
|
223
|
+
manual_stage=False,
|
|
224
|
+
security_level=SecurityLevel.MEDIUM,
|
|
225
|
+
use_precommit_legacy=False,
|
|
226
|
+
accepts_file_paths=True,
|
|
227
|
+
)
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Tool Commands
|
|
231
|
+
|
|
232
|
+
Tool commands define execution parameters:
|
|
233
|
+
|
|
234
|
+
```python
|
|
235
|
+
from crackerjack.config.tool_commands import ToolCommand
|
|
236
|
+
|
|
237
|
+
command = ToolCommand(
|
|
238
|
+
name="ruff",
|
|
239
|
+
executable="ruff",
|
|
240
|
+
args=["check", "--fix"],
|
|
241
|
+
timeout=60,
|
|
242
|
+
requires_files=True,
|
|
243
|
+
output_format="json",
|
|
244
|
+
)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Hook Stages
|
|
248
|
+
|
|
249
|
+
Crackerjack uses a two-stage hook system:
|
|
250
|
+
|
|
251
|
+
### Fast Stage (~5s)
|
|
252
|
+
|
|
253
|
+
Essential checks for rapid feedback:
|
|
254
|
+
|
|
255
|
+
```yaml
|
|
256
|
+
hooks:
|
|
257
|
+
- ruff (format + lint)
|
|
258
|
+
- trailing-whitespace
|
|
259
|
+
- end-of-file-fixer
|
|
260
|
+
- gitleaks (secret detection)
|
|
261
|
+
- codespell (spelling)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Comprehensive Stage (~30s)
|
|
265
|
+
|
|
266
|
+
Thorough static analysis:
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
hooks:
|
|
270
|
+
- zuban (type checking)
|
|
271
|
+
- bandit/semgrep (security)
|
|
272
|
+
- skylos (dead code)
|
|
273
|
+
- creosote (unused deps)
|
|
274
|
+
- complexipy (complexity ≤15)
|
|
275
|
+
- refurb (modern patterns)
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Configuration Best Practices
|
|
279
|
+
|
|
280
|
+
1. **Use settings/local.yaml for Development**
|
|
281
|
+
|
|
282
|
+
- Never commit local.yaml to git
|
|
283
|
+
- Override defaults for your workflow
|
|
284
|
+
- Test different configurations
|
|
285
|
+
|
|
286
|
+
1. **Keep Base Configuration Minimal**
|
|
287
|
+
|
|
288
|
+
- settings/crackerjack.yaml should have sane defaults
|
|
289
|
+
- Document why non-obvious values are chosen
|
|
290
|
+
- Use comments to explain complex settings
|
|
291
|
+
|
|
292
|
+
1. **Validate Configuration**
|
|
293
|
+
|
|
294
|
+
- Pydantic provides automatic validation
|
|
295
|
+
- Add custom validators for business rules
|
|
296
|
+
- Use type hints for all settings
|
|
297
|
+
|
|
298
|
+
1. **Access via Dependency Injection**
|
|
299
|
+
|
|
300
|
+
- Use `Inject[CrackerjackSettings]` in functions
|
|
301
|
+
- Avoid `Settings.load()` in business logic
|
|
302
|
+
- Let DI container manage lifecycle
|
|
303
|
+
|
|
304
|
+
1. **Organize by Domain**
|
|
305
|
+
|
|
306
|
+
- Group related settings in sub-classes
|
|
307
|
+
- Use clear, descriptive names
|
|
308
|
+
- Follow the existing pattern
|
|
309
|
+
|
|
310
|
+
## Common Configuration Patterns
|
|
311
|
+
|
|
312
|
+
### Enable AI Auto-Fixing
|
|
313
|
+
|
|
314
|
+
```yaml
|
|
315
|
+
# settings/local.yaml
|
|
316
|
+
ai:
|
|
317
|
+
ai_agent: true
|
|
318
|
+
autofix: true
|
|
319
|
+
max_iterations: 10
|
|
320
|
+
|
|
321
|
+
execution:
|
|
322
|
+
verbose: true # See agent decisions
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Fast Iteration Mode
|
|
326
|
+
|
|
327
|
+
```yaml
|
|
328
|
+
# settings/local.yaml
|
|
329
|
+
hooks:
|
|
330
|
+
skip_hooks: false # Run fast hooks
|
|
331
|
+
|
|
332
|
+
execution:
|
|
333
|
+
verbose: false # Quiet output
|
|
334
|
+
|
|
335
|
+
testing:
|
|
336
|
+
test_workers: -2 # Half cores for faster cycles
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### CI/Production Mode
|
|
340
|
+
|
|
341
|
+
```yaml
|
|
342
|
+
# settings/crackerjack.yaml
|
|
343
|
+
testing:
|
|
344
|
+
test_workers: 0 # Auto-detect
|
|
345
|
+
test_timeout: 300
|
|
346
|
+
auto_detect_workers: true
|
|
347
|
+
|
|
348
|
+
hooks:
|
|
349
|
+
skip_hooks: false
|
|
350
|
+
experimental_hooks: false
|
|
351
|
+
|
|
352
|
+
execution:
|
|
353
|
+
verbose: false
|
|
354
|
+
async_mode: true
|
|
355
|
+
|
|
356
|
+
orchestration_mode: "acb"
|
|
357
|
+
enable_caching: true
|
|
358
|
+
max_parallel_hooks: 11
|
|
359
|
+
stop_on_critical_failure: true
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Environment Variables
|
|
363
|
+
|
|
364
|
+
Some settings can be overridden with environment variables:
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
# Disable auto-worker detection
|
|
368
|
+
export CRACKERJACK_DISABLE_AUTO_WORKERS=1
|
|
369
|
+
|
|
370
|
+
# Override MCP port
|
|
371
|
+
export CRACKERJACK_MCP_PORT=8675
|
|
372
|
+
|
|
373
|
+
# Enable verbose logging
|
|
374
|
+
export CRACKERJACK_VERBOSE=1
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
## Validation
|
|
378
|
+
|
|
379
|
+
Settings are validated using Pydantic:
|
|
380
|
+
|
|
381
|
+
```python
|
|
382
|
+
from pydantic import field_validator, model_validator
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
class TestSettings(Settings):
|
|
386
|
+
test_workers: int = 0
|
|
387
|
+
|
|
388
|
+
@field_validator("test_workers")
|
|
389
|
+
@classmethod
|
|
390
|
+
def validate_workers(cls, v: int) -> int:
|
|
391
|
+
if v < -8 or v > 64:
|
|
392
|
+
raise ValueError("test_workers must be between -8 and 64")
|
|
393
|
+
return v
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## Migration from Legacy Config
|
|
397
|
+
|
|
398
|
+
Old configuration methods are deprecated:
|
|
399
|
+
|
|
400
|
+
```python
|
|
401
|
+
# ❌ Old approach (deprecated)
|
|
402
|
+
from crackerjack.config import get_config
|
|
403
|
+
|
|
404
|
+
config = get_config()
|
|
405
|
+
|
|
406
|
+
# ✅ New approach (ACB Settings)
|
|
407
|
+
from acb.depends import depends, Inject
|
|
408
|
+
from crackerjack.config import CrackerjackSettings
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
@depends.inject
|
|
412
|
+
def my_func(settings: Inject[CrackerjackSettings] = None):
|
|
413
|
+
# Use settings here
|
|
414
|
+
pass
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## Troubleshooting
|
|
418
|
+
|
|
419
|
+
### Configuration Not Loading
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
# Check if settings files exist
|
|
423
|
+
ls -la settings/
|
|
424
|
+
|
|
425
|
+
# Verify YAML syntax
|
|
426
|
+
python -c "import yaml; yaml.safe_load(open('settings/crackerjack.yaml'))"
|
|
427
|
+
|
|
428
|
+
# Enable debug logging
|
|
429
|
+
python -m crackerjack --debug
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Settings Not Applied
|
|
433
|
+
|
|
434
|
+
```python
|
|
435
|
+
# Verify DI container has settings
|
|
436
|
+
from acb.depends import depends
|
|
437
|
+
from crackerjack.config import CrackerjackSettings
|
|
438
|
+
|
|
439
|
+
settings = depends.get(CrackerjackSettings)
|
|
440
|
+
print(settings.model_dump_json(indent=2))
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Unknown Fields Warning
|
|
444
|
+
|
|
445
|
+
ACB Settings silently ignores unknown fields in YAML files. Check for typos:
|
|
446
|
+
|
|
447
|
+
```yaml
|
|
448
|
+
# ❌ Will be ignored (typo)
|
|
449
|
+
tesing:
|
|
450
|
+
test_workers: 4
|
|
451
|
+
|
|
452
|
+
# ✅ Correct
|
|
453
|
+
testing:
|
|
454
|
+
test_workers: 4
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
## Related
|
|
458
|
+
|
|
459
|
+
- [CLI](<../cli/README.md>) — CLI uses configuration for option defaults
|
|
460
|
+
- [Services](<../services/README.md>) — Services access configuration via DI
|
|
461
|
+
- [Managers](<../managers/README.md>) — Managers configure orchestration
|
|
462
|
+
- [Main README](<../../README.md>) — Configuration examples
|
|
463
|
+
- [CLAUDE.md](../../docs/guides/CLAUDE.md) — ACB Settings integration overview
|
|
464
|
+
|
|
465
|
+
## Future Enhancements
|
|
466
|
+
|
|
467
|
+
- [ ] Configuration validation UI/CLI command
|
|
468
|
+
- [ ] Configuration migration tool for version upgrades
|
|
469
|
+
- [ ] Configuration profiles (dev, test, prod)
|
|
470
|
+
- [ ] Remote configuration support
|
|
471
|
+
- [ ] Configuration change monitoring and reload
|
|
472
|
+
- [ ] Schema generation for IDE auto-completion
|