empathy-framework 4.6.6__py3-none-any.whl → 4.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 (247) hide show
  1. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/METADATA +7 -6
  2. empathy_framework-4.7.0.dist-info/RECORD +354 -0
  3. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/top_level.txt +0 -2
  4. empathy_healthcare_plugin/monitors/monitoring/__init__.py +9 -9
  5. empathy_llm_toolkit/agent_factory/__init__.py +6 -6
  6. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +7 -10
  7. empathy_llm_toolkit/agents_md/__init__.py +22 -0
  8. empathy_llm_toolkit/agents_md/loader.py +218 -0
  9. empathy_llm_toolkit/agents_md/parser.py +271 -0
  10. empathy_llm_toolkit/agents_md/registry.py +307 -0
  11. empathy_llm_toolkit/commands/__init__.py +51 -0
  12. empathy_llm_toolkit/commands/context.py +375 -0
  13. empathy_llm_toolkit/commands/loader.py +301 -0
  14. empathy_llm_toolkit/commands/models.py +231 -0
  15. empathy_llm_toolkit/commands/parser.py +371 -0
  16. empathy_llm_toolkit/commands/registry.py +429 -0
  17. empathy_llm_toolkit/config/__init__.py +8 -8
  18. empathy_llm_toolkit/config/unified.py +3 -7
  19. empathy_llm_toolkit/context/__init__.py +22 -0
  20. empathy_llm_toolkit/context/compaction.py +455 -0
  21. empathy_llm_toolkit/context/manager.py +434 -0
  22. empathy_llm_toolkit/hooks/__init__.py +24 -0
  23. empathy_llm_toolkit/hooks/config.py +306 -0
  24. empathy_llm_toolkit/hooks/executor.py +289 -0
  25. empathy_llm_toolkit/hooks/registry.py +302 -0
  26. empathy_llm_toolkit/hooks/scripts/__init__.py +39 -0
  27. empathy_llm_toolkit/hooks/scripts/evaluate_session.py +201 -0
  28. empathy_llm_toolkit/hooks/scripts/first_time_init.py +285 -0
  29. empathy_llm_toolkit/hooks/scripts/pre_compact.py +207 -0
  30. empathy_llm_toolkit/hooks/scripts/session_end.py +183 -0
  31. empathy_llm_toolkit/hooks/scripts/session_start.py +163 -0
  32. empathy_llm_toolkit/hooks/scripts/suggest_compact.py +225 -0
  33. empathy_llm_toolkit/learning/__init__.py +30 -0
  34. empathy_llm_toolkit/learning/evaluator.py +438 -0
  35. empathy_llm_toolkit/learning/extractor.py +514 -0
  36. empathy_llm_toolkit/learning/storage.py +560 -0
  37. empathy_llm_toolkit/providers.py +4 -11
  38. empathy_llm_toolkit/security/__init__.py +17 -17
  39. empathy_llm_toolkit/utils/tokens.py +2 -5
  40. empathy_os/__init__.py +202 -70
  41. empathy_os/cache_monitor.py +5 -3
  42. empathy_os/cli/__init__.py +11 -55
  43. empathy_os/cli/__main__.py +29 -15
  44. empathy_os/cli/commands/inspection.py +21 -12
  45. empathy_os/cli/commands/memory.py +4 -12
  46. empathy_os/cli/commands/profiling.py +198 -0
  47. empathy_os/cli/commands/utilities.py +27 -7
  48. empathy_os/cli.py +28 -57
  49. empathy_os/cli_unified.py +525 -1164
  50. empathy_os/cost_tracker.py +9 -3
  51. empathy_os/dashboard/server.py +200 -2
  52. empathy_os/hot_reload/__init__.py +7 -7
  53. empathy_os/hot_reload/config.py +6 -7
  54. empathy_os/hot_reload/integration.py +35 -35
  55. empathy_os/hot_reload/reloader.py +57 -57
  56. empathy_os/hot_reload/watcher.py +28 -28
  57. empathy_os/hot_reload/websocket.py +2 -2
  58. empathy_os/memory/__init__.py +11 -4
  59. empathy_os/memory/claude_memory.py +1 -1
  60. empathy_os/memory/cross_session.py +8 -12
  61. empathy_os/memory/edges.py +6 -6
  62. empathy_os/memory/file_session.py +770 -0
  63. empathy_os/memory/graph.py +30 -30
  64. empathy_os/memory/nodes.py +6 -6
  65. empathy_os/memory/short_term.py +15 -9
  66. empathy_os/memory/unified.py +606 -140
  67. empathy_os/meta_workflows/agent_creator.py +3 -9
  68. empathy_os/meta_workflows/cli_meta_workflows.py +113 -53
  69. empathy_os/meta_workflows/form_engine.py +6 -18
  70. empathy_os/meta_workflows/intent_detector.py +64 -24
  71. empathy_os/meta_workflows/models.py +3 -1
  72. empathy_os/meta_workflows/pattern_learner.py +13 -31
  73. empathy_os/meta_workflows/plan_generator.py +55 -47
  74. empathy_os/meta_workflows/session_context.py +2 -3
  75. empathy_os/meta_workflows/workflow.py +20 -51
  76. empathy_os/models/cli.py +2 -2
  77. empathy_os/models/tasks.py +1 -2
  78. empathy_os/models/telemetry.py +4 -1
  79. empathy_os/models/token_estimator.py +3 -1
  80. empathy_os/monitoring/alerts.py +938 -9
  81. empathy_os/monitoring/alerts_cli.py +346 -183
  82. empathy_os/orchestration/execution_strategies.py +12 -29
  83. empathy_os/orchestration/pattern_learner.py +20 -26
  84. empathy_os/orchestration/real_tools.py +6 -15
  85. empathy_os/platform_utils.py +2 -1
  86. empathy_os/plugins/__init__.py +2 -2
  87. empathy_os/plugins/base.py +64 -64
  88. empathy_os/plugins/registry.py +32 -32
  89. empathy_os/project_index/index.py +49 -15
  90. empathy_os/project_index/models.py +1 -2
  91. empathy_os/project_index/reports.py +1 -1
  92. empathy_os/project_index/scanner.py +1 -0
  93. empathy_os/redis_memory.py +10 -7
  94. empathy_os/resilience/__init__.py +1 -1
  95. empathy_os/resilience/health.py +10 -10
  96. empathy_os/routing/__init__.py +7 -7
  97. empathy_os/routing/chain_executor.py +37 -37
  98. empathy_os/routing/classifier.py +36 -36
  99. empathy_os/routing/smart_router.py +40 -40
  100. empathy_os/routing/{wizard_registry.py → workflow_registry.py} +47 -47
  101. empathy_os/scaffolding/__init__.py +8 -8
  102. empathy_os/scaffolding/__main__.py +1 -1
  103. empathy_os/scaffolding/cli.py +28 -28
  104. empathy_os/socratic/__init__.py +3 -19
  105. empathy_os/socratic/ab_testing.py +25 -36
  106. empathy_os/socratic/blueprint.py +38 -38
  107. empathy_os/socratic/cli.py +34 -20
  108. empathy_os/socratic/collaboration.py +30 -28
  109. empathy_os/socratic/domain_templates.py +9 -1
  110. empathy_os/socratic/embeddings.py +17 -13
  111. empathy_os/socratic/engine.py +135 -70
  112. empathy_os/socratic/explainer.py +70 -60
  113. empathy_os/socratic/feedback.py +24 -19
  114. empathy_os/socratic/forms.py +15 -10
  115. empathy_os/socratic/generator.py +51 -35
  116. empathy_os/socratic/llm_analyzer.py +25 -23
  117. empathy_os/socratic/mcp_server.py +99 -159
  118. empathy_os/socratic/session.py +19 -13
  119. empathy_os/socratic/storage.py +98 -67
  120. empathy_os/socratic/success.py +38 -27
  121. empathy_os/socratic/visual_editor.py +51 -39
  122. empathy_os/socratic/web_ui.py +99 -66
  123. empathy_os/telemetry/cli.py +3 -1
  124. empathy_os/telemetry/usage_tracker.py +1 -3
  125. empathy_os/test_generator/__init__.py +3 -3
  126. empathy_os/test_generator/cli.py +28 -28
  127. empathy_os/test_generator/generator.py +64 -66
  128. empathy_os/test_generator/risk_analyzer.py +11 -11
  129. empathy_os/vscode_bridge.py +173 -0
  130. empathy_os/workflows/__init__.py +212 -120
  131. empathy_os/workflows/batch_processing.py +8 -24
  132. empathy_os/workflows/bug_predict.py +1 -1
  133. empathy_os/workflows/code_review.py +20 -5
  134. empathy_os/workflows/code_review_pipeline.py +13 -8
  135. empathy_os/workflows/keyboard_shortcuts/workflow.py +6 -2
  136. empathy_os/workflows/manage_documentation.py +1 -0
  137. empathy_os/workflows/orchestrated_health_check.py +6 -11
  138. empathy_os/workflows/orchestrated_release_prep.py +3 -3
  139. empathy_os/workflows/pr_review.py +18 -10
  140. empathy_os/workflows/progressive/__init__.py +2 -12
  141. empathy_os/workflows/progressive/cli.py +14 -37
  142. empathy_os/workflows/progressive/core.py +12 -12
  143. empathy_os/workflows/progressive/orchestrator.py +166 -144
  144. empathy_os/workflows/progressive/reports.py +22 -31
  145. empathy_os/workflows/progressive/telemetry.py +8 -14
  146. empathy_os/workflows/progressive/test_gen.py +29 -48
  147. empathy_os/workflows/progressive/workflow.py +31 -70
  148. empathy_os/workflows/release_prep.py +21 -6
  149. empathy_os/workflows/release_prep_crew.py +1 -0
  150. empathy_os/workflows/secure_release.py +13 -6
  151. empathy_os/workflows/security_audit.py +8 -3
  152. empathy_os/workflows/test_coverage_boost_crew.py +3 -2
  153. empathy_os/workflows/test_maintenance_crew.py +1 -0
  154. empathy_os/workflows/test_runner.py +16 -12
  155. empathy_software_plugin/SOFTWARE_PLUGIN_README.md +25 -703
  156. empathy_software_plugin/cli.py +0 -122
  157. coach_wizards/__init__.py +0 -45
  158. coach_wizards/accessibility_wizard.py +0 -91
  159. coach_wizards/api_wizard.py +0 -91
  160. coach_wizards/base_wizard.py +0 -209
  161. coach_wizards/cicd_wizard.py +0 -91
  162. coach_wizards/code_reviewer_README.md +0 -60
  163. coach_wizards/code_reviewer_wizard.py +0 -180
  164. coach_wizards/compliance_wizard.py +0 -91
  165. coach_wizards/database_wizard.py +0 -91
  166. coach_wizards/debugging_wizard.py +0 -91
  167. coach_wizards/documentation_wizard.py +0 -91
  168. coach_wizards/generate_wizards.py +0 -347
  169. coach_wizards/localization_wizard.py +0 -173
  170. coach_wizards/migration_wizard.py +0 -91
  171. coach_wizards/monitoring_wizard.py +0 -91
  172. coach_wizards/observability_wizard.py +0 -91
  173. coach_wizards/performance_wizard.py +0 -91
  174. coach_wizards/prompt_engineering_wizard.py +0 -661
  175. coach_wizards/refactoring_wizard.py +0 -91
  176. coach_wizards/scaling_wizard.py +0 -90
  177. coach_wizards/security_wizard.py +0 -92
  178. coach_wizards/testing_wizard.py +0 -91
  179. empathy_framework-4.6.6.dist-info/RECORD +0 -410
  180. empathy_llm_toolkit/wizards/__init__.py +0 -43
  181. empathy_llm_toolkit/wizards/base_wizard.py +0 -364
  182. empathy_llm_toolkit/wizards/customer_support_wizard.py +0 -190
  183. empathy_llm_toolkit/wizards/healthcare_wizard.py +0 -378
  184. empathy_llm_toolkit/wizards/patient_assessment_README.md +0 -64
  185. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +0 -193
  186. empathy_llm_toolkit/wizards/technology_wizard.py +0 -209
  187. empathy_os/wizard_factory_cli.py +0 -170
  188. empathy_software_plugin/wizards/__init__.py +0 -42
  189. empathy_software_plugin/wizards/advanced_debugging_wizard.py +0 -395
  190. empathy_software_plugin/wizards/agent_orchestration_wizard.py +0 -511
  191. empathy_software_plugin/wizards/ai_collaboration_wizard.py +0 -503
  192. empathy_software_plugin/wizards/ai_context_wizard.py +0 -441
  193. empathy_software_plugin/wizards/ai_documentation_wizard.py +0 -503
  194. empathy_software_plugin/wizards/base_wizard.py +0 -288
  195. empathy_software_plugin/wizards/book_chapter_wizard.py +0 -519
  196. empathy_software_plugin/wizards/code_review_wizard.py +0 -604
  197. empathy_software_plugin/wizards/debugging/__init__.py +0 -50
  198. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +0 -414
  199. empathy_software_plugin/wizards/debugging/config_loaders.py +0 -446
  200. empathy_software_plugin/wizards/debugging/fix_applier.py +0 -469
  201. empathy_software_plugin/wizards/debugging/language_patterns.py +0 -385
  202. empathy_software_plugin/wizards/debugging/linter_parsers.py +0 -470
  203. empathy_software_plugin/wizards/debugging/verification.py +0 -369
  204. empathy_software_plugin/wizards/enhanced_testing_wizard.py +0 -537
  205. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +0 -816
  206. empathy_software_plugin/wizards/multi_model_wizard.py +0 -501
  207. empathy_software_plugin/wizards/pattern_extraction_wizard.py +0 -422
  208. empathy_software_plugin/wizards/pattern_retriever_wizard.py +0 -400
  209. empathy_software_plugin/wizards/performance/__init__.py +0 -9
  210. empathy_software_plugin/wizards/performance/bottleneck_detector.py +0 -221
  211. empathy_software_plugin/wizards/performance/profiler_parsers.py +0 -278
  212. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +0 -429
  213. empathy_software_plugin/wizards/performance_profiling_wizard.py +0 -305
  214. empathy_software_plugin/wizards/prompt_engineering_wizard.py +0 -425
  215. empathy_software_plugin/wizards/rag_pattern_wizard.py +0 -461
  216. empathy_software_plugin/wizards/security/__init__.py +0 -32
  217. empathy_software_plugin/wizards/security/exploit_analyzer.py +0 -290
  218. empathy_software_plugin/wizards/security/owasp_patterns.py +0 -241
  219. empathy_software_plugin/wizards/security/vulnerability_scanner.py +0 -604
  220. empathy_software_plugin/wizards/security_analysis_wizard.py +0 -322
  221. empathy_software_plugin/wizards/security_learning_wizard.py +0 -740
  222. empathy_software_plugin/wizards/tech_debt_wizard.py +0 -726
  223. empathy_software_plugin/wizards/testing/__init__.py +0 -27
  224. empathy_software_plugin/wizards/testing/coverage_analyzer.py +0 -459
  225. empathy_software_plugin/wizards/testing/quality_analyzer.py +0 -525
  226. empathy_software_plugin/wizards/testing/test_suggester.py +0 -533
  227. empathy_software_plugin/wizards/testing_wizard.py +0 -274
  228. wizards/__init__.py +0 -82
  229. wizards/admission_assessment_wizard.py +0 -644
  230. wizards/care_plan.py +0 -321
  231. wizards/clinical_assessment.py +0 -769
  232. wizards/discharge_planning.py +0 -77
  233. wizards/discharge_summary_wizard.py +0 -468
  234. wizards/dosage_calculation.py +0 -497
  235. wizards/incident_report_wizard.py +0 -454
  236. wizards/medication_reconciliation.py +0 -85
  237. wizards/nursing_assessment.py +0 -171
  238. wizards/patient_education.py +0 -654
  239. wizards/quality_improvement.py +0 -705
  240. wizards/sbar_report.py +0 -324
  241. wizards/sbar_wizard.py +0 -608
  242. wizards/shift_handoff_wizard.py +0 -535
  243. wizards/soap_note_wizard.py +0 -679
  244. wizards/treatment_plan.py +0 -15
  245. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/WHEEL +0 -0
  246. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/entry_points.txt +0 -0
  247. {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -46,10 +46,7 @@ from typing import Any
46
46
  from empathy_os.config import _validate_file_path
47
47
 
48
48
  from ..orchestration.agent_templates import AgentTemplate, get_template
49
- from ..orchestration.execution_strategies import (
50
- ParallelStrategy,
51
- StrategyResult,
52
- )
49
+ from ..orchestration.execution_strategies import ParallelStrategy, StrategyResult
53
50
  from ..orchestration.meta_orchestrator import MetaOrchestrator
54
51
 
55
52
  logger = logging.getLogger(__name__)
@@ -184,7 +181,7 @@ class HealthCheckReport:
184
181
  bar = "█" * bar_length
185
182
  lines.append(
186
183
  f"{status} {category.name:15} {category.score:5.1f}/100 "
187
- f"(weight: {category.weight*100:2.0f}%) {bar}"
184
+ f"(weight: {category.weight * 100:2.0f}%) {bar}"
188
185
  )
189
186
 
190
187
  # Show issues for failing categories
@@ -318,7 +315,7 @@ class OrchestratedHealthCheckWorkflow:
318
315
  self,
319
316
  project_root: str | None = None,
320
317
  context: dict[str, Any] | None = None,
321
- **kwargs # Absorb extra parameters from VSCode/CLI (target, etc.)
318
+ **kwargs, # Absorb extra parameters from VSCode/CLI (target, etc.)
322
319
  ) -> HealthCheckReport:
323
320
  """Execute health check workflow.
324
321
 
@@ -334,8 +331,8 @@ class OrchestratedHealthCheckWorkflow:
334
331
  ValueError: If project_root is invalid
335
332
  """
336
333
  # Map 'target' to 'project_root' for VSCode compatibility
337
- if 'target' in kwargs and not project_root:
338
- project_root = kwargs['target']
334
+ if "target" in kwargs and not project_root:
335
+ project_root = kwargs["target"]
339
336
  if project_root:
340
337
  self.project_root = Path(project_root).resolve()
341
338
 
@@ -639,9 +636,7 @@ class OrchestratedHealthCheckWorkflow:
639
636
  recommendations.append(
640
637
  f"🧪 Increase test coverage to 80%+ (currently {category.score:.1f}%)"
641
638
  )
642
- recommendations.append(
643
- " → Run: pytest --cov=src --cov-report=term-missing"
644
- )
639
+ recommendations.append(" → Run: pytest --cov=src --cov-report=term-missing")
645
640
  recommendations.append(
646
641
  " → Or use: empathy workflow run test-gen --path <file>"
647
642
  )
@@ -294,7 +294,7 @@ class OrchestratedReleasePrepWorkflow:
294
294
  self,
295
295
  path: str = ".",
296
296
  context: dict[str, Any] | None = None,
297
- **kwargs # Absorb extra parameters from VSCode/CLI (target, etc.)
297
+ **kwargs, # Absorb extra parameters from VSCode/CLI (target, etc.)
298
298
  ) -> ReleaseReadinessReport:
299
299
  """Execute release preparation workflow.
300
300
 
@@ -310,8 +310,8 @@ class OrchestratedReleasePrepWorkflow:
310
310
  ValueError: If path is invalid
311
311
  """
312
312
  # Map 'target' to 'path' for VSCode compatibility
313
- if 'target' in kwargs and path == ".":
314
- path = kwargs['target']
313
+ if "target" in kwargs and path == ".":
314
+ path = kwargs["target"]
315
315
  if not path or not isinstance(path, str):
316
316
  raise ValueError("path must be a non-empty string")
317
317
 
@@ -356,11 +356,15 @@ class PRReviewWorkflow:
356
356
  files_changed: list[str],
357
357
  ) -> dict | None:
358
358
  """Run CodeReviewCrew."""
359
- from .code_review_adapters import (
360
- _check_crew_available,
361
- _get_crew_review,
362
- crew_report_to_workflow_format,
363
- )
359
+ try:
360
+ from .code_review_adapters import (
361
+ _check_crew_available,
362
+ _get_crew_review,
363
+ crew_report_to_workflow_format,
364
+ )
365
+ except ImportError:
366
+ logger.info("CodeReviewCrew adapters not installed")
367
+ return None
364
368
 
365
369
  if not _check_crew_available():
366
370
  logger.info("CodeReviewCrew not available")
@@ -381,11 +385,15 @@ class PRReviewWorkflow:
381
385
  target_path: str,
382
386
  ) -> dict | None:
383
387
  """Run SecurityAuditCrew."""
384
- from .security_adapters import (
385
- _check_crew_available,
386
- _get_crew_audit,
387
- crew_report_to_workflow_format,
388
- )
388
+ try:
389
+ from .security_adapters import (
390
+ _check_crew_available,
391
+ _get_crew_audit,
392
+ crew_report_to_workflow_format,
393
+ )
394
+ except ImportError:
395
+ logger.info("SecurityAuditCrew adapters not installed")
396
+ return None
389
397
 
390
398
  if not _check_crew_available():
391
399
  logger.info("SecurityAuditCrew not available")
@@ -43,12 +43,8 @@ from empathy_os.workflows.progressive.core import (
43
43
  Tier,
44
44
  TierResult,
45
45
  )
46
- from empathy_os.workflows.progressive.orchestrator import (
47
- MetaOrchestrator,
48
- )
49
- from empathy_os.workflows.progressive.telemetry import (
50
- ProgressiveTelemetry,
51
- )
46
+ from empathy_os.workflows.progressive.orchestrator import MetaOrchestrator
47
+ from empathy_os.workflows.progressive.telemetry import ProgressiveTelemetry
52
48
  from empathy_os.workflows.progressive.test_gen import (
53
49
  ProgressiveTestGenWorkflow,
54
50
  calculate_coverage,
@@ -63,27 +59,21 @@ from empathy_os.workflows.progressive.workflow import (
63
59
  __all__ = [
64
60
  # Enums
65
61
  "Tier",
66
-
67
62
  # Core data structures
68
63
  "FailureAnalysis",
69
64
  "TierResult",
70
65
  "ProgressiveWorkflowResult",
71
66
  "EscalationConfig",
72
-
73
67
  # Base classes
74
68
  "ProgressiveWorkflow",
75
69
  "MetaOrchestrator",
76
-
77
70
  # Telemetry
78
71
  "ProgressiveTelemetry",
79
-
80
72
  # Exceptions
81
73
  "BudgetExceededError",
82
74
  "UserCancelledError",
83
-
84
75
  # Workflows
85
76
  "ProgressiveTestGenWorkflow",
86
-
87
77
  # Utilities
88
78
  "execute_test_file",
89
79
  "calculate_coverage",
@@ -69,6 +69,7 @@ def cmd_show_report(args: argparse.Namespace) -> int:
69
69
 
70
70
  if args.json:
71
71
  import json
72
+
72
73
  print(json.dumps(result_data, indent=2))
73
74
  else:
74
75
  # Show human-readable report
@@ -103,6 +104,7 @@ def cmd_analytics(args: argparse.Namespace) -> int:
103
104
 
104
105
  if args.json:
105
106
  import json
107
+
106
108
  print(json.dumps(analytics, indent=2))
107
109
  else:
108
110
  report = format_cost_analytics_report(analytics)
@@ -125,9 +127,7 @@ def cmd_cleanup(args: argparse.Namespace) -> int:
125
127
  dry_run = args.dry_run
126
128
 
127
129
  deleted, retained = cleanup_old_results(
128
- storage_path=storage_path,
129
- retention_days=retention_days,
130
- dry_run=dry_run
130
+ storage_path=storage_path, retention_days=retention_days, dry_run=dry_run
131
131
  )
132
132
 
133
133
  if dry_run:
@@ -149,70 +149,47 @@ def create_parser() -> argparse.ArgumentParser:
149
149
  Configured argument parser
150
150
  """
151
151
  parser = argparse.ArgumentParser(
152
- prog="empathy progressive",
153
- description="Manage progressive tier escalation workflows"
152
+ prog="empathy progressive", description="Manage progressive tier escalation workflows"
154
153
  )
155
154
 
156
155
  parser.add_argument(
157
156
  "--storage-path",
158
157
  type=str,
159
158
  default=None,
160
- help="Custom storage path (default: .empathy/progressive_runs)"
159
+ help="Custom storage path (default: .empathy/progressive_runs)",
161
160
  )
162
161
 
163
162
  subparsers = parser.add_subparsers(dest="command", help="Available commands")
164
163
 
165
164
  # List command
166
- list_parser = subparsers.add_parser(
167
- "list",
168
- help="List all saved progressive workflow results"
169
- )
165
+ list_parser = subparsers.add_parser("list", help="List all saved progressive workflow results")
170
166
  list_parser.set_defaults(func=cmd_list_results)
171
167
 
172
168
  # Show command
173
- show_parser = subparsers.add_parser(
174
- "show",
175
- help="Show detailed report for a specific task"
176
- )
177
- show_parser.add_argument(
178
- "task_id",
179
- type=str,
180
- help="Task ID to display"
181
- )
182
- show_parser.add_argument(
183
- "--json",
184
- action="store_true",
185
- help="Output in JSON format"
186
- )
169
+ show_parser = subparsers.add_parser("show", help="Show detailed report for a specific task")
170
+ show_parser.add_argument("task_id", type=str, help="Task ID to display")
171
+ show_parser.add_argument("--json", action="store_true", help="Output in JSON format")
187
172
  show_parser.set_defaults(func=cmd_show_report)
188
173
 
189
174
  # Analytics command
190
- analytics_parser = subparsers.add_parser(
191
- "analytics",
192
- help="Show cost optimization analytics"
193
- )
194
- analytics_parser.add_argument(
195
- "--json",
196
- action="store_true",
197
- help="Output in JSON format"
198
- )
175
+ analytics_parser = subparsers.add_parser("analytics", help="Show cost optimization analytics")
176
+ analytics_parser.add_argument("--json", action="store_true", help="Output in JSON format")
199
177
  analytics_parser.set_defaults(func=cmd_analytics)
200
178
 
201
179
  # Cleanup command
202
180
  cleanup_parser = subparsers.add_parser(
203
- "cleanup",
204
- help="Clean up old progressive workflow results"
181
+ "cleanup", help="Clean up old progressive workflow results"
205
182
  )
206
183
  cleanup_parser.add_argument(
207
184
  "--retention-days",
208
185
  type=int,
209
186
  default=30,
210
- help="Number of days to retain results (default: 30)"
187
+ help="Number of days to retain results (default: 30)",
211
188
  )
212
189
  cleanup_parser.add_argument(
213
190
  "--dry-run",
214
191
  action="store_true",
215
- help="Show what would be deleted without actually deleting"
192
+ help="Show what would be deleted without actually deleting",
216
193
  )
217
194
  cleanup_parser.set_defaults(func=cmd_cleanup)
218
195
 
@@ -19,6 +19,7 @@ class Tier(Enum):
19
19
  CAPABLE: Mid-tier models (e.g., claude-3-5-sonnet, gpt-4o)
20
20
  PREMIUM: High-end models (e.g., claude-opus-4, o1)
21
21
  """
22
+
22
23
  CHEAP = "cheap"
23
24
  CAPABLE = "capable"
24
25
  PREMIUM = "premium"
@@ -116,10 +117,10 @@ class FailureAnalysis:
116
117
 
117
118
  # Weighted composite
118
119
  cqs = (
119
- 0.40 * pass_rate_score +
120
- 0.25 * coverage_score +
121
- 0.20 * assertion_quality_score +
122
- 0.15 * confidence_score_scaled
120
+ 0.40 * pass_rate_score
121
+ + 0.25 * coverage_score
122
+ + 0.20 * assertion_quality_score
123
+ + 0.15 * confidence_score_scaled
123
124
  )
124
125
 
125
126
  # Apply syntax error penalty
@@ -148,10 +149,10 @@ class FailureAnalysis:
148
149
  """
149
150
  cqs = self.calculate_quality_score()
150
151
  return (
151
- cqs < 70 or
152
- len(self.syntax_errors) > 3 or
153
- self.test_pass_rate < 0.7 or
154
- self.coverage_percent < 60
152
+ cqs < 70
153
+ or len(self.syntax_errors) > 3
154
+ or self.test_pass_rate < 0.7
155
+ or self.coverage_percent < 60
155
156
  )
156
157
 
157
158
  @property
@@ -249,10 +250,7 @@ class TierResult:
249
250
  Returns:
250
251
  Number of items meeting quality threshold
251
252
  """
252
- return sum(
253
- 1 for item in self.generated_items
254
- if item.get("quality_score", 0) >= 80
255
- )
253
+ return sum(1 for item in self.generated_items if item.get("quality_score", 0) >= 80)
256
254
 
257
255
  @property
258
256
  def success_rate(self) -> float:
@@ -320,6 +318,7 @@ class ProgressiveWorkflowResult:
320
318
  """
321
319
  # Implementation will be in reports.py module
322
320
  from empathy_os.workflows.progressive.reports import generate_progression_report
321
+
323
322
  return generate_progression_report(self)
324
323
 
325
324
  def save_to_disk(self, storage_path: str) -> None:
@@ -334,6 +333,7 @@ class ProgressiveWorkflowResult:
334
333
  storage_path: Base path for saving results
335
334
  """
336
335
  from empathy_os.workflows.progressive.reports import save_results_to_disk
336
+
337
337
  save_results_to_disk(self, storage_path)
338
338
 
339
339
  @property