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,374 @@
|
|
|
1
|
+
> Crackerjack Docs: [Main](<../../README.md>) | [CLAUDE.md](../../docs/guides/CLAUDE.md) | [Services](<./README.md>)
|
|
2
|
+
|
|
3
|
+
# Services
|
|
4
|
+
|
|
5
|
+
Service abstractions and provider integrations for infrastructure, quality, monitoring, and AI capabilities.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The services package contains 60+ specialized service modules organized into functional categories. Services handle infrastructure concerns (filesystem, git, config), quality enforcement, monitoring, security, and AI integration. Most services follow ACB patterns with dependency injection and lifecycle management.
|
|
10
|
+
|
|
11
|
+
## Service Categories
|
|
12
|
+
|
|
13
|
+
### Core Infrastructure
|
|
14
|
+
|
|
15
|
+
**Filesystem & File Operations**
|
|
16
|
+
|
|
17
|
+
- `filesystem.py`: Core filesystem operations with path validation
|
|
18
|
+
- `enhanced_filesystem.py`: Advanced filesystem operations with atomic writes
|
|
19
|
+
- `file_modifier.py`: Safe file modification with backup and rollback
|
|
20
|
+
- `file_filter.py`: File filtering and pattern matching
|
|
21
|
+
- `file_hasher.py`: Content hashing for change detection
|
|
22
|
+
- `backup_service.py`: Automated backup creation and management
|
|
23
|
+
|
|
24
|
+
**Version Control**
|
|
25
|
+
|
|
26
|
+
- `git.py`: Git operations (commit, push, status, branch management)
|
|
27
|
+
- `intelligent_commit.py`: AI-powered commit message generation
|
|
28
|
+
- `changelog_automation.py`: Automatic changelog generation from commits
|
|
29
|
+
|
|
30
|
+
**Configuration Management**
|
|
31
|
+
|
|
32
|
+
- `unified_config.py`: Unified configuration loading and validation
|
|
33
|
+
- `config_merge.py`: Intelligent configuration merging for initialization
|
|
34
|
+
- `config_template.py`: Configuration template management and versioning
|
|
35
|
+
- `config_integrity.py`: Configuration validation and integrity checking
|
|
36
|
+
|
|
37
|
+
**Initialization**
|
|
38
|
+
|
|
39
|
+
- `initialization.py`: Project initialization and setup workflows
|
|
40
|
+
|
|
41
|
+
### Quality & Testing
|
|
42
|
+
|
|
43
|
+
**Coverage & Testing**
|
|
44
|
+
|
|
45
|
+
- `coverage_ratchet.py`: Coverage ratchet system (never decrease coverage)
|
|
46
|
+
- `coverage_badge_service.py`: Coverage badge generation and updates
|
|
47
|
+
- `incremental_executor.py`: Incremental test execution
|
|
48
|
+
- `parallel_executor.py`: Parallel test execution with pytest-xdist
|
|
49
|
+
|
|
50
|
+
**Quality Enforcement**
|
|
51
|
+
|
|
52
|
+
- `tool_filter.py`: Quality tool filtering and selection
|
|
53
|
+
- `tool_version_service.py`: Tool version management and compatibility
|
|
54
|
+
- `quality/` subdirectory — Quality-specific services
|
|
55
|
+
|
|
56
|
+
### Security
|
|
57
|
+
|
|
58
|
+
**Input Validation & Security**
|
|
59
|
+
|
|
60
|
+
- `input_validator.py`: Comprehensive input validation framework
|
|
61
|
+
- `validation_rate_limiter.py`: Rate limiting for validation failures
|
|
62
|
+
- `security.py`: Core security utilities and validation
|
|
63
|
+
- `security_logger.py`: Security event logging with severity levels
|
|
64
|
+
- `secure_path_utils.py`: Path traversal prevention and validation
|
|
65
|
+
- `secure_subprocess.py`: Safe subprocess execution without shell injection
|
|
66
|
+
|
|
67
|
+
**Status & Authentication**
|
|
68
|
+
|
|
69
|
+
- `status_security_manager.py`: Security manager for status operations
|
|
70
|
+
- `status_authentication.py`: Authentication for status endpoints
|
|
71
|
+
- `bounded_status_operations.py`: Bounded operations for status queries
|
|
72
|
+
- `thread_safe_status_collector.py`: Thread-safe status data collection
|
|
73
|
+
- `secure_status_formatter.py`: Secure formatting for status output
|
|
74
|
+
|
|
75
|
+
**Resource Management**
|
|
76
|
+
|
|
77
|
+
- `websocket_resource_limiter.py`: WebSocket connection and resource limits
|
|
78
|
+
|
|
79
|
+
### Monitoring & Metrics
|
|
80
|
+
|
|
81
|
+
**Health & Metrics**
|
|
82
|
+
|
|
83
|
+
- `health_metrics.py`: Health metrics collection and reporting
|
|
84
|
+
- `metrics.py`: General metrics tracking and aggregation
|
|
85
|
+
- `profiler.py`: Performance profiling and analysis
|
|
86
|
+
- `dependency_monitor.py`: Dependency health monitoring
|
|
87
|
+
- `monitoring/` subdirectory — Monitoring-specific services
|
|
88
|
+
|
|
89
|
+
**Debugging & Logging**
|
|
90
|
+
|
|
91
|
+
- `debug.py`: Debug utilities and helpers
|
|
92
|
+
- `logging.py`: Structured logging configuration
|
|
93
|
+
- `log_manager.py`: Log file management and rotation
|
|
94
|
+
|
|
95
|
+
### Pattern Analysis & Intelligence
|
|
96
|
+
|
|
97
|
+
**Pattern Detection & Analysis**
|
|
98
|
+
|
|
99
|
+
- `regex_patterns.py`: Centralized regex pattern registry (advanced-grade)
|
|
100
|
+
- `regex_utils.py`: Regex utilities and validation
|
|
101
|
+
- `pattern_detector.py`: Code pattern detection and analysis
|
|
102
|
+
- `pattern_cache.py`: Pattern caching for performance
|
|
103
|
+
- `error_pattern_analyzer.py`: Error pattern analysis and categorization
|
|
104
|
+
|
|
105
|
+
**AI & Intelligence**
|
|
106
|
+
|
|
107
|
+
- `anomaly_detector.py`: Anomaly detection in code and metrics
|
|
108
|
+
- `predictive_analytics.py`: Predictive analytics for quality trends
|
|
109
|
+
- `ai/` subdirectory — AI-specific services
|
|
110
|
+
- `vector_store.py`: Vector storage for semantic search
|
|
111
|
+
|
|
112
|
+
**Analysis & Optimization**
|
|
113
|
+
|
|
114
|
+
- `dependency_analyzer.py`: Dependency graph analysis
|
|
115
|
+
- `version_analyzer.py`: Version compatibility analysis
|
|
116
|
+
- `heatmap_generator.py`: Code complexity heatmap generation
|
|
117
|
+
- `memory_optimizer.py`: Memory usage optimization
|
|
118
|
+
- `enterprise_optimizer.py`: Enterprise-level optimization strategies
|
|
119
|
+
|
|
120
|
+
### Documentation & Code Analysis
|
|
121
|
+
|
|
122
|
+
**Documentation**
|
|
123
|
+
|
|
124
|
+
- `documentation_generator.py`: Automated API documentation generation
|
|
125
|
+
- `documentation_service.py`: Documentation management and updates
|
|
126
|
+
|
|
127
|
+
**Code Intelligence**
|
|
128
|
+
|
|
129
|
+
- `api_extractor.py`: API surface extraction and analysis
|
|
130
|
+
- `smart_scheduling.py`: Intelligent task scheduling
|
|
131
|
+
|
|
132
|
+
### Language Server Protocol (LSP)
|
|
133
|
+
|
|
134
|
+
**LSP Integration**
|
|
135
|
+
|
|
136
|
+
- `lsp_client.py`: Generic LSP client implementation
|
|
137
|
+
- `zuban_lsp_service.py`: Zuban LSP service integration
|
|
138
|
+
- `server_manager.py`: LSP server lifecycle management
|
|
139
|
+
|
|
140
|
+
### Utilities
|
|
141
|
+
|
|
142
|
+
**Cache & Performance**
|
|
143
|
+
|
|
144
|
+
- `cache.py`: General-purpose caching
|
|
145
|
+
- `terminal_utils.py`: Terminal and console utilities
|
|
146
|
+
- `version_checker.py`: Version checking and updates
|
|
147
|
+
|
|
148
|
+
## Architecture
|
|
149
|
+
|
|
150
|
+
### ACB Compliance Status
|
|
151
|
+
|
|
152
|
+
Based on Phase 2-4 refactoring audit:
|
|
153
|
+
|
|
154
|
+
| Category | Compliance | Status | Notes |
|
|
155
|
+
|----------|-----------|--------|-------|
|
|
156
|
+
| Core Infrastructure | 95% | ✅ Excellent | Phase 3 refactored, consistent constructors |
|
|
157
|
+
| Security Services | 95% | ✅ Excellent | Comprehensive validation and logging |
|
|
158
|
+
| Quality Services | 90% | ✅ Good | Coverage ratchet, testing infrastructure |
|
|
159
|
+
| Monitoring Services | 85% | ✅ Good | Health metrics, profiling |
|
|
160
|
+
| LSP Services | 80% | ✅ Good | Server management, client integration |
|
|
161
|
+
| AI Services | 75% | ⚠️ Mixed | Some legacy patterns remain |
|
|
162
|
+
|
|
163
|
+
### Dependency Injection Pattern
|
|
164
|
+
|
|
165
|
+
Most services follow ACB dependency injection:
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
from acb.depends import depends, Inject
|
|
169
|
+
from crackerjack.models.protocols import Console, CrackerjackCache
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
@depends.inject
|
|
173
|
+
class FileSystemService:
|
|
174
|
+
def __init__(
|
|
175
|
+
self,
|
|
176
|
+
console: Inject[Console] = None,
|
|
177
|
+
cache: Inject[CrackerjackCache] = None,
|
|
178
|
+
) -> None:
|
|
179
|
+
self.console = console
|
|
180
|
+
self.cache = cache
|
|
181
|
+
|
|
182
|
+
async def init(self) -> None:
|
|
183
|
+
# Async initialization if needed
|
|
184
|
+
pass
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Usage Examples
|
|
188
|
+
|
|
189
|
+
### Filesystem Operations
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
from crackerjack.services.filesystem import FileSystemService
|
|
193
|
+
|
|
194
|
+
fs = FileSystemService()
|
|
195
|
+
await fs.init()
|
|
196
|
+
|
|
197
|
+
# Safe file operations
|
|
198
|
+
content = await fs.read_file(Path("config.yaml"))
|
|
199
|
+
await fs.write_file(Path("output.txt"), "data")
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Git Operations
|
|
203
|
+
|
|
204
|
+
```python
|
|
205
|
+
from crackerjack.services.git import GitService
|
|
206
|
+
|
|
207
|
+
git = GitService()
|
|
208
|
+
await git.init()
|
|
209
|
+
|
|
210
|
+
# Commit with intelligent message
|
|
211
|
+
await git.commit_changes(
|
|
212
|
+
message="Auto-generated commit message", files=["file1.py", "file2.py"]
|
|
213
|
+
)
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Coverage Ratchet
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
from crackerjack.services.coverage_ratchet import CoverageRatchet
|
|
220
|
+
|
|
221
|
+
ratchet = CoverageRatchet()
|
|
222
|
+
current = 21.6
|
|
223
|
+
baseline = 19.6
|
|
224
|
+
|
|
225
|
+
if ratchet.validate_coverage(current, baseline):
|
|
226
|
+
print("Coverage improved!")
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Security Validation
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
from crackerjack.services.input_validator import get_input_validator
|
|
233
|
+
|
|
234
|
+
validator = get_input_validator()
|
|
235
|
+
result = validator.validate_command_args("safe_command arg1 arg2")
|
|
236
|
+
|
|
237
|
+
if result.valid:
|
|
238
|
+
# Safe to execute
|
|
239
|
+
execute(result.sanitized_value)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Pattern Detection
|
|
243
|
+
|
|
244
|
+
```python
|
|
245
|
+
from crackerjack.services.regex_patterns import SAFE_PATTERNS
|
|
246
|
+
|
|
247
|
+
# Use centralized, validated patterns
|
|
248
|
+
text = SAFE_PATTERNS["fix_hyphenated_names"].apply(text)
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Service Subdirectories
|
|
252
|
+
|
|
253
|
+
### AI Services (`ai/`)
|
|
254
|
+
|
|
255
|
+
AI-specific services for code analysis and generation:
|
|
256
|
+
|
|
257
|
+
- Claude integration
|
|
258
|
+
- Code generation
|
|
259
|
+
- Semantic analysis
|
|
260
|
+
- See [ai/README.md](<./ai/README.md>)
|
|
261
|
+
|
|
262
|
+
### Monitoring Services (`monitoring/`)
|
|
263
|
+
|
|
264
|
+
Health and performance monitoring:
|
|
265
|
+
|
|
266
|
+
- Real-time metrics
|
|
267
|
+
- Performance tracking
|
|
268
|
+
- Resource monitoring
|
|
269
|
+
- See [monitoring/README.md](<./monitoring/README.md>)
|
|
270
|
+
|
|
271
|
+
### Quality Services (`quality/`)
|
|
272
|
+
|
|
273
|
+
Quality enforcement and tracking:
|
|
274
|
+
|
|
275
|
+
- Quality metrics
|
|
276
|
+
- Standards enforcement
|
|
277
|
+
- Compliance tracking
|
|
278
|
+
- See [quality/README.md](<./quality/README.md>)
|
|
279
|
+
|
|
280
|
+
### Pattern Services (`patterns/`)
|
|
281
|
+
|
|
282
|
+
Pattern detection and analysis:
|
|
283
|
+
|
|
284
|
+
- Code pattern recognition
|
|
285
|
+
- Anti-pattern detection
|
|
286
|
+
- Pattern libraries
|
|
287
|
+
- See [patterns/README.md](./patterns/README.md) (if exists)
|
|
288
|
+
|
|
289
|
+
## Configuration
|
|
290
|
+
|
|
291
|
+
Services use ACB Settings for configuration:
|
|
292
|
+
|
|
293
|
+
```python
|
|
294
|
+
from acb.depends import depends
|
|
295
|
+
from crackerjack.config import CrackerjackSettings
|
|
296
|
+
|
|
297
|
+
settings = depends.get(CrackerjackSettings)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Configuration files:
|
|
301
|
+
|
|
302
|
+
- `settings/crackerjack.yaml` — Base configuration
|
|
303
|
+
- `settings/local.yaml` — Local overrides (gitignored)
|
|
304
|
+
|
|
305
|
+
## Security Considerations
|
|
306
|
+
|
|
307
|
+
### Input Validation
|
|
308
|
+
|
|
309
|
+
All user input should be validated through `input_validator.py`:
|
|
310
|
+
|
|
311
|
+
```python
|
|
312
|
+
from crackerjack.services.input_validator import validate_and_sanitize_string
|
|
313
|
+
|
|
314
|
+
try:
|
|
315
|
+
safe_input = validate_and_sanitize_string(user_input)
|
|
316
|
+
# Use safe_input
|
|
317
|
+
except ExecutionError as e:
|
|
318
|
+
# Handle validation failure
|
|
319
|
+
pass
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Path Validation
|
|
323
|
+
|
|
324
|
+
Use `secure_path_utils.py` for all path operations:
|
|
325
|
+
|
|
326
|
+
```python
|
|
327
|
+
from crackerjack.services.secure_path_utils import SecurePathValidator
|
|
328
|
+
|
|
329
|
+
validated_path = SecurePathValidator.validate_file_path(
|
|
330
|
+
user_path, base_directory=project_root
|
|
331
|
+
)
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Subprocess Security
|
|
335
|
+
|
|
336
|
+
Use `secure_subprocess.py` instead of direct subprocess calls:
|
|
337
|
+
|
|
338
|
+
```python
|
|
339
|
+
from crackerjack.services.secure_subprocess import SecureSubprocess
|
|
340
|
+
|
|
341
|
+
result = await SecureSubprocess.run_command(
|
|
342
|
+
["python", "-m", "pytest"], cwd=project_root
|
|
343
|
+
)
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Best Practices
|
|
347
|
+
|
|
348
|
+
1. **Use DI**: Always use dependency injection via `@depends.inject`
|
|
349
|
+
1. **Import Protocols**: Import from `models/protocols.py`, not concrete classes
|
|
350
|
+
1. **Validate Input**: Use input_validator for all external input
|
|
351
|
+
1. **Secure Paths**: Use SecurePathValidator for path operations
|
|
352
|
+
1. **Centralize Patterns**: Use regex_patterns.py instead of raw regex
|
|
353
|
+
1. **Handle Errors**: Use structured error handling with specific exceptions
|
|
354
|
+
1. **Log Security Events**: Use security_logger for security-relevant operations
|
|
355
|
+
1. **Cache Appropriately**: Use cache service for expensive operations
|
|
356
|
+
1. **Async When Needed**: Use async/await for I/O-bound operations
|
|
357
|
+
1. **Test Thoroughly**: Add tests for all new services
|
|
358
|
+
|
|
359
|
+
## Related
|
|
360
|
+
|
|
361
|
+
- [Adapters](<../adapters/README.md>) — Quality tool adapters that use services
|
|
362
|
+
- [Managers](<../managers/README.md>) — Managers that coordinate services
|
|
363
|
+
- [Orchestration](<../orchestration/README.md>) — Orchestration using services
|
|
364
|
+
- [Config](<../config/README.md>) — ACB Settings integration
|
|
365
|
+
- [SECURITY.md](<../../docs/reference/SECURITY.md>) — Security documentation
|
|
366
|
+
|
|
367
|
+
## Future Enhancements
|
|
368
|
+
|
|
369
|
+
- [ ] Standardize async/sync patterns across all services
|
|
370
|
+
- [ ] Add telemetry and observability
|
|
371
|
+
- [ ] Implement service health checks
|
|
372
|
+
- [ ] Add circuit breaker patterns for external services
|
|
373
|
+
- [ ] Create service benchmarking framework
|
|
374
|
+
- [ ] Develop service plugin system
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""Services for crackerjack.
|
|
2
|
+
|
|
3
|
+
This package contains service classes that provide business logic
|
|
4
|
+
and operations that are used across multiple components.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from crackerjack.services.file_modifier import SafeFileModifier
|
|
8
|
+
|
|
9
|
+
__all__ = ["SafeFileModifier"]
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
> Crackerjack Docs: [Main](<../../../README.md>) | [CLAUDE.md](../../../docs/guides/CLAUDE.md) | [Services](<../README.md>) | AI Services
|
|
2
|
+
|
|
3
|
+
# AI Services
|
|
4
|
+
|
|
5
|
+
AI provider integrations and service abstractions for intelligent code analysis, optimization, and contextual assistance.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The AI services package provides intelligent automation capabilities powered by Claude and other AI providers. These services enhance crackerjack's ability to understand code context, generate intelligent recommendations, optimize workflows, and provide predictive analytics.
|
|
10
|
+
|
|
11
|
+
## Services
|
|
12
|
+
|
|
13
|
+
- **`contextual_ai_assistant.py`** - Context-aware AI recommendations based on project analysis
|
|
14
|
+
- **`intelligent_commit.py`** - AI-powered commit message generation
|
|
15
|
+
- **`embeddings.py`** - Vector embeddings for semantic code analysis
|
|
16
|
+
- **`predictive_analytics.py`** - Predictive quality trend analysis and forecasting
|
|
17
|
+
- **`advanced_optimizer.py`** - AI-driven code and workflow optimization
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
### Contextual AI Assistant
|
|
22
|
+
|
|
23
|
+
Analyzes your project context to provide intelligent, prioritized recommendations:
|
|
24
|
+
|
|
25
|
+
- **Project Analysis** - Detects project type, size, languages, and configuration
|
|
26
|
+
- **Smart Recommendations** - Prioritized suggestions based on current project state
|
|
27
|
+
- **Action Commands** - Executable commands to implement recommendations
|
|
28
|
+
- **Confidence Scoring** - AI confidence levels for each recommendation
|
|
29
|
+
- **Context Caching** - Caches project analysis for performance
|
|
30
|
+
|
|
31
|
+
### Intelligent Commit Messages
|
|
32
|
+
|
|
33
|
+
Generates meaningful commit messages from code changes:
|
|
34
|
+
|
|
35
|
+
- **Change Analysis** - Analyzes git diff to understand modifications
|
|
36
|
+
- **Semantic Understanding** - Recognizes refactoring, features, fixes, etc.
|
|
37
|
+
- **Convention Following** - Follows project commit message patterns
|
|
38
|
+
- **Multi-file Support** - Handles complex multi-file commits
|
|
39
|
+
|
|
40
|
+
### Embeddings & Semantic Search
|
|
41
|
+
|
|
42
|
+
Vector-based code analysis for semantic understanding:
|
|
43
|
+
|
|
44
|
+
- **Code Vectorization** - Converts code to semantic vectors
|
|
45
|
+
- **Similarity Detection** - Finds semantically similar code patterns
|
|
46
|
+
- **Intelligent Grouping** - Groups related functionality
|
|
47
|
+
- **Search Enhancement** - Improves code search beyond text matching
|
|
48
|
+
|
|
49
|
+
### Predictive Analytics
|
|
50
|
+
|
|
51
|
+
Forecasts quality trends and potential issues:
|
|
52
|
+
|
|
53
|
+
- **Coverage Trends** - Predicts coverage trajectory
|
|
54
|
+
- **Quality Degradation** - Detects early warning signs
|
|
55
|
+
- **Resource Forecasting** - Predicts resource needs
|
|
56
|
+
- **Risk Assessment** - Identifies high-risk code areas
|
|
57
|
+
|
|
58
|
+
### Advanced Optimizer
|
|
59
|
+
|
|
60
|
+
AI-driven optimization strategies:
|
|
61
|
+
|
|
62
|
+
- **Performance Analysis** - Identifies optimization opportunities
|
|
63
|
+
- **Resource Management** - Optimizes memory and CPU usage
|
|
64
|
+
- **Workflow Tuning** - Optimizes development workflow efficiency
|
|
65
|
+
- **Pattern Learning** - Learns from successful optimizations
|
|
66
|
+
|
|
67
|
+
## Usage Examples
|
|
68
|
+
|
|
69
|
+
### Contextual AI Assistant
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from crackerjack.services.ai import ContextualAIAssistant
|
|
73
|
+
from acb.depends import depends
|
|
74
|
+
|
|
75
|
+
assistant = depends.get(ContextualAIAssistant)
|
|
76
|
+
|
|
77
|
+
# Get top 5 recommendations for current project
|
|
78
|
+
recommendations = assistant.get_contextual_recommendations(max_recommendations=5)
|
|
79
|
+
|
|
80
|
+
for rec in recommendations:
|
|
81
|
+
print(f"[{rec.priority}] {rec.title}")
|
|
82
|
+
print(f" {rec.description}")
|
|
83
|
+
if rec.action_command:
|
|
84
|
+
print(f" Run: {rec.action_command}")
|
|
85
|
+
print(f" Confidence: {rec.confidence:.0%}")
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Intelligent Commit Messages
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from crackerjack.services.ai import IntelligentCommitService
|
|
92
|
+
from acb.depends import depends
|
|
93
|
+
|
|
94
|
+
commit_service = depends.get(IntelligentCommitService)
|
|
95
|
+
|
|
96
|
+
# Generate commit message from staged changes
|
|
97
|
+
message = await commit_service.generate_commit_message()
|
|
98
|
+
|
|
99
|
+
# Or analyze specific files
|
|
100
|
+
message = await commit_service.generate_commit_message(
|
|
101
|
+
files=["src/main.py", "tests/test_main.py"]
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
print(f"Suggested commit message:\n{message}")
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Embeddings for Code Analysis
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from crackerjack.services.ai import EmbeddingService
|
|
111
|
+
from acb.depends import depends
|
|
112
|
+
|
|
113
|
+
embedding_service = depends.get(EmbeddingService)
|
|
114
|
+
|
|
115
|
+
# Generate embedding for code snippet
|
|
116
|
+
code = """
|
|
117
|
+
def calculate_total(items):
|
|
118
|
+
return sum(item.price for item in items)
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
embedding = await embedding_service.embed_code(code)
|
|
122
|
+
|
|
123
|
+
# Find similar code
|
|
124
|
+
similar_snippets = await embedding_service.find_similar_code(embedding, threshold=0.85)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Predictive Analytics
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
from crackerjack.services.ai import PredictiveAnalytics
|
|
131
|
+
from acb.depends import depends
|
|
132
|
+
|
|
133
|
+
analytics = depends.get(PredictiveAnalytics)
|
|
134
|
+
|
|
135
|
+
# Predict coverage trend
|
|
136
|
+
prediction = await analytics.predict_coverage_trend(
|
|
137
|
+
historical_data=[19.6, 20.1, 20.8, 21.6], days_ahead=30
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
print(f"Predicted coverage in 30 days: {prediction.coverage:.1%}")
|
|
141
|
+
print(f"Confidence: {prediction.confidence:.0%}")
|
|
142
|
+
print(f"Trend: {prediction.trend}") # 'improving', 'stable', 'degrading'
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Advanced Optimizer
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
from crackerjack.services.ai import AdvancedOptimizer
|
|
149
|
+
from acb.depends import depends
|
|
150
|
+
|
|
151
|
+
optimizer = depends.get(AdvancedOptimizer)
|
|
152
|
+
|
|
153
|
+
# Analyze and optimize workflow
|
|
154
|
+
optimization = await optimizer.optimize_workflow()
|
|
155
|
+
|
|
156
|
+
for suggestion in optimization.suggestions:
|
|
157
|
+
print(f"Optimization: {suggestion.title}")
|
|
158
|
+
print(f" Impact: {suggestion.impact}")
|
|
159
|
+
print(f" Effort: {suggestion.effort}")
|
|
160
|
+
print(f" ROI: {suggestion.roi:.1f}x")
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Architecture
|
|
164
|
+
|
|
165
|
+
### AI Provider Integration
|
|
166
|
+
|
|
167
|
+
All AI services follow the provider abstraction pattern:
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
from acb.depends import depends, Inject
|
|
171
|
+
from crackerjack.models.protocols import Console
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class AIServiceBase:
|
|
175
|
+
@depends.inject
|
|
176
|
+
def __init__(
|
|
177
|
+
self,
|
|
178
|
+
console: Inject[Console] = None,
|
|
179
|
+
) -> None:
|
|
180
|
+
self.console = console
|
|
181
|
+
self.provider = self._get_ai_provider()
|
|
182
|
+
|
|
183
|
+
def _get_ai_provider(self):
|
|
184
|
+
# Returns configured AI provider (Claude, OpenAI, etc.)
|
|
185
|
+
pass
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Context-Aware Design
|
|
189
|
+
|
|
190
|
+
AI services analyze project context to provide relevant recommendations:
|
|
191
|
+
|
|
192
|
+
1. **Project Detection** - Identifies project type, dependencies, and configuration
|
|
193
|
+
1. **State Analysis** - Analyzes current quality metrics and trends
|
|
194
|
+
1. **Pattern Recognition** - Recognizes code patterns and anti-patterns
|
|
195
|
+
1. **Recommendation Generation** - Generates prioritized, actionable recommendations
|
|
196
|
+
1. **Confidence Scoring** - Assigns confidence levels to recommendations
|
|
197
|
+
|
|
198
|
+
## Configuration
|
|
199
|
+
|
|
200
|
+
AI services are configured through ACB Settings:
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
# settings/crackerjack.yaml
|
|
204
|
+
ai_enabled: true
|
|
205
|
+
ai_provider: "claude" # claude, openai, local
|
|
206
|
+
ai_model: "claude-3-sonnet"
|
|
207
|
+
ai_context_cache_ttl: 3600 # seconds
|
|
208
|
+
|
|
209
|
+
# Contextual assistant settings
|
|
210
|
+
ai_max_recommendations: 5
|
|
211
|
+
ai_min_confidence: 0.7
|
|
212
|
+
|
|
213
|
+
# Embeddings settings
|
|
214
|
+
embedding_model: "text-embedding-3-small"
|
|
215
|
+
embedding_dimension: 1536
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Integration with Agent System
|
|
219
|
+
|
|
220
|
+
AI services integrate with crackerjack's 12 specialized agents:
|
|
221
|
+
|
|
222
|
+
- **RefactoringAgent** - Uses AI for intelligent refactoring suggestions
|
|
223
|
+
- **SemanticAgent** - Leverages embeddings for semantic analysis
|
|
224
|
+
- **EnhancedProactiveAgent** - Uses predictive analytics for prevention
|
|
225
|
+
- **ArchitectAgent** - Uses AI for architectural recommendations
|
|
226
|
+
|
|
227
|
+
See [Intelligence](<../../intelligence/README.md>) for agent system details.
|
|
228
|
+
|
|
229
|
+
## Security & Privacy
|
|
230
|
+
|
|
231
|
+
### Data Handling
|
|
232
|
+
|
|
233
|
+
- **No Code Upload** - Code analysis happens locally when possible
|
|
234
|
+
- **Privacy-First** - Sensitive data filtered before AI processing
|
|
235
|
+
- **Opt-In Required** - AI features require explicit enablement
|
|
236
|
+
- **Cache Control** - Local caching of AI responses for privacy
|
|
237
|
+
|
|
238
|
+
### API Key Management
|
|
239
|
+
|
|
240
|
+
```python
|
|
241
|
+
# Use environment variables for API keys
|
|
242
|
+
import os
|
|
243
|
+
|
|
244
|
+
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
|
|
245
|
+
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
|
246
|
+
|
|
247
|
+
# Never hardcode API keys in code or configuration files
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Performance Considerations
|
|
251
|
+
|
|
252
|
+
### Caching Strategy
|
|
253
|
+
|
|
254
|
+
AI services implement intelligent caching:
|
|
255
|
+
|
|
256
|
+
- **Context Cache** - Project analysis cached for 1 hour by default
|
|
257
|
+
- **Embedding Cache** - Code embeddings cached indefinitely (invalidated on change)
|
|
258
|
+
- **Response Cache** - AI responses cached for identical inputs
|
|
259
|
+
- **TTL Configuration** - Configurable cache time-to-live
|
|
260
|
+
|
|
261
|
+
### Rate Limiting
|
|
262
|
+
|
|
263
|
+
```python
|
|
264
|
+
from crackerjack.services.ai import AIRateLimiter
|
|
265
|
+
|
|
266
|
+
# Automatic rate limiting to prevent API throttling
|
|
267
|
+
limiter = AIRateLimiter(requests_per_minute=60)
|
|
268
|
+
await limiter.acquire()
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Best Practices
|
|
272
|
+
|
|
273
|
+
1. **Enable Selectively** - Enable AI features only where valuable
|
|
274
|
+
1. **Monitor Usage** - Track API usage and costs
|
|
275
|
+
1. **Cache Aggressively** - Leverage caching to minimize API calls
|
|
276
|
+
1. **Validate Recommendations** - Always review AI recommendations before applying
|
|
277
|
+
1. **Set Confidence Thresholds** - Filter low-confidence recommendations
|
|
278
|
+
1. **Use Batch Operations** - Batch similar operations to reduce API calls
|
|
279
|
+
1. **Handle Failures Gracefully** - Implement fallbacks when AI unavailable
|
|
280
|
+
|
|
281
|
+
## Related
|
|
282
|
+
|
|
283
|
+
- [Intelligence](<../../intelligence/README.md>) - Agent orchestration and selection
|
|
284
|
+
- [Workflows](<../../workflows/README.md>) - Workflow integration with AI services
|
|
285
|
+
- [Services](<../README.md>) - Parent services documentation
|
|
286
|
+
- [CLAUDE.md](../../../docs/guides/CLAUDE.md) - AI agent system overview
|
|
287
|
+
|
|
288
|
+
## Future Enhancements
|
|
289
|
+
|
|
290
|
+
- [ ] Support for additional AI providers (Gemini, local LLMs)
|
|
291
|
+
- [ ] Fine-tuned models for code-specific tasks
|
|
292
|
+
- [ ] Improved embedding models for better semantic understanding
|
|
293
|
+
- [ ] Real-time code analysis with streaming responses
|
|
294
|
+
- [ ] Multi-modal analysis (code + documentation + tests)
|
|
295
|
+
- [ ] Agent-to-agent communication for complex tasks
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"""AI-driven service modules."""
|
|
2
|
+
|
|
3
|
+
from .advanced_optimizer import * # noqa: F401,F403
|
|
4
|
+
from .contextual_ai_assistant import * # noqa: F401,F403
|
|
5
|
+
from .embeddings import * # noqa: F401,F403
|
|
6
|
+
from .intelligent_commit import * # noqa: F401,F403
|
|
7
|
+
from .predictive_analytics import * # noqa: F401,F403
|