empathy-framework 3.2.3__py3-none-any.whl → 3.8.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.
- coach_wizards/__init__.py +11 -12
- coach_wizards/accessibility_wizard.py +12 -12
- coach_wizards/api_wizard.py +12 -12
- coach_wizards/base_wizard.py +26 -20
- coach_wizards/cicd_wizard.py +15 -13
- coach_wizards/code_reviewer_README.md +60 -0
- coach_wizards/code_reviewer_wizard.py +180 -0
- coach_wizards/compliance_wizard.py +12 -12
- coach_wizards/database_wizard.py +12 -12
- coach_wizards/debugging_wizard.py +12 -12
- coach_wizards/documentation_wizard.py +12 -12
- coach_wizards/generate_wizards.py +1 -2
- coach_wizards/localization_wizard.py +101 -19
- coach_wizards/migration_wizard.py +12 -12
- coach_wizards/monitoring_wizard.py +12 -12
- coach_wizards/observability_wizard.py +12 -12
- coach_wizards/performance_wizard.py +12 -12
- coach_wizards/prompt_engineering_wizard.py +22 -25
- coach_wizards/refactoring_wizard.py +12 -12
- coach_wizards/scaling_wizard.py +12 -12
- coach_wizards/security_wizard.py +12 -12
- coach_wizards/testing_wizard.py +12 -12
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/METADATA +513 -58
- empathy_framework-3.8.2.dist-info/RECORD +333 -0
- empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/top_level.txt +5 -1
- empathy_healthcare_plugin/__init__.py +1 -2
- empathy_healthcare_plugin/monitors/__init__.py +9 -0
- empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
- empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
- empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
- empathy_llm_toolkit/__init__.py +7 -7
- empathy_llm_toolkit/agent_factory/__init__.py +53 -0
- empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
- empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
- empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
- empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
- empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
- empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
- empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
- empathy_llm_toolkit/agent_factory/base.py +305 -0
- empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
- empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
- empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
- empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
- empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
- empathy_llm_toolkit/agent_factory/decorators.py +286 -0
- empathy_llm_toolkit/agent_factory/factory.py +558 -0
- empathy_llm_toolkit/agent_factory/framework.py +192 -0
- empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
- empathy_llm_toolkit/agent_factory/resilient.py +320 -0
- empathy_llm_toolkit/claude_memory.py +14 -15
- empathy_llm_toolkit/cli/__init__.py +8 -0
- empathy_llm_toolkit/cli/sync_claude.py +487 -0
- empathy_llm_toolkit/code_health.py +177 -22
- empathy_llm_toolkit/config/__init__.py +29 -0
- empathy_llm_toolkit/config/unified.py +295 -0
- empathy_llm_toolkit/contextual_patterns.py +11 -12
- empathy_llm_toolkit/core.py +51 -49
- empathy_llm_toolkit/git_pattern_extractor.py +16 -12
- empathy_llm_toolkit/levels.py +6 -13
- empathy_llm_toolkit/pattern_confidence.py +14 -18
- empathy_llm_toolkit/pattern_resolver.py +10 -12
- empathy_llm_toolkit/pattern_summary.py +13 -11
- empathy_llm_toolkit/providers.py +194 -28
- empathy_llm_toolkit/routing/__init__.py +32 -0
- empathy_llm_toolkit/routing/model_router.py +362 -0
- empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
- empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
- empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
- empathy_llm_toolkit/security/README.md +262 -0
- empathy_llm_toolkit/security/__init__.py +62 -0
- empathy_llm_toolkit/security/audit_logger.py +929 -0
- empathy_llm_toolkit/security/audit_logger_example.py +152 -0
- empathy_llm_toolkit/security/pii_scrubber.py +640 -0
- empathy_llm_toolkit/security/secrets_detector.py +678 -0
- empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
- empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
- empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
- empathy_llm_toolkit/session_status.py +18 -20
- empathy_llm_toolkit/state.py +20 -21
- empathy_llm_toolkit/wizards/__init__.py +38 -0
- empathy_llm_toolkit/wizards/base_wizard.py +364 -0
- empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
- empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
- empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
- empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
- empathy_os/__init__.py +76 -77
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/{monitoring.py → agent_monitoring.py} +27 -27
- empathy_os/cache/__init__.py +117 -0
- empathy_os/cache/base.py +166 -0
- empathy_os/cache/dependency_manager.py +253 -0
- empathy_os/cache/hash_only.py +248 -0
- empathy_os/cache/hybrid.py +390 -0
- empathy_os/cache/storage.py +282 -0
- empathy_os/cli.py +515 -109
- empathy_os/cli_unified.py +189 -42
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/config.py +87 -36
- empathy_os/coordination.py +48 -54
- empathy_os/core.py +90 -99
- empathy_os/cost_tracker.py +20 -23
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/discovery.py +9 -11
- empathy_os/emergence.py +20 -21
- empathy_os/exceptions.py +18 -30
- empathy_os/feedback_loops.py +27 -30
- empathy_os/levels.py +31 -34
- empathy_os/leverage_points.py +27 -28
- empathy_os/logging_config.py +11 -12
- empathy_os/memory/__init__.py +195 -0
- empathy_os/memory/claude_memory.py +466 -0
- empathy_os/memory/config.py +224 -0
- empathy_os/memory/control_panel.py +1298 -0
- empathy_os/memory/edges.py +179 -0
- empathy_os/memory/graph.py +567 -0
- empathy_os/memory/long_term.py +1194 -0
- empathy_os/memory/nodes.py +179 -0
- empathy_os/memory/redis_bootstrap.py +540 -0
- empathy_os/memory/security/__init__.py +31 -0
- empathy_os/memory/security/audit_logger.py +930 -0
- empathy_os/memory/security/pii_scrubber.py +640 -0
- empathy_os/memory/security/secrets_detector.py +678 -0
- empathy_os/memory/short_term.py +2119 -0
- empathy_os/memory/storage/__init__.py +15 -0
- empathy_os/memory/summary_index.py +583 -0
- empathy_os/memory/unified.py +619 -0
- empathy_os/metrics/__init__.py +12 -0
- empathy_os/metrics/prompt_metrics.py +190 -0
- empathy_os/models/__init__.py +136 -0
- empathy_os/models/__main__.py +13 -0
- empathy_os/models/cli.py +655 -0
- empathy_os/models/empathy_executor.py +354 -0
- empathy_os/models/executor.py +252 -0
- empathy_os/models/fallback.py +671 -0
- empathy_os/models/provider_config.py +563 -0
- empathy_os/models/registry.py +382 -0
- empathy_os/models/tasks.py +302 -0
- empathy_os/models/telemetry.py +548 -0
- empathy_os/models/token_estimator.py +378 -0
- empathy_os/models/validation.py +274 -0
- empathy_os/monitoring/__init__.py +52 -0
- empathy_os/monitoring/alerts.py +23 -0
- empathy_os/monitoring/alerts_cli.py +268 -0
- empathy_os/monitoring/multi_backend.py +271 -0
- empathy_os/monitoring/otel_backend.py +363 -0
- empathy_os/optimization/__init__.py +19 -0
- empathy_os/optimization/context_optimizer.py +272 -0
- empathy_os/pattern_library.py +29 -28
- empathy_os/persistence.py +30 -34
- empathy_os/platform_utils.py +261 -0
- empathy_os/plugins/__init__.py +28 -0
- empathy_os/plugins/base.py +361 -0
- empathy_os/plugins/registry.py +268 -0
- empathy_os/project_index/__init__.py +30 -0
- empathy_os/project_index/cli.py +335 -0
- empathy_os/project_index/crew_integration.py +430 -0
- empathy_os/project_index/index.py +425 -0
- empathy_os/project_index/models.py +501 -0
- empathy_os/project_index/reports.py +473 -0
- empathy_os/project_index/scanner.py +538 -0
- empathy_os/prompts/__init__.py +61 -0
- empathy_os/prompts/config.py +77 -0
- empathy_os/prompts/context.py +177 -0
- empathy_os/prompts/parser.py +285 -0
- empathy_os/prompts/registry.py +313 -0
- empathy_os/prompts/templates.py +208 -0
- empathy_os/redis_config.py +144 -58
- empathy_os/redis_memory.py +53 -56
- empathy_os/resilience/__init__.py +56 -0
- empathy_os/resilience/circuit_breaker.py +256 -0
- empathy_os/resilience/fallback.py +179 -0
- empathy_os/resilience/health.py +300 -0
- empathy_os/resilience/retry.py +209 -0
- empathy_os/resilience/timeout.py +135 -0
- empathy_os/routing/__init__.py +43 -0
- empathy_os/routing/chain_executor.py +433 -0
- empathy_os/routing/classifier.py +217 -0
- empathy_os/routing/smart_router.py +234 -0
- empathy_os/routing/wizard_registry.py +307 -0
- empathy_os/templates.py +12 -11
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/trust_building.py +44 -36
- empathy_os/validation/__init__.py +19 -0
- empathy_os/validation/xml_validator.py +281 -0
- empathy_os/wizard_factory_cli.py +170 -0
- empathy_os/{workflows.py → workflow_commands.py} +123 -31
- empathy_os/workflows/__init__.py +360 -0
- empathy_os/workflows/base.py +1660 -0
- empathy_os/workflows/bug_predict.py +962 -0
- empathy_os/workflows/code_review.py +960 -0
- empathy_os/workflows/code_review_adapters.py +310 -0
- empathy_os/workflows/code_review_pipeline.py +720 -0
- empathy_os/workflows/config.py +600 -0
- empathy_os/workflows/dependency_check.py +648 -0
- empathy_os/workflows/document_gen.py +1069 -0
- empathy_os/workflows/documentation_orchestrator.py +1205 -0
- empathy_os/workflows/health_check.py +679 -0
- empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
- empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
- empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
- empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
- empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
- empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
- empathy_os/workflows/manage_documentation.py +804 -0
- empathy_os/workflows/new_sample_workflow1.py +146 -0
- empathy_os/workflows/new_sample_workflow1_README.md +150 -0
- empathy_os/workflows/perf_audit.py +687 -0
- empathy_os/workflows/pr_review.py +748 -0
- empathy_os/workflows/progress.py +445 -0
- empathy_os/workflows/progress_server.py +322 -0
- empathy_os/workflows/refactor_plan.py +693 -0
- empathy_os/workflows/release_prep.py +808 -0
- empathy_os/workflows/research_synthesis.py +404 -0
- empathy_os/workflows/secure_release.py +585 -0
- empathy_os/workflows/security_adapters.py +297 -0
- empathy_os/workflows/security_audit.py +1046 -0
- empathy_os/workflows/step_config.py +234 -0
- empathy_os/workflows/test5.py +125 -0
- empathy_os/workflows/test5_README.md +158 -0
- empathy_os/workflows/test_gen.py +1855 -0
- empathy_os/workflows/test_lifecycle.py +526 -0
- empathy_os/workflows/test_maintenance.py +626 -0
- empathy_os/workflows/test_maintenance_cli.py +590 -0
- empathy_os/workflows/test_maintenance_crew.py +821 -0
- empathy_os/workflows/xml_enhanced_crew.py +285 -0
- empathy_software_plugin/__init__.py +1 -2
- empathy_software_plugin/cli/__init__.py +120 -0
- empathy_software_plugin/cli/inspect.py +362 -0
- empathy_software_plugin/cli.py +35 -26
- empathy_software_plugin/plugin.py +4 -8
- empathy_software_plugin/wizards/__init__.py +42 -0
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
- empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
- empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
- empathy_software_plugin/wizards/base_wizard.py +288 -0
- empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
- empathy_software_plugin/wizards/code_review_wizard.py +606 -0
- empathy_software_plugin/wizards/debugging/__init__.py +50 -0
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
- empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
- empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
- empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
- empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
- empathy_software_plugin/wizards/debugging/verification.py +369 -0
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
- empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
- empathy_software_plugin/wizards/performance/__init__.py +9 -0
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
- empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
- empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
- empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
- empathy_software_plugin/wizards/security/__init__.py +32 -0
- empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
- empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
- empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
- empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
- empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
- empathy_software_plugin/wizards/testing/__init__.py +27 -0
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
- empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
- empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
- empathy_software_plugin/wizards/testing_wizard.py +274 -0
- hot_reload/README.md +473 -0
- hot_reload/__init__.py +62 -0
- hot_reload/config.py +84 -0
- hot_reload/integration.py +228 -0
- hot_reload/reloader.py +298 -0
- hot_reload/watcher.py +179 -0
- hot_reload/websocket.py +176 -0
- scaffolding/README.md +589 -0
- scaffolding/__init__.py +35 -0
- scaffolding/__main__.py +14 -0
- scaffolding/cli.py +240 -0
- test_generator/__init__.py +38 -0
- test_generator/__main__.py +14 -0
- test_generator/cli.py +226 -0
- test_generator/generator.py +325 -0
- test_generator/risk_analyzer.py +216 -0
- workflow_patterns/__init__.py +33 -0
- workflow_patterns/behavior.py +249 -0
- workflow_patterns/core.py +76 -0
- workflow_patterns/output.py +99 -0
- workflow_patterns/registry.py +255 -0
- workflow_patterns/structural.py +288 -0
- workflow_scaffolding/__init__.py +11 -0
- workflow_scaffolding/__main__.py +12 -0
- workflow_scaffolding/cli.py +206 -0
- workflow_scaffolding/generator.py +265 -0
- agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
- agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
- agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
- agents/compliance_anticipation_agent.py +0 -1427
- agents/epic_integration_wizard.py +0 -541
- agents/trust_building_behaviors.py +0 -891
- empathy_framework-3.2.3.dist-info/RECORD +0 -104
- empathy_framework-3.2.3.dist-info/entry_points.txt +0 -7
- empathy_llm_toolkit/htmlcov/status.json +0 -1
- empathy_llm_toolkit/security/htmlcov/status.json +0 -1
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
coach_wizards/__init__.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Coach Wizards - 17 Specialized Software Development Wizards
|
|
1
|
+
"""Coach Wizards - 17 Specialized Software Development Wizards
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy for software development using the Empathy Framework.
|
|
5
4
|
|
|
@@ -26,21 +25,21 @@ from .security_wizard import SecurityWizard
|
|
|
26
25
|
from .testing_wizard import TestingWizard
|
|
27
26
|
|
|
28
27
|
__all__ = [
|
|
29
|
-
"
|
|
30
|
-
"PerformanceWizard",
|
|
28
|
+
"APIWizard",
|
|
31
29
|
"AccessibilityWizard",
|
|
32
|
-
"
|
|
33
|
-
"
|
|
30
|
+
"CICDWizard",
|
|
31
|
+
"ComplianceWizard",
|
|
34
32
|
"DatabaseWizard",
|
|
35
|
-
"APIWizard",
|
|
36
33
|
"DebuggingWizard",
|
|
37
|
-
"ScalingWizard",
|
|
38
|
-
"ObservabilityWizard",
|
|
39
|
-
"CICDWizard",
|
|
40
34
|
"DocumentationWizard",
|
|
41
|
-
"
|
|
35
|
+
"LocalizationWizard",
|
|
42
36
|
"MigrationWizard",
|
|
43
37
|
"MonitoringWizard",
|
|
44
|
-
"
|
|
38
|
+
"ObservabilityWizard",
|
|
39
|
+
"PerformanceWizard",
|
|
45
40
|
"PromptEngineeringWizard",
|
|
41
|
+
"RefactoringWizard",
|
|
42
|
+
"ScalingWizard",
|
|
43
|
+
"SecurityWizard",
|
|
44
|
+
"TestingWizard",
|
|
46
45
|
]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
AccessibilityWizard - Web accessibility (WCAG) compliance
|
|
1
|
+
"""AccessibilityWizard - Web accessibility (WCAG) compliance
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy for Accessibility using the Empathy Framework.
|
|
5
4
|
|
|
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class AccessibilityWizard(BaseCoachWizard):
|
|
16
|
-
"""
|
|
17
|
-
Web accessibility (WCAG) compliance
|
|
15
|
+
"""Web accessibility (WCAG) compliance
|
|
18
16
|
|
|
19
17
|
Detects:
|
|
20
18
|
- missing alt text
|
|
@@ -36,8 +34,7 @@ class AccessibilityWizard(BaseCoachWizard):
|
|
|
36
34
|
)
|
|
37
35
|
|
|
38
36
|
def analyze_code(self, code: str, file_path: str, language: str) -> list[WizardIssue]:
|
|
39
|
-
"""
|
|
40
|
-
Analyze code for accessibility issues
|
|
37
|
+
"""Analyze code for accessibility issues
|
|
41
38
|
|
|
42
39
|
This is a reference implementation. In production, integrate with:
|
|
43
40
|
- Static analysis tools
|
|
@@ -57,10 +54,13 @@ class AccessibilityWizard(BaseCoachWizard):
|
|
|
57
54
|
return issues
|
|
58
55
|
|
|
59
56
|
def predict_future_issues(
|
|
60
|
-
self,
|
|
57
|
+
self,
|
|
58
|
+
code: str,
|
|
59
|
+
file_path: str,
|
|
60
|
+
project_context: dict[str, Any],
|
|
61
|
+
timeline_days: int = 90,
|
|
61
62
|
) -> list[WizardPrediction]:
|
|
62
|
-
"""
|
|
63
|
-
Level 4 Anticipatory: Predict accessibility issues {timeline_days} days ahead
|
|
63
|
+
"""Level 4 Anticipatory: Predict accessibility issues {timeline_days} days ahead
|
|
64
64
|
|
|
65
65
|
Uses:
|
|
66
66
|
- Historical patterns
|
|
@@ -76,16 +76,16 @@ class AccessibilityWizard(BaseCoachWizard):
|
|
|
76
76
|
|
|
77
77
|
self.logger.info(
|
|
78
78
|
f"{self.name} predicted {len(predictions)} future issues "
|
|
79
|
-
f"for {file_path} ({timeline_days} days ahead)"
|
|
79
|
+
f"for {file_path} ({timeline_days} days ahead)",
|
|
80
80
|
)
|
|
81
81
|
return predictions
|
|
82
82
|
|
|
83
83
|
def suggest_fixes(self, issue: WizardIssue) -> str:
|
|
84
|
-
"""
|
|
85
|
-
Suggest how to fix a accessibility issue
|
|
84
|
+
"""Suggest how to fix a accessibility issue
|
|
86
85
|
|
|
87
86
|
Returns:
|
|
88
87
|
Detailed fix suggestion with code examples
|
|
88
|
+
|
|
89
89
|
"""
|
|
90
90
|
# Implementation depends on issue type
|
|
91
91
|
return f"Fix suggestion for {issue.category} issue: {issue.message}"
|
coach_wizards/api_wizard.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
APIWizard - API design and integration analysis
|
|
1
|
+
"""APIWizard - API design and integration analysis
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy for API using the Empathy Framework.
|
|
5
4
|
|
|
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class APIWizard(BaseCoachWizard):
|
|
16
|
-
"""
|
|
17
|
-
API design and integration analysis
|
|
15
|
+
"""API design and integration analysis
|
|
18
16
|
|
|
19
17
|
Detects:
|
|
20
18
|
- inconsistent endpoints
|
|
@@ -36,8 +34,7 @@ class APIWizard(BaseCoachWizard):
|
|
|
36
34
|
)
|
|
37
35
|
|
|
38
36
|
def analyze_code(self, code: str, file_path: str, language: str) -> list[WizardIssue]:
|
|
39
|
-
"""
|
|
40
|
-
Analyze code for api issues
|
|
37
|
+
"""Analyze code for api issues
|
|
41
38
|
|
|
42
39
|
This is a reference implementation. In production, integrate with:
|
|
43
40
|
- Static analysis tools
|
|
@@ -57,10 +54,13 @@ class APIWizard(BaseCoachWizard):
|
|
|
57
54
|
return issues
|
|
58
55
|
|
|
59
56
|
def predict_future_issues(
|
|
60
|
-
self,
|
|
57
|
+
self,
|
|
58
|
+
code: str,
|
|
59
|
+
file_path: str,
|
|
60
|
+
project_context: dict[str, Any],
|
|
61
|
+
timeline_days: int = 90,
|
|
61
62
|
) -> list[WizardPrediction]:
|
|
62
|
-
"""
|
|
63
|
-
Level 4 Anticipatory: Predict api issues {timeline_days} days ahead
|
|
63
|
+
"""Level 4 Anticipatory: Predict api issues {timeline_days} days ahead
|
|
64
64
|
|
|
65
65
|
Uses:
|
|
66
66
|
- Historical patterns
|
|
@@ -76,16 +76,16 @@ class APIWizard(BaseCoachWizard):
|
|
|
76
76
|
|
|
77
77
|
self.logger.info(
|
|
78
78
|
f"{self.name} predicted {len(predictions)} future issues "
|
|
79
|
-
f"for {file_path} ({timeline_days} days ahead)"
|
|
79
|
+
f"for {file_path} ({timeline_days} days ahead)",
|
|
80
80
|
)
|
|
81
81
|
return predictions
|
|
82
82
|
|
|
83
83
|
def suggest_fixes(self, issue: WizardIssue) -> str:
|
|
84
|
-
"""
|
|
85
|
-
Suggest how to fix a api issue
|
|
84
|
+
"""Suggest how to fix a api issue
|
|
86
85
|
|
|
87
86
|
Returns:
|
|
88
87
|
Detailed fix suggestion with code examples
|
|
88
|
+
|
|
89
89
|
"""
|
|
90
90
|
# Implementation depends on issue type
|
|
91
91
|
return f"Fix suggestion for {issue.category} issue: {issue.message}"
|
coach_wizards/base_wizard.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Base Coach Wizard - Foundation for all Coach wizards
|
|
1
|
+
"""Base Coach Wizard - Foundation for all Coach wizards
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy implementation using the Empathy Framework.
|
|
5
4
|
|
|
@@ -56,8 +55,7 @@ class WizardResult:
|
|
|
56
55
|
|
|
57
56
|
|
|
58
57
|
class BaseCoachWizard(ABC):
|
|
59
|
-
"""
|
|
60
|
-
Base class for all Coach wizards
|
|
58
|
+
"""Base class for all Coach wizards
|
|
61
59
|
|
|
62
60
|
Implements Level 4 Anticipatory Empathy:
|
|
63
61
|
- Analyzes current code
|
|
@@ -73,8 +71,7 @@ class BaseCoachWizard(ABC):
|
|
|
73
71
|
|
|
74
72
|
@abstractmethod
|
|
75
73
|
def analyze_code(self, code: str, file_path: str, language: str) -> list[WizardIssue]:
|
|
76
|
-
"""
|
|
77
|
-
Analyze code for current issues
|
|
74
|
+
"""Analyze code for current issues
|
|
78
75
|
|
|
79
76
|
Args:
|
|
80
77
|
code: Source code to analyze
|
|
@@ -83,15 +80,18 @@ class BaseCoachWizard(ABC):
|
|
|
83
80
|
|
|
84
81
|
Returns:
|
|
85
82
|
List of issues found
|
|
83
|
+
|
|
86
84
|
"""
|
|
87
|
-
pass
|
|
88
85
|
|
|
89
86
|
@abstractmethod
|
|
90
87
|
def predict_future_issues(
|
|
91
|
-
self,
|
|
88
|
+
self,
|
|
89
|
+
code: str,
|
|
90
|
+
file_path: str,
|
|
91
|
+
project_context: dict[str, Any],
|
|
92
|
+
timeline_days: int = 90,
|
|
92
93
|
) -> list[WizardPrediction]:
|
|
93
|
-
"""
|
|
94
|
-
Level 4 Anticipatory: Predict issues 30-90 days ahead
|
|
94
|
+
"""Level 4 Anticipatory: Predict issues 30-90 days ahead
|
|
95
95
|
|
|
96
96
|
Args:
|
|
97
97
|
code: Source code to analyze
|
|
@@ -101,21 +101,20 @@ class BaseCoachWizard(ABC):
|
|
|
101
101
|
|
|
102
102
|
Returns:
|
|
103
103
|
List of predicted future issues
|
|
104
|
+
|
|
104
105
|
"""
|
|
105
|
-
pass
|
|
106
106
|
|
|
107
107
|
@abstractmethod
|
|
108
108
|
def suggest_fixes(self, issue: WizardIssue) -> str:
|
|
109
|
-
"""
|
|
110
|
-
Suggest how to fix an issue
|
|
109
|
+
"""Suggest how to fix an issue
|
|
111
110
|
|
|
112
111
|
Args:
|
|
113
112
|
issue: The issue to fix
|
|
114
113
|
|
|
115
114
|
Returns:
|
|
116
115
|
Fix suggestion with code examples
|
|
116
|
+
|
|
117
117
|
"""
|
|
118
|
-
pass
|
|
119
118
|
|
|
120
119
|
def run_full_analysis(
|
|
121
120
|
self,
|
|
@@ -124,8 +123,7 @@ class BaseCoachWizard(ABC):
|
|
|
124
123
|
language: str,
|
|
125
124
|
project_context: dict[str, Any] | None = None,
|
|
126
125
|
) -> WizardResult:
|
|
127
|
-
"""
|
|
128
|
-
Run complete analysis: current issues + future predictions
|
|
126
|
+
"""Run complete analysis: current issues + future predictions
|
|
129
127
|
|
|
130
128
|
Args:
|
|
131
129
|
code: Source code to analyze
|
|
@@ -135,6 +133,7 @@ class BaseCoachWizard(ABC):
|
|
|
135
133
|
|
|
136
134
|
Returns:
|
|
137
135
|
Complete wizard result
|
|
136
|
+
|
|
138
137
|
"""
|
|
139
138
|
start_time = datetime.now()
|
|
140
139
|
|
|
@@ -145,7 +144,10 @@ class BaseCoachWizard(ABC):
|
|
|
145
144
|
predictions = []
|
|
146
145
|
if project_context:
|
|
147
146
|
predictions = self.predict_future_issues(
|
|
148
|
-
code,
|
|
147
|
+
code,
|
|
148
|
+
file_path,
|
|
149
|
+
project_context,
|
|
150
|
+
timeline_days=90,
|
|
149
151
|
)
|
|
150
152
|
|
|
151
153
|
# Generate recommendations
|
|
@@ -167,7 +169,9 @@ class BaseCoachWizard(ABC):
|
|
|
167
169
|
)
|
|
168
170
|
|
|
169
171
|
def _generate_recommendations(
|
|
170
|
-
self,
|
|
172
|
+
self,
|
|
173
|
+
issues: list[WizardIssue],
|
|
174
|
+
predictions: list[WizardPrediction],
|
|
171
175
|
) -> list[str]:
|
|
172
176
|
"""Generate actionable recommendations"""
|
|
173
177
|
recommendations = []
|
|
@@ -181,13 +185,15 @@ class BaseCoachWizard(ABC):
|
|
|
181
185
|
high_probability_predictions = [p for p in predictions if p.probability > 0.7]
|
|
182
186
|
if high_probability_predictions:
|
|
183
187
|
recommendations.append(
|
|
184
|
-
f"Prevent {len(high_probability_predictions)} predicted issues with high probability"
|
|
188
|
+
f"Prevent {len(high_probability_predictions)} predicted issues with high probability",
|
|
185
189
|
)
|
|
186
190
|
|
|
187
191
|
return recommendations
|
|
188
192
|
|
|
189
193
|
def _generate_summary(
|
|
190
|
-
self,
|
|
194
|
+
self,
|
|
195
|
+
issues: list[WizardIssue],
|
|
196
|
+
predictions: list[WizardPrediction],
|
|
191
197
|
) -> str:
|
|
192
198
|
"""Generate human-readable summary"""
|
|
193
199
|
error_count = len([i for i in issues if i.severity == "error"])
|
coach_wizards/cicd_wizard.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
CICDWizard - CI/CD pipeline optimization
|
|
1
|
+
"""CICDWizard - CI/CD pipeline optimization
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy for DevOps using the Empathy Framework.
|
|
5
4
|
|
|
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class CICDWizard(BaseCoachWizard):
|
|
16
|
-
"""
|
|
17
|
-
CI/CD pipeline optimization
|
|
15
|
+
"""CI/CD pipeline optimization
|
|
18
16
|
|
|
19
17
|
Detects:
|
|
20
18
|
- slow pipelines
|
|
@@ -30,12 +28,13 @@ class CICDWizard(BaseCoachWizard):
|
|
|
30
28
|
|
|
31
29
|
def __init__(self):
|
|
32
30
|
super().__init__(
|
|
33
|
-
name="CICDWizard",
|
|
31
|
+
name="CICDWizard",
|
|
32
|
+
category="DevOps",
|
|
33
|
+
languages=["yaml", "groovy", "python", "bash"],
|
|
34
34
|
)
|
|
35
35
|
|
|
36
36
|
def analyze_code(self, code: str, file_path: str, language: str) -> list[WizardIssue]:
|
|
37
|
-
"""
|
|
38
|
-
Analyze code for devops issues
|
|
37
|
+
"""Analyze code for devops issues
|
|
39
38
|
|
|
40
39
|
This is a reference implementation. In production, integrate with:
|
|
41
40
|
- Static analysis tools
|
|
@@ -55,10 +54,13 @@ class CICDWizard(BaseCoachWizard):
|
|
|
55
54
|
return issues
|
|
56
55
|
|
|
57
56
|
def predict_future_issues(
|
|
58
|
-
self,
|
|
57
|
+
self,
|
|
58
|
+
code: str,
|
|
59
|
+
file_path: str,
|
|
60
|
+
project_context: dict[str, Any],
|
|
61
|
+
timeline_days: int = 90,
|
|
59
62
|
) -> list[WizardPrediction]:
|
|
60
|
-
"""
|
|
61
|
-
Level 4 Anticipatory: Predict devops issues {timeline_days} days ahead
|
|
63
|
+
"""Level 4 Anticipatory: Predict devops issues {timeline_days} days ahead
|
|
62
64
|
|
|
63
65
|
Uses:
|
|
64
66
|
- Historical patterns
|
|
@@ -74,16 +76,16 @@ class CICDWizard(BaseCoachWizard):
|
|
|
74
76
|
|
|
75
77
|
self.logger.info(
|
|
76
78
|
f"{self.name} predicted {len(predictions)} future issues "
|
|
77
|
-
f"for {file_path} ({timeline_days} days ahead)"
|
|
79
|
+
f"for {file_path} ({timeline_days} days ahead)",
|
|
78
80
|
)
|
|
79
81
|
return predictions
|
|
80
82
|
|
|
81
83
|
def suggest_fixes(self, issue: WizardIssue) -> str:
|
|
82
|
-
"""
|
|
83
|
-
Suggest how to fix a devops issue
|
|
84
|
+
"""Suggest how to fix a devops issue
|
|
84
85
|
|
|
85
86
|
Returns:
|
|
86
87
|
Detailed fix suggestion with code examples
|
|
88
|
+
|
|
87
89
|
"""
|
|
88
90
|
# Implementation depends on issue type
|
|
89
91
|
return f"Fix suggestion for {issue.category} issue: {issue.message}"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Code Reviewer Wizard
|
|
2
|
+
|
|
3
|
+
**Domain:** software
|
|
4
|
+
**Type:** Wizard
|
|
5
|
+
**Generated:** Pattern-Compose Methodology
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Auto-generated wizard using proven patterns from the Empathy Framework.
|
|
10
|
+
|
|
11
|
+
## Patterns Used
|
|
12
|
+
|
|
13
|
+
- **Empathy Level**: 0-4 empathy level configuration
|
|
14
|
+
- **User Guidance**: Help text, examples, and prompts
|
|
15
|
+
- **Code Analysis Input**: Standard code analysis input (code, file_path, language)
|
|
16
|
+
- **Risk Assessment**: Level 4 Anticipatory risk analysis
|
|
17
|
+
- **Prediction**: Level 4 Anticipatory prediction of future issues
|
|
18
|
+
- **Config Validation**: Validate wizard configuration on initialization
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from coach_wizards.code_reviewer_wizard import CodeReviewerWizard
|
|
24
|
+
|
|
25
|
+
wizard = CodeReviewerWizard()
|
|
26
|
+
result = await wizard.process(user_input="...")
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## API Endpoints
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Process with wizard
|
|
33
|
+
POST /api/wizard/code_reviewer/process
|
|
34
|
+
{
|
|
35
|
+
"input": "your input here",
|
|
36
|
+
"context": {}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Testing
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Run unit tests
|
|
44
|
+
pytest tests/unit/wizards/test_code_reviewer_wizard.py
|
|
45
|
+
|
|
46
|
+
# Run with coverage
|
|
47
|
+
pytest tests/unit/wizards/test_code_reviewer_wizard.py --cov
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Next Steps
|
|
51
|
+
|
|
52
|
+
1. Customize wizard logic as needed
|
|
53
|
+
2. Add domain-specific validation
|
|
54
|
+
3. Extend with additional features
|
|
55
|
+
4. Update tests for custom logic
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
**Generated by:** Empathy Framework - Wizard Factory
|
|
60
|
+
**Methodology:** Pattern-Compose
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"""Code reviewer Coach Wizard.
|
|
2
|
+
|
|
3
|
+
Auto-generated by Empathy Framework Scaffolding
|
|
4
|
+
Methodology: pattern-compose
|
|
5
|
+
Domain: software
|
|
6
|
+
Patterns: empathy_level, user_guidance, code_analysis_input, risk_assessment, prediction, config_validation
|
|
7
|
+
Generated: 2026-01-05T20:15:45.111917
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from fastapi import APIRouter, HTTPException
|
|
14
|
+
from pydantic import BaseModel, Field
|
|
15
|
+
|
|
16
|
+
from patterns import get_pattern_registry
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
router = APIRouter(prefix="/code_reviewer", tags=["code_reviewer"])
|
|
21
|
+
|
|
22
|
+
# Pattern registry for recommendations
|
|
23
|
+
registry = get_pattern_registry()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Request/Response Models
|
|
27
|
+
class AnalysisRequest(BaseModel):
|
|
28
|
+
"""Request to analyze code."""
|
|
29
|
+
|
|
30
|
+
code: str = Field(..., description="Code to analyze")
|
|
31
|
+
context: dict[str, Any] = Field(default_factory=dict, description="Additional context")
|
|
32
|
+
include_risk_assessment: bool = Field(default=True, description="Include risk analysis")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class AnalysisResult(BaseModel):
|
|
36
|
+
"""Analysis result."""
|
|
37
|
+
|
|
38
|
+
wizard_id: str
|
|
39
|
+
analysis: dict[str, Any]
|
|
40
|
+
risk_assessment: dict[str, Any] | None = None
|
|
41
|
+
predictions: list[dict[str, Any]] = Field(default_factory=list)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# In-memory session storage (replace with Redis in production)
|
|
45
|
+
sessions: dict[str, dict[str, Any]] = {}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@router.post("/analyze", response_model=AnalysisResult)
|
|
49
|
+
async def analyze_code(request: AnalysisRequest) -> AnalysisResult:
|
|
50
|
+
"""Analyze code and provide recommendations.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
request: Analysis request with code and context
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
Analysis results with recommendations
|
|
57
|
+
|
|
58
|
+
Raises:
|
|
59
|
+
HTTPException: If analysis fails
|
|
60
|
+
"""
|
|
61
|
+
try:
|
|
62
|
+
# Create session
|
|
63
|
+
wizard_id = f"code_reviewer_{len(sessions) + 1}"
|
|
64
|
+
|
|
65
|
+
# Perform code analysis
|
|
66
|
+
analysis = await _analyze_code(request.code, request.context)
|
|
67
|
+
|
|
68
|
+
result = AnalysisResult(
|
|
69
|
+
wizard_id=wizard_id,
|
|
70
|
+
analysis=analysis,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Perform risk assessment
|
|
74
|
+
if request.include_risk_assessment:
|
|
75
|
+
risk_assessment = await _assess_risk(analysis)
|
|
76
|
+
result.risk_assessment = risk_assessment
|
|
77
|
+
|
|
78
|
+
# Generate predictions
|
|
79
|
+
predictions = await _generate_predictions(analysis)
|
|
80
|
+
result.predictions = predictions
|
|
81
|
+
|
|
82
|
+
# Store session
|
|
83
|
+
sessions[wizard_id] = {
|
|
84
|
+
"wizard_id": wizard_id,
|
|
85
|
+
"code": request.code,
|
|
86
|
+
"analysis": analysis,
|
|
87
|
+
"result": result.model_dump(),
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
logger.info(f"Analysis complete for {wizard_id}")
|
|
91
|
+
return result
|
|
92
|
+
|
|
93
|
+
except Exception as e:
|
|
94
|
+
logger.exception(f"Analysis failed: {e}")
|
|
95
|
+
raise HTTPException(status_code=500, detail=f"Analysis failed: {str(e)}")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@router.get("/{wizard_id}/report", response_model=dict[str, Any])
|
|
99
|
+
async def get_report(wizard_id: str) -> dict[str, Any]:
|
|
100
|
+
"""Get analysis report.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
wizard_id: Wizard session ID
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Complete analysis report
|
|
107
|
+
|
|
108
|
+
Raises:
|
|
109
|
+
HTTPException: If session not found
|
|
110
|
+
"""
|
|
111
|
+
if wizard_id not in sessions:
|
|
112
|
+
raise HTTPException(status_code=404, detail="Session not found")
|
|
113
|
+
|
|
114
|
+
session = sessions[wizard_id]
|
|
115
|
+
return {
|
|
116
|
+
"wizard_id": wizard_id,
|
|
117
|
+
"analysis": session["analysis"],
|
|
118
|
+
"result": session["result"],
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# Helper functions
|
|
123
|
+
async def _analyze_code(code: str, context: dict[str, Any]) -> dict[str, Any]:
|
|
124
|
+
"""Analyze code (placeholder - implement actual analysis).
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
code: Code to analyze
|
|
128
|
+
context: Additional context
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
Analysis results
|
|
132
|
+
"""
|
|
133
|
+
# TODO: Implement actual code analysis
|
|
134
|
+
return {
|
|
135
|
+
"lines_of_code": len(code.split("\n")),
|
|
136
|
+
"complexity": "medium",
|
|
137
|
+
"issues_found": 0,
|
|
138
|
+
"context": context,
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
async def _assess_risk(analysis: dict[str, Any]) -> dict[str, Any]:
|
|
143
|
+
"""Assess risk based on analysis.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
analysis: Code analysis results
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
Risk assessment
|
|
150
|
+
"""
|
|
151
|
+
# TODO: Implement actual risk assessment
|
|
152
|
+
return {
|
|
153
|
+
"alert_level": "LOW",
|
|
154
|
+
"risk_score": 0.2,
|
|
155
|
+
"by_risk_level": {
|
|
156
|
+
"critical": 0,
|
|
157
|
+
"high": 0,
|
|
158
|
+
"medium": 0,
|
|
159
|
+
"low": 0,
|
|
160
|
+
},
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
async def _generate_predictions(analysis: dict[str, Any]) -> list[dict[str, Any]]:
|
|
165
|
+
"""Generate predictions about future issues.
|
|
166
|
+
|
|
167
|
+
Args:
|
|
168
|
+
analysis: Code analysis results
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
List of predictions
|
|
172
|
+
"""
|
|
173
|
+
# TODO: Implement actual predictions
|
|
174
|
+
return [
|
|
175
|
+
{
|
|
176
|
+
"type": "performance",
|
|
177
|
+
"confidence": 0.8,
|
|
178
|
+
"description": "May experience performance issues with large datasets",
|
|
179
|
+
}
|
|
180
|
+
]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
ComplianceWizard - Regulatory and compliance checking
|
|
1
|
+
"""ComplianceWizard - Regulatory and compliance checking
|
|
3
2
|
|
|
4
3
|
Level 4 Anticipatory Empathy for Compliance using the Empathy Framework.
|
|
5
4
|
|
|
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class ComplianceWizard(BaseCoachWizard):
|
|
16
|
-
"""
|
|
17
|
-
Regulatory and compliance checking
|
|
15
|
+
"""Regulatory and compliance checking
|
|
18
16
|
|
|
19
17
|
Detects:
|
|
20
18
|
- PII handling issues
|
|
@@ -36,8 +34,7 @@ class ComplianceWizard(BaseCoachWizard):
|
|
|
36
34
|
)
|
|
37
35
|
|
|
38
36
|
def analyze_code(self, code: str, file_path: str, language: str) -> list[WizardIssue]:
|
|
39
|
-
"""
|
|
40
|
-
Analyze code for compliance issues
|
|
37
|
+
"""Analyze code for compliance issues
|
|
41
38
|
|
|
42
39
|
This is a reference implementation. In production, integrate with:
|
|
43
40
|
- Static analysis tools
|
|
@@ -57,10 +54,13 @@ class ComplianceWizard(BaseCoachWizard):
|
|
|
57
54
|
return issues
|
|
58
55
|
|
|
59
56
|
def predict_future_issues(
|
|
60
|
-
self,
|
|
57
|
+
self,
|
|
58
|
+
code: str,
|
|
59
|
+
file_path: str,
|
|
60
|
+
project_context: dict[str, Any],
|
|
61
|
+
timeline_days: int = 90,
|
|
61
62
|
) -> list[WizardPrediction]:
|
|
62
|
-
"""
|
|
63
|
-
Level 4 Anticipatory: Predict compliance issues {timeline_days} days ahead
|
|
63
|
+
"""Level 4 Anticipatory: Predict compliance issues {timeline_days} days ahead
|
|
64
64
|
|
|
65
65
|
Uses:
|
|
66
66
|
- Historical patterns
|
|
@@ -76,16 +76,16 @@ class ComplianceWizard(BaseCoachWizard):
|
|
|
76
76
|
|
|
77
77
|
self.logger.info(
|
|
78
78
|
f"{self.name} predicted {len(predictions)} future issues "
|
|
79
|
-
f"for {file_path} ({timeline_days} days ahead)"
|
|
79
|
+
f"for {file_path} ({timeline_days} days ahead)",
|
|
80
80
|
)
|
|
81
81
|
return predictions
|
|
82
82
|
|
|
83
83
|
def suggest_fixes(self, issue: WizardIssue) -> str:
|
|
84
|
-
"""
|
|
85
|
-
Suggest how to fix a compliance issue
|
|
84
|
+
"""Suggest how to fix a compliance issue
|
|
86
85
|
|
|
87
86
|
Returns:
|
|
88
87
|
Detailed fix suggestion with code examples
|
|
88
|
+
|
|
89
89
|
"""
|
|
90
90
|
# Implementation depends on issue type
|
|
91
91
|
return f"Fix suggestion for {issue.category} issue: {issue.message}"
|