empathy-framework 3.5.6__py3-none-any.whl → 3.7.0__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.
Files changed (72) hide show
  1. agents/compliance_anticipation_agent.py +113 -118
  2. agents/compliance_db.py +339 -0
  3. agents/epic_integration_wizard.py +37 -48
  4. agents/notifications.py +291 -0
  5. agents/trust_building_behaviors.py +66 -85
  6. coach_wizards/__init__.py +11 -12
  7. coach_wizards/accessibility_wizard.py +12 -12
  8. coach_wizards/api_wizard.py +12 -12
  9. coach_wizards/base_wizard.py +26 -20
  10. coach_wizards/cicd_wizard.py +15 -13
  11. coach_wizards/compliance_wizard.py +12 -12
  12. coach_wizards/database_wizard.py +12 -12
  13. coach_wizards/debugging_wizard.py +12 -12
  14. coach_wizards/documentation_wizard.py +12 -12
  15. coach_wizards/generate_wizards.py +1 -2
  16. coach_wizards/localization_wizard.py +21 -14
  17. coach_wizards/migration_wizard.py +12 -12
  18. coach_wizards/monitoring_wizard.py +12 -12
  19. coach_wizards/observability_wizard.py +12 -12
  20. coach_wizards/performance_wizard.py +12 -12
  21. coach_wizards/prompt_engineering_wizard.py +22 -25
  22. coach_wizards/refactoring_wizard.py +12 -12
  23. coach_wizards/scaling_wizard.py +12 -12
  24. coach_wizards/security_wizard.py +12 -12
  25. coach_wizards/testing_wizard.py +12 -12
  26. {empathy_framework-3.5.6.dist-info → empathy_framework-3.7.0.dist-info}/METADATA +234 -30
  27. empathy_framework-3.7.0.dist-info/RECORD +105 -0
  28. empathy_healthcare_plugin/__init__.py +1 -2
  29. empathy_llm_toolkit/__init__.py +5 -6
  30. empathy_llm_toolkit/claude_memory.py +14 -15
  31. empathy_llm_toolkit/code_health.py +27 -19
  32. empathy_llm_toolkit/contextual_patterns.py +11 -12
  33. empathy_llm_toolkit/core.py +43 -49
  34. empathy_llm_toolkit/git_pattern_extractor.py +16 -12
  35. empathy_llm_toolkit/levels.py +6 -13
  36. empathy_llm_toolkit/pattern_confidence.py +14 -18
  37. empathy_llm_toolkit/pattern_resolver.py +10 -12
  38. empathy_llm_toolkit/pattern_summary.py +13 -11
  39. empathy_llm_toolkit/providers.py +27 -38
  40. empathy_llm_toolkit/session_status.py +18 -20
  41. empathy_llm_toolkit/state.py +20 -21
  42. empathy_os/__init__.py +72 -73
  43. empathy_os/cli.py +193 -98
  44. empathy_os/cli_unified.py +68 -41
  45. empathy_os/config.py +31 -31
  46. empathy_os/coordination.py +48 -54
  47. empathy_os/core.py +90 -99
  48. empathy_os/cost_tracker.py +20 -23
  49. empathy_os/discovery.py +9 -11
  50. empathy_os/emergence.py +20 -21
  51. empathy_os/exceptions.py +18 -30
  52. empathy_os/feedback_loops.py +27 -30
  53. empathy_os/levels.py +31 -34
  54. empathy_os/leverage_points.py +27 -28
  55. empathy_os/logging_config.py +11 -12
  56. empathy_os/monitoring.py +27 -27
  57. empathy_os/pattern_library.py +29 -28
  58. empathy_os/persistence.py +30 -34
  59. empathy_os/platform_utils.py +46 -47
  60. empathy_os/redis_config.py +14 -15
  61. empathy_os/redis_memory.py +53 -56
  62. empathy_os/templates.py +12 -11
  63. empathy_os/trust_building.py +44 -36
  64. empathy_os/workflow_commands.py +123 -31
  65. empathy_software_plugin/__init__.py +1 -2
  66. empathy_software_plugin/cli.py +32 -25
  67. empathy_software_plugin/plugin.py +4 -8
  68. empathy_framework-3.5.6.dist-info/RECORD +0 -103
  69. {empathy_framework-3.5.6.dist-info → empathy_framework-3.7.0.dist-info}/WHEEL +0 -0
  70. {empathy_framework-3.5.6.dist-info → empathy_framework-3.7.0.dist-info}/entry_points.txt +0 -0
  71. {empathy_framework-3.5.6.dist-info → empathy_framework-3.7.0.dist-info}/licenses/LICENSE +0 -0
  72. {empathy_framework-3.5.6.dist-info → empathy_framework-3.7.0.dist-info}/top_level.txt +0 -0
@@ -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, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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, file_path, project_context, timeline_days=90
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, issues: list[WizardIssue], predictions: list[WizardPrediction]
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, issues: list[WizardIssue], predictions: list[WizardPrediction]
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"])
@@ -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", category="DevOps", languages=["yaml", "groovy", "python", "bash"]
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, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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}"
@@ -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, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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}"
@@ -1,5 +1,4 @@
1
- """
2
- DatabaseWizard - Database optimization and schema analysis
1
+ """DatabaseWizard - Database optimization and schema analysis
3
2
 
4
3
  Level 4 Anticipatory Empathy for Database using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class DatabaseWizard(BaseCoachWizard):
16
- """
17
- Database optimization and schema analysis
15
+ """Database optimization and schema analysis
18
16
 
19
17
  Detects:
20
18
  - missing indexes
@@ -36,8 +34,7 @@ class DatabaseWizard(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 database issues
37
+ """Analyze code for database issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -57,10 +54,13 @@ class DatabaseWizard(BaseCoachWizard):
57
54
  return issues
58
55
 
59
56
  def predict_future_issues(
60
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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 database issues {timeline_days} days ahead
63
+ """Level 4 Anticipatory: Predict database issues {timeline_days} days ahead
64
64
 
65
65
  Uses:
66
66
  - Historical patterns
@@ -76,16 +76,16 @@ class DatabaseWizard(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 database issue
84
+ """Suggest how to fix a database 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}"
@@ -1,5 +1,4 @@
1
- """
2
- DebuggingWizard - Error detection and debugging assistance
1
+ """DebuggingWizard - Error detection and debugging assistance
3
2
 
4
3
  Level 4 Anticipatory Empathy for Debugging using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class DebuggingWizard(BaseCoachWizard):
16
- """
17
- Error detection and debugging assistance
15
+ """Error detection and debugging assistance
18
16
 
19
17
  Detects:
20
18
  - potential null references
@@ -36,8 +34,7 @@ class DebuggingWizard(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 debugging issues
37
+ """Analyze code for debugging issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -57,10 +54,13 @@ class DebuggingWizard(BaseCoachWizard):
57
54
  return issues
58
55
 
59
56
  def predict_future_issues(
60
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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 debugging issues {timeline_days} days ahead
63
+ """Level 4 Anticipatory: Predict debugging issues {timeline_days} days ahead
64
64
 
65
65
  Uses:
66
66
  - Historical patterns
@@ -76,16 +76,16 @@ class DebuggingWizard(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 debugging issue
84
+ """Suggest how to fix a debugging 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}"
@@ -1,5 +1,4 @@
1
- """
2
- DocumentationWizard - Documentation quality and completeness
1
+ """DocumentationWizard - Documentation quality and completeness
3
2
 
4
3
  Level 4 Anticipatory Empathy for Documentation using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class DocumentationWizard(BaseCoachWizard):
16
- """
17
- Documentation quality and completeness
15
+ """Documentation quality and completeness
18
16
 
19
17
  Detects:
20
18
  - missing docstrings
@@ -36,8 +34,7 @@ class DocumentationWizard(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 documentation issues
37
+ """Analyze code for documentation issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -57,10 +54,13 @@ class DocumentationWizard(BaseCoachWizard):
57
54
  return issues
58
55
 
59
56
  def predict_future_issues(
60
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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 documentation issues {timeline_days} days ahead
63
+ """Level 4 Anticipatory: Predict documentation issues {timeline_days} days ahead
64
64
 
65
65
  Uses:
66
66
  - Historical patterns
@@ -76,16 +76,16 @@ class DocumentationWizard(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 documentation issue
84
+ """Suggest how to fix a documentation 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}"
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env python3
2
- """
3
- Generate all 16 Coach wizards from template.
2
+ """Generate all 16 Coach wizards from template.
4
3
 
5
4
  This script generates the 16 specialized Coach wizards.
6
5
  This is a development/build utility, excluded from coverage via .coveragerc.
@@ -1,5 +1,4 @@
1
- """
2
- LocalizationWizard - Internationalization and localization
1
+ """LocalizationWizard - Internationalization and localization
3
2
 
4
3
  Level 4 Anticipatory Empathy for Localization using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class LocalizationWizard(BaseCoachWizard):
16
- """
17
- Internationalization and localization
15
+ """Internationalization and localization
18
16
 
19
17
  Detects:
20
18
  - hardcoded strings
@@ -36,8 +34,7 @@ class LocalizationWizard(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 localization issues
37
+ """Analyze code for localization issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -59,7 +56,11 @@ class LocalizationWizard(BaseCoachWizard):
59
56
  return issues
60
57
 
61
58
  def _check_hardcoded_string(
62
- self, line: str, line_num: int, file_path: str, language: str
59
+ self,
60
+ line: str,
61
+ line_num: int,
62
+ file_path: str,
63
+ language: str,
63
64
  ) -> WizardIssue | None:
64
65
  """Check a single line for hardcoded user-facing strings."""
65
66
  # Skip comments and imports
@@ -83,7 +84,10 @@ class LocalizationWizard(BaseCoachWizard):
83
84
  return None
84
85
 
85
86
  def _check_python_hardcoded(
86
- self, line: str, line_num: int, file_path: str
87
+ self,
88
+ line: str,
89
+ line_num: int,
90
+ file_path: str,
87
91
  ) -> WizardIssue | None:
88
92
  """Check Python code for hardcoded UI strings."""
89
93
  # Look for print() or raise with string literals
@@ -132,10 +136,13 @@ class LocalizationWizard(BaseCoachWizard):
132
136
  return None
133
137
 
134
138
  def predict_future_issues(
135
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
139
+ self,
140
+ code: str,
141
+ file_path: str,
142
+ project_context: dict[str, Any],
143
+ timeline_days: int = 90,
136
144
  ) -> list[WizardPrediction]:
137
- """
138
- Level 4 Anticipatory: Predict localization issues {timeline_days} days ahead
145
+ """Level 4 Anticipatory: Predict localization issues {timeline_days} days ahead
139
146
 
140
147
  Uses:
141
148
  - Historical patterns
@@ -151,16 +158,16 @@ class LocalizationWizard(BaseCoachWizard):
151
158
 
152
159
  self.logger.info(
153
160
  f"{self.name} predicted {len(predictions)} future issues "
154
- f"for {file_path} ({timeline_days} days ahead)"
161
+ f"for {file_path} ({timeline_days} days ahead)",
155
162
  )
156
163
  return predictions
157
164
 
158
165
  def suggest_fixes(self, issue: WizardIssue) -> str:
159
- """
160
- Suggest how to fix a localization issue
166
+ """Suggest how to fix a localization issue
161
167
 
162
168
  Returns:
163
169
  Detailed fix suggestion with code examples
170
+
164
171
  """
165
172
  # Implementation depends on issue type
166
173
  return f"Fix suggestion for {issue.category} issue: {issue.message}"
@@ -1,5 +1,4 @@
1
- """
2
- MigrationWizard - Code migration and upgrade assistance
1
+ """MigrationWizard - Code migration and upgrade assistance
3
2
 
4
3
  Level 4 Anticipatory Empathy for Migration using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class MigrationWizard(BaseCoachWizard):
16
- """
17
- Code migration and upgrade assistance
15
+ """Code migration and upgrade assistance
18
16
 
19
17
  Detects:
20
18
  - deprecated APIs
@@ -36,8 +34,7 @@ class MigrationWizard(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 migration issues
37
+ """Analyze code for migration issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -57,10 +54,13 @@ class MigrationWizard(BaseCoachWizard):
57
54
  return issues
58
55
 
59
56
  def predict_future_issues(
60
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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 migration issues {timeline_days} days ahead
63
+ """Level 4 Anticipatory: Predict migration issues {timeline_days} days ahead
64
64
 
65
65
  Uses:
66
66
  - Historical patterns
@@ -76,16 +76,16 @@ class MigrationWizard(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 migration issue
84
+ """Suggest how to fix a migration 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}"
@@ -1,5 +1,4 @@
1
- """
2
- MonitoringWizard - System monitoring and alerting
1
+ """MonitoringWizard - System monitoring and alerting
3
2
 
4
3
  Level 4 Anticipatory Empathy for Monitoring using the Empathy Framework.
5
4
 
@@ -13,8 +12,7 @@ from .base_wizard import BaseCoachWizard, WizardIssue, WizardPrediction
13
12
 
14
13
 
15
14
  class MonitoringWizard(BaseCoachWizard):
16
- """
17
- System monitoring and alerting
15
+ """System monitoring and alerting
18
16
 
19
17
  Detects:
20
18
  - missing alerts
@@ -36,8 +34,7 @@ class MonitoringWizard(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 monitoring issues
37
+ """Analyze code for monitoring issues
41
38
 
42
39
  This is a reference implementation. In production, integrate with:
43
40
  - Static analysis tools
@@ -57,10 +54,13 @@ class MonitoringWizard(BaseCoachWizard):
57
54
  return issues
58
55
 
59
56
  def predict_future_issues(
60
- self, code: str, file_path: str, project_context: dict[str, Any], timeline_days: int = 90
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 monitoring issues {timeline_days} days ahead
63
+ """Level 4 Anticipatory: Predict monitoring issues {timeline_days} days ahead
64
64
 
65
65
  Uses:
66
66
  - Historical patterns
@@ -76,16 +76,16 @@ class MonitoringWizard(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 monitoring issue
84
+ """Suggest how to fix a monitoring 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}"