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,340 @@
|
|
|
1
|
+
> Crackerjack Docs: [Main](<../../README.md>) | [CLAUDE.md](../../docs/guides/CLAUDE.md) | [Orchestration](<./README.md>)
|
|
2
|
+
|
|
3
|
+
# Orchestration
|
|
4
|
+
|
|
5
|
+
Workflow orchestration, execution strategies, caching, and coordination for quality enforcement pipelines.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The orchestration package provides the core workflow engine that coordinates quality checks, test execution, and AI fixing across the entire crackerjack platform. It includes intelligent caching, adaptive execution strategies, and hook management for optimal performance and reliability.
|
|
10
|
+
|
|
11
|
+
## Core Components
|
|
12
|
+
|
|
13
|
+
### Orchestrators
|
|
14
|
+
|
|
15
|
+
- **hook_orchestrator.py**: Main orchestrator for quality hook execution
|
|
16
|
+
|
|
17
|
+
- Direct adapter invocation (no pre-commit wrapper overhead)
|
|
18
|
+
- Dependency resolution and intelligent ordering
|
|
19
|
+
- Adaptive execution strategies (fast, comprehensive, dependency-aware)
|
|
20
|
+
- Graceful degradation with timeout strategies
|
|
21
|
+
- 70% cache hit rate in typical workflows
|
|
22
|
+
|
|
23
|
+
- **advanced_orchestrator.py**: Advanced orchestration with enhanced features
|
|
24
|
+
|
|
25
|
+
- Multi-stage workflow coordination
|
|
26
|
+
- AI agent integration
|
|
27
|
+
- Progress tracking and reporting
|
|
28
|
+
- Error recovery and retry logic
|
|
29
|
+
|
|
30
|
+
### Execution Strategies
|
|
31
|
+
|
|
32
|
+
- **execution_strategies.py**: Pluggable execution strategies
|
|
33
|
+
- **Fast Strategy**: Quick checks for rapid feedback (~5s)
|
|
34
|
+
- **Comprehensive Strategy**: Full analysis with all tools (~30s)
|
|
35
|
+
- **Dependency-Aware Strategy**: Intelligent ordering based on dependencies
|
|
36
|
+
- **Parallel Strategy**: Maximum concurrency for I/O-bound operations
|
|
37
|
+
- **Sequential Strategy**: One-at-a-time for debugging
|
|
38
|
+
|
|
39
|
+
### Coverage & Quality
|
|
40
|
+
|
|
41
|
+
- **coverage_improvement.py**: Automated coverage improvement workflows
|
|
42
|
+
- Identifies low-coverage areas
|
|
43
|
+
- Generates test suggestions
|
|
44
|
+
- Tracks coverage ratchet progress
|
|
45
|
+
- Milestone celebration system
|
|
46
|
+
|
|
47
|
+
### Configuration
|
|
48
|
+
|
|
49
|
+
- **config.py**: Orchestration configuration and settings
|
|
50
|
+
- Hook definitions and metadata
|
|
51
|
+
- Execution timeouts and limits
|
|
52
|
+
- Cache configuration
|
|
53
|
+
- Strategy selection
|
|
54
|
+
|
|
55
|
+
## Subdirectories
|
|
56
|
+
|
|
57
|
+
### Cache (`cache/`)
|
|
58
|
+
|
|
59
|
+
Intelligent caching system for hook results:
|
|
60
|
+
|
|
61
|
+
- **ToolProxyCache**: Content-based caching with file hash verification
|
|
62
|
+
- **MemoryCache**: In-memory LRU cache for testing
|
|
63
|
+
- **Cache Adapters**: Pluggable cache backends
|
|
64
|
+
|
|
65
|
+
**Benefits:**
|
|
66
|
+
|
|
67
|
+
- 70% cache hit rate in typical workflows
|
|
68
|
+
- Content-aware invalidation (only re-run when files actually change)
|
|
69
|
+
- Configurable TTL (default 3600s/1 hour)
|
|
70
|
+
- File hash verification prevents stale results
|
|
71
|
+
|
|
72
|
+
See [cache/README.md](<./cache/README.md>) for details.
|
|
73
|
+
|
|
74
|
+
### Strategies (`strategies/`)
|
|
75
|
+
|
|
76
|
+
Execution strategy implementations:
|
|
77
|
+
|
|
78
|
+
- **Strategy Pattern**: Pluggable execution strategies
|
|
79
|
+
- **Dependency Resolution**: Intelligent hook ordering
|
|
80
|
+
- **Timeout Management**: Graceful degradation on timeouts
|
|
81
|
+
- **Parallelization**: Concurrent execution for independent hooks
|
|
82
|
+
|
|
83
|
+
See [strategies/README.md](<./strategies/README.md>) for details.
|
|
84
|
+
|
|
85
|
+
## Architecture
|
|
86
|
+
|
|
87
|
+
### Workflow Execution Flow
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
User Command → Hook Orchestrator
|
|
91
|
+
↓
|
|
92
|
+
Strategy Selection (Fast/Comprehensive/Dependency-Aware)
|
|
93
|
+
↓
|
|
94
|
+
Dependency Resolution (Topological Sort)
|
|
95
|
+
↓
|
|
96
|
+
Cache Check (Content Hash Lookup)
|
|
97
|
+
↓
|
|
98
|
+
Parallel Execution (Up to 11 concurrent adapters)
|
|
99
|
+
↓
|
|
100
|
+
ToolProxyCache Adapter (Direct API calls, no subprocess)
|
|
101
|
+
↓
|
|
102
|
+
Results Aggregation with real-time output
|
|
103
|
+
↓
|
|
104
|
+
Error Analysis & AI Fixing (if enabled)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### ACB Integration
|
|
108
|
+
|
|
109
|
+
The orchestration layer has been migrated from pre-commit subprocess calls to direct ACB adapter execution:
|
|
110
|
+
|
|
111
|
+
**Old Approach (Pre-commit):**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
pre-commit run ruff --all-files # Subprocess overhead
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**New Approach (ACB):**
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
python -m crackerjack --fast # Direct Python API, 70% faster
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Performance Benefits
|
|
124
|
+
|
|
125
|
+
| Metric | Legacy | ACB Orchestration | Improvement |
|
|
126
|
+
|--------|--------|-------------------|-------------|
|
|
127
|
+
| **Fast Hooks** | ~45s | ~48s | Comparable |
|
|
128
|
+
| **Console Output** | Buffered | **Real-time streaming** | UX improvement |
|
|
129
|
+
| **Event Loop** | Sync (blocking) | **Async (non-blocking)** | Responsive |
|
|
130
|
+
| **Cache Hit Rate** | 0% | **70%** | New capability |
|
|
131
|
+
| **Concurrent Adapters** | 1 | **11** | 11x parallelism |
|
|
132
|
+
|
|
133
|
+
## Usage
|
|
134
|
+
|
|
135
|
+
### Basic Orchestration
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from crackerjack.orchestration.hook_orchestrator import HookOrchestrator
|
|
139
|
+
from crackerjack.orchestration.execution_strategies import FastStrategy
|
|
140
|
+
|
|
141
|
+
orchestrator = HookOrchestrator(strategy=FastStrategy())
|
|
142
|
+
results = await orchestrator.run_hooks(files=[Path(".")])
|
|
143
|
+
|
|
144
|
+
for result in results:
|
|
145
|
+
if not result.passed:
|
|
146
|
+
print(f"Hook {result.hook_name} failed: {result.message}")
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Advanced Orchestration
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
from crackerjack.orchestration.advanced_orchestrator import AdvancedOrchestrator
|
|
153
|
+
|
|
154
|
+
orchestrator = AdvancedOrchestrator(
|
|
155
|
+
enable_ai_fixing=True,
|
|
156
|
+
max_iterations=10,
|
|
157
|
+
progress_callback=lambda p: print(f"Progress: {p}%"),
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
result = await orchestrator.execute_workflow(
|
|
161
|
+
stages=["fast_hooks", "tests", "comprehensive_hooks"], ai_agent_mode=True
|
|
162
|
+
)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Custom Execution Strategy
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
from crackerjack.orchestration.execution_strategies import ExecutionStrategy
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class CustomStrategy(ExecutionStrategy):
|
|
172
|
+
def should_run_hook(self, hook_name: str) -> bool:
|
|
173
|
+
# Custom logic for hook selection
|
|
174
|
+
return hook_name in ["ruff", "zuban"]
|
|
175
|
+
|
|
176
|
+
def get_concurrency_limit(self) -> int:
|
|
177
|
+
# Custom parallelism
|
|
178
|
+
return 5
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
orchestrator = HookOrchestrator(strategy=CustomStrategy())
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Coverage Improvement Workflow
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
from crackerjack.orchestration.coverage_improvement import (
|
|
188
|
+
CoverageImprovementOrchestrator,
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
coverage_orch = CoverageImprovementOrchestrator()
|
|
192
|
+
|
|
193
|
+
# Analyze low-coverage areas
|
|
194
|
+
suggestions = await coverage_orch.analyze_coverage(min_coverage=42.0)
|
|
195
|
+
|
|
196
|
+
# Generate tests for uncovered code
|
|
197
|
+
test_code = await coverage_orch.generate_tests(suggestions)
|
|
198
|
+
|
|
199
|
+
# Track progress toward milestone
|
|
200
|
+
milestone = coverage_orch.get_next_milestone(current_coverage=21.6)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Configuration
|
|
204
|
+
|
|
205
|
+
### Hook Definitions
|
|
206
|
+
|
|
207
|
+
Hooks are defined with metadata for orchestration:
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
from crackerjack.orchestration.config import HookDefinition, HookStage
|
|
211
|
+
|
|
212
|
+
hook = HookDefinition(
|
|
213
|
+
name="ruff",
|
|
214
|
+
command=["ruff", "check", "--fix"],
|
|
215
|
+
timeout=45,
|
|
216
|
+
stage=HookStage.FAST,
|
|
217
|
+
dependencies=[], # No dependencies
|
|
218
|
+
manual_stage=False, # Automatic execution
|
|
219
|
+
security_level=SecurityLevel.MEDIUM,
|
|
220
|
+
)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Execution Strategies Configuration
|
|
224
|
+
|
|
225
|
+
```yaml
|
|
226
|
+
# settings/crackerjack.yaml
|
|
227
|
+
orchestration:
|
|
228
|
+
default_strategy: "fast"
|
|
229
|
+
max_concurrent_hooks: 11
|
|
230
|
+
hook_timeout: 60
|
|
231
|
+
overall_timeout: 300
|
|
232
|
+
enable_caching: true
|
|
233
|
+
cache_ttl: 3600
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Orchestration Patterns
|
|
237
|
+
|
|
238
|
+
### Dependency-Aware Execution
|
|
239
|
+
|
|
240
|
+
Hooks are executed in dependency order:
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
# Format before lint (lint depends on format)
|
|
244
|
+
dependencies = {
|
|
245
|
+
"ruff-format": [],
|
|
246
|
+
"ruff-lint": ["ruff-format"],
|
|
247
|
+
"zuban": ["ruff-format", "ruff-lint"],
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
# Executes: ruff-format → ruff-lint → zuban
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Graceful Degradation
|
|
254
|
+
|
|
255
|
+
Timeout strategies prevent hanging:
|
|
256
|
+
|
|
257
|
+
```python
|
|
258
|
+
try:
|
|
259
|
+
result = await asyncio.wait_for(hook.execute(), timeout=hook_timeout)
|
|
260
|
+
except asyncio.TimeoutError:
|
|
261
|
+
# Continue with other hooks
|
|
262
|
+
log.warning(f"Hook {hook.name} timed out, continuing...")
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Intelligent Caching
|
|
266
|
+
|
|
267
|
+
Content-based caching prevents unnecessary re-runs:
|
|
268
|
+
|
|
269
|
+
```python
|
|
270
|
+
# Cache key: {hook_name}:{config_hash}:{content_hash}
|
|
271
|
+
cache_key = f"ruff:{hash(config)}:{hash_files(files)}"
|
|
272
|
+
|
|
273
|
+
if cached_result := cache.get(cache_key):
|
|
274
|
+
return cached_result # Skip execution
|
|
275
|
+
|
|
276
|
+
result = await hook.execute()
|
|
277
|
+
cache.set(cache_key, result, ttl=3600)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Best Practices
|
|
281
|
+
|
|
282
|
+
1. **Choose Appropriate Strategy**: Use `FastStrategy` for rapid feedback, `ComprehensiveStrategy` for thorough analysis
|
|
283
|
+
1. **Enable Caching**: Cache dramatically improves performance for repeated runs
|
|
284
|
+
1. **Set Reasonable Timeouts**: Balance thoroughness with responsiveness
|
|
285
|
+
1. **Monitor Concurrency**: Adjust concurrency limits based on available resources
|
|
286
|
+
1. **Use Dependency Ordering**: Ensure hooks run in correct order
|
|
287
|
+
1. **Handle Timeouts Gracefully**: Don't let one slow hook block everything
|
|
288
|
+
1. **Track Progress**: Provide feedback for long-running workflows
|
|
289
|
+
1. **Leverage AI Fixing**: Use AI agents for iterative improvement
|
|
290
|
+
|
|
291
|
+
## Troubleshooting
|
|
292
|
+
|
|
293
|
+
### Slow Execution
|
|
294
|
+
|
|
295
|
+
```python
|
|
296
|
+
# Check cache hit rate
|
|
297
|
+
from crackerjack.orchestration.cache import get_cache_stats
|
|
298
|
+
|
|
299
|
+
stats = get_cache_stats()
|
|
300
|
+
print(f"Cache hit rate: {stats.hit_rate}%")
|
|
301
|
+
|
|
302
|
+
# Reduce concurrency if resource-bound
|
|
303
|
+
orchestrator.max_concurrent_hooks = 5
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Hook Timeouts
|
|
307
|
+
|
|
308
|
+
```python
|
|
309
|
+
# Increase timeout for specific hooks
|
|
310
|
+
hook.timeout = 120 # 2 minutes
|
|
311
|
+
|
|
312
|
+
# Or disable timeout for debugging
|
|
313
|
+
hook.timeout = None
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Cache Invalidation Issues
|
|
317
|
+
|
|
318
|
+
```python
|
|
319
|
+
# Clear cache if getting stale results
|
|
320
|
+
from crackerjack.orchestration.cache import clear_cache
|
|
321
|
+
|
|
322
|
+
clear_cache()
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Related
|
|
326
|
+
|
|
327
|
+
- [Managers](<../managers/README.md>) — Managers that use orchestration
|
|
328
|
+
- [Adapters](<../adapters/README.md>) — Adapters orchestrated by hooks
|
|
329
|
+
- [Services](<../services/README.md>) — Services used by orchestration
|
|
330
|
+
- [Agents](<../agents/README.md>) — AI agents coordinated by orchestration
|
|
331
|
+
- [Main README](<../../README.md>) — Workflow overview
|
|
332
|
+
|
|
333
|
+
## Future Enhancements
|
|
334
|
+
|
|
335
|
+
- [ ] Distributed orchestration across multiple machines
|
|
336
|
+
- [ ] Advanced dependency resolution with conditional execution
|
|
337
|
+
- [ ] Machine learning for optimal strategy selection
|
|
338
|
+
- [ ] Real-time orchestration metrics dashboard
|
|
339
|
+
- [ ] Plugin system for custom orchestrators
|
|
340
|
+
- [ ] Workflow visualization and debugging tools
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""Hook orchestration layer for ACB integration.
|
|
2
|
+
|
|
3
|
+
This package provides the orchestration layer for managing hook execution,
|
|
4
|
+
dependency resolution, and caching. It bridges the existing pre-commit-based
|
|
5
|
+
system with ACB's component architecture.
|
|
6
|
+
|
|
7
|
+
Key Components:
|
|
8
|
+
- HookOrchestratorAdapter: Main orchestration component
|
|
9
|
+
- Execution strategies: Parallel and sequential execution
|
|
10
|
+
- Cache adapters: Integration with tool_proxy and future cache backends
|
|
11
|
+
|
|
12
|
+
Architecture:
|
|
13
|
+
The orchestrator supports dual execution modes:
|
|
14
|
+
1. Legacy mode: Delegates to existing HookExecutor (pre-commit CLI)
|
|
15
|
+
2. ACB mode: Direct adapter execution via depends.get()
|
|
16
|
+
|
|
17
|
+
Migration Path:
|
|
18
|
+
- Phase 3-7: Legacy mode (orchestrator + pre-commit)
|
|
19
|
+
- Phase 8+: ACB mode (orchestrator + direct adapters)
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
__all__ = [
|
|
25
|
+
"HookOrchestratorAdapter",
|
|
26
|
+
"HookOrchestratorSettings",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# Lazy imports to avoid circular dependencies
|
|
31
|
+
from typing import Any
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def __getattr__(name: str) -> Any:
|
|
35
|
+
if name == "HookOrchestratorAdapter":
|
|
36
|
+
from crackerjack.orchestration.hook_orchestrator import HookOrchestratorAdapter
|
|
37
|
+
|
|
38
|
+
return HookOrchestratorAdapter
|
|
39
|
+
elif name == "HookOrchestratorSettings":
|
|
40
|
+
from crackerjack.orchestration.hook_orchestrator import HookOrchestratorSettings
|
|
41
|
+
|
|
42
|
+
return HookOrchestratorSettings
|
|
43
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|