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.
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/METADATA +7 -6
- empathy_framework-4.7.0.dist-info/RECORD +354 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/top_level.txt +0 -2
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +9 -9
- empathy_llm_toolkit/agent_factory/__init__.py +6 -6
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +7 -10
- empathy_llm_toolkit/agents_md/__init__.py +22 -0
- empathy_llm_toolkit/agents_md/loader.py +218 -0
- empathy_llm_toolkit/agents_md/parser.py +271 -0
- empathy_llm_toolkit/agents_md/registry.py +307 -0
- empathy_llm_toolkit/commands/__init__.py +51 -0
- empathy_llm_toolkit/commands/context.py +375 -0
- empathy_llm_toolkit/commands/loader.py +301 -0
- empathy_llm_toolkit/commands/models.py +231 -0
- empathy_llm_toolkit/commands/parser.py +371 -0
- empathy_llm_toolkit/commands/registry.py +429 -0
- empathy_llm_toolkit/config/__init__.py +8 -8
- empathy_llm_toolkit/config/unified.py +3 -7
- empathy_llm_toolkit/context/__init__.py +22 -0
- empathy_llm_toolkit/context/compaction.py +455 -0
- empathy_llm_toolkit/context/manager.py +434 -0
- empathy_llm_toolkit/hooks/__init__.py +24 -0
- empathy_llm_toolkit/hooks/config.py +306 -0
- empathy_llm_toolkit/hooks/executor.py +289 -0
- empathy_llm_toolkit/hooks/registry.py +302 -0
- empathy_llm_toolkit/hooks/scripts/__init__.py +39 -0
- empathy_llm_toolkit/hooks/scripts/evaluate_session.py +201 -0
- empathy_llm_toolkit/hooks/scripts/first_time_init.py +285 -0
- empathy_llm_toolkit/hooks/scripts/pre_compact.py +207 -0
- empathy_llm_toolkit/hooks/scripts/session_end.py +183 -0
- empathy_llm_toolkit/hooks/scripts/session_start.py +163 -0
- empathy_llm_toolkit/hooks/scripts/suggest_compact.py +225 -0
- empathy_llm_toolkit/learning/__init__.py +30 -0
- empathy_llm_toolkit/learning/evaluator.py +438 -0
- empathy_llm_toolkit/learning/extractor.py +514 -0
- empathy_llm_toolkit/learning/storage.py +560 -0
- empathy_llm_toolkit/providers.py +4 -11
- empathy_llm_toolkit/security/__init__.py +17 -17
- empathy_llm_toolkit/utils/tokens.py +2 -5
- empathy_os/__init__.py +202 -70
- empathy_os/cache_monitor.py +5 -3
- empathy_os/cli/__init__.py +11 -55
- empathy_os/cli/__main__.py +29 -15
- empathy_os/cli/commands/inspection.py +21 -12
- empathy_os/cli/commands/memory.py +4 -12
- empathy_os/cli/commands/profiling.py +198 -0
- empathy_os/cli/commands/utilities.py +27 -7
- empathy_os/cli.py +28 -57
- empathy_os/cli_unified.py +525 -1164
- empathy_os/cost_tracker.py +9 -3
- empathy_os/dashboard/server.py +200 -2
- empathy_os/hot_reload/__init__.py +7 -7
- empathy_os/hot_reload/config.py +6 -7
- empathy_os/hot_reload/integration.py +35 -35
- empathy_os/hot_reload/reloader.py +57 -57
- empathy_os/hot_reload/watcher.py +28 -28
- empathy_os/hot_reload/websocket.py +2 -2
- empathy_os/memory/__init__.py +11 -4
- empathy_os/memory/claude_memory.py +1 -1
- empathy_os/memory/cross_session.py +8 -12
- empathy_os/memory/edges.py +6 -6
- empathy_os/memory/file_session.py +770 -0
- empathy_os/memory/graph.py +30 -30
- empathy_os/memory/nodes.py +6 -6
- empathy_os/memory/short_term.py +15 -9
- empathy_os/memory/unified.py +606 -140
- empathy_os/meta_workflows/agent_creator.py +3 -9
- empathy_os/meta_workflows/cli_meta_workflows.py +113 -53
- empathy_os/meta_workflows/form_engine.py +6 -18
- empathy_os/meta_workflows/intent_detector.py +64 -24
- empathy_os/meta_workflows/models.py +3 -1
- empathy_os/meta_workflows/pattern_learner.py +13 -31
- empathy_os/meta_workflows/plan_generator.py +55 -47
- empathy_os/meta_workflows/session_context.py +2 -3
- empathy_os/meta_workflows/workflow.py +20 -51
- empathy_os/models/cli.py +2 -2
- empathy_os/models/tasks.py +1 -2
- empathy_os/models/telemetry.py +4 -1
- empathy_os/models/token_estimator.py +3 -1
- empathy_os/monitoring/alerts.py +938 -9
- empathy_os/monitoring/alerts_cli.py +346 -183
- empathy_os/orchestration/execution_strategies.py +12 -29
- empathy_os/orchestration/pattern_learner.py +20 -26
- empathy_os/orchestration/real_tools.py +6 -15
- empathy_os/platform_utils.py +2 -1
- empathy_os/plugins/__init__.py +2 -2
- empathy_os/plugins/base.py +64 -64
- empathy_os/plugins/registry.py +32 -32
- empathy_os/project_index/index.py +49 -15
- empathy_os/project_index/models.py +1 -2
- empathy_os/project_index/reports.py +1 -1
- empathy_os/project_index/scanner.py +1 -0
- empathy_os/redis_memory.py +10 -7
- empathy_os/resilience/__init__.py +1 -1
- empathy_os/resilience/health.py +10 -10
- empathy_os/routing/__init__.py +7 -7
- empathy_os/routing/chain_executor.py +37 -37
- empathy_os/routing/classifier.py +36 -36
- empathy_os/routing/smart_router.py +40 -40
- empathy_os/routing/{wizard_registry.py → workflow_registry.py} +47 -47
- empathy_os/scaffolding/__init__.py +8 -8
- empathy_os/scaffolding/__main__.py +1 -1
- empathy_os/scaffolding/cli.py +28 -28
- empathy_os/socratic/__init__.py +3 -19
- empathy_os/socratic/ab_testing.py +25 -36
- empathy_os/socratic/blueprint.py +38 -38
- empathy_os/socratic/cli.py +34 -20
- empathy_os/socratic/collaboration.py +30 -28
- empathy_os/socratic/domain_templates.py +9 -1
- empathy_os/socratic/embeddings.py +17 -13
- empathy_os/socratic/engine.py +135 -70
- empathy_os/socratic/explainer.py +70 -60
- empathy_os/socratic/feedback.py +24 -19
- empathy_os/socratic/forms.py +15 -10
- empathy_os/socratic/generator.py +51 -35
- empathy_os/socratic/llm_analyzer.py +25 -23
- empathy_os/socratic/mcp_server.py +99 -159
- empathy_os/socratic/session.py +19 -13
- empathy_os/socratic/storage.py +98 -67
- empathy_os/socratic/success.py +38 -27
- empathy_os/socratic/visual_editor.py +51 -39
- empathy_os/socratic/web_ui.py +99 -66
- empathy_os/telemetry/cli.py +3 -1
- empathy_os/telemetry/usage_tracker.py +1 -3
- empathy_os/test_generator/__init__.py +3 -3
- empathy_os/test_generator/cli.py +28 -28
- empathy_os/test_generator/generator.py +64 -66
- empathy_os/test_generator/risk_analyzer.py +11 -11
- empathy_os/vscode_bridge.py +173 -0
- empathy_os/workflows/__init__.py +212 -120
- empathy_os/workflows/batch_processing.py +8 -24
- empathy_os/workflows/bug_predict.py +1 -1
- empathy_os/workflows/code_review.py +20 -5
- empathy_os/workflows/code_review_pipeline.py +13 -8
- empathy_os/workflows/keyboard_shortcuts/workflow.py +6 -2
- empathy_os/workflows/manage_documentation.py +1 -0
- empathy_os/workflows/orchestrated_health_check.py +6 -11
- empathy_os/workflows/orchestrated_release_prep.py +3 -3
- empathy_os/workflows/pr_review.py +18 -10
- empathy_os/workflows/progressive/__init__.py +2 -12
- empathy_os/workflows/progressive/cli.py +14 -37
- empathy_os/workflows/progressive/core.py +12 -12
- empathy_os/workflows/progressive/orchestrator.py +166 -144
- empathy_os/workflows/progressive/reports.py +22 -31
- empathy_os/workflows/progressive/telemetry.py +8 -14
- empathy_os/workflows/progressive/test_gen.py +29 -48
- empathy_os/workflows/progressive/workflow.py +31 -70
- empathy_os/workflows/release_prep.py +21 -6
- empathy_os/workflows/release_prep_crew.py +1 -0
- empathy_os/workflows/secure_release.py +13 -6
- empathy_os/workflows/security_audit.py +8 -3
- empathy_os/workflows/test_coverage_boost_crew.py +3 -2
- empathy_os/workflows/test_maintenance_crew.py +1 -0
- empathy_os/workflows/test_runner.py +16 -12
- empathy_software_plugin/SOFTWARE_PLUGIN_README.md +25 -703
- empathy_software_plugin/cli.py +0 -122
- coach_wizards/__init__.py +0 -45
- coach_wizards/accessibility_wizard.py +0 -91
- coach_wizards/api_wizard.py +0 -91
- coach_wizards/base_wizard.py +0 -209
- coach_wizards/cicd_wizard.py +0 -91
- coach_wizards/code_reviewer_README.md +0 -60
- coach_wizards/code_reviewer_wizard.py +0 -180
- coach_wizards/compliance_wizard.py +0 -91
- coach_wizards/database_wizard.py +0 -91
- coach_wizards/debugging_wizard.py +0 -91
- coach_wizards/documentation_wizard.py +0 -91
- coach_wizards/generate_wizards.py +0 -347
- coach_wizards/localization_wizard.py +0 -173
- coach_wizards/migration_wizard.py +0 -91
- coach_wizards/monitoring_wizard.py +0 -91
- coach_wizards/observability_wizard.py +0 -91
- coach_wizards/performance_wizard.py +0 -91
- coach_wizards/prompt_engineering_wizard.py +0 -661
- coach_wizards/refactoring_wizard.py +0 -91
- coach_wizards/scaling_wizard.py +0 -90
- coach_wizards/security_wizard.py +0 -92
- coach_wizards/testing_wizard.py +0 -91
- empathy_framework-4.6.6.dist-info/RECORD +0 -410
- empathy_llm_toolkit/wizards/__init__.py +0 -43
- empathy_llm_toolkit/wizards/base_wizard.py +0 -364
- empathy_llm_toolkit/wizards/customer_support_wizard.py +0 -190
- empathy_llm_toolkit/wizards/healthcare_wizard.py +0 -378
- empathy_llm_toolkit/wizards/patient_assessment_README.md +0 -64
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +0 -193
- empathy_llm_toolkit/wizards/technology_wizard.py +0 -209
- empathy_os/wizard_factory_cli.py +0 -170
- empathy_software_plugin/wizards/__init__.py +0 -42
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +0 -395
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +0 -511
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +0 -503
- empathy_software_plugin/wizards/ai_context_wizard.py +0 -441
- empathy_software_plugin/wizards/ai_documentation_wizard.py +0 -503
- empathy_software_plugin/wizards/base_wizard.py +0 -288
- empathy_software_plugin/wizards/book_chapter_wizard.py +0 -519
- empathy_software_plugin/wizards/code_review_wizard.py +0 -604
- empathy_software_plugin/wizards/debugging/__init__.py +0 -50
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +0 -414
- empathy_software_plugin/wizards/debugging/config_loaders.py +0 -446
- empathy_software_plugin/wizards/debugging/fix_applier.py +0 -469
- empathy_software_plugin/wizards/debugging/language_patterns.py +0 -385
- empathy_software_plugin/wizards/debugging/linter_parsers.py +0 -470
- empathy_software_plugin/wizards/debugging/verification.py +0 -369
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +0 -537
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +0 -816
- empathy_software_plugin/wizards/multi_model_wizard.py +0 -501
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +0 -422
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +0 -400
- empathy_software_plugin/wizards/performance/__init__.py +0 -9
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +0 -221
- empathy_software_plugin/wizards/performance/profiler_parsers.py +0 -278
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +0 -429
- empathy_software_plugin/wizards/performance_profiling_wizard.py +0 -305
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +0 -425
- empathy_software_plugin/wizards/rag_pattern_wizard.py +0 -461
- empathy_software_plugin/wizards/security/__init__.py +0 -32
- empathy_software_plugin/wizards/security/exploit_analyzer.py +0 -290
- empathy_software_plugin/wizards/security/owasp_patterns.py +0 -241
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +0 -604
- empathy_software_plugin/wizards/security_analysis_wizard.py +0 -322
- empathy_software_plugin/wizards/security_learning_wizard.py +0 -740
- empathy_software_plugin/wizards/tech_debt_wizard.py +0 -726
- empathy_software_plugin/wizards/testing/__init__.py +0 -27
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +0 -459
- empathy_software_plugin/wizards/testing/quality_analyzer.py +0 -525
- empathy_software_plugin/wizards/testing/test_suggester.py +0 -533
- empathy_software_plugin/wizards/testing_wizard.py +0 -274
- wizards/__init__.py +0 -82
- wizards/admission_assessment_wizard.py +0 -644
- wizards/care_plan.py +0 -321
- wizards/clinical_assessment.py +0 -769
- wizards/discharge_planning.py +0 -77
- wizards/discharge_summary_wizard.py +0 -468
- wizards/dosage_calculation.py +0 -497
- wizards/incident_report_wizard.py +0 -454
- wizards/medication_reconciliation.py +0 -85
- wizards/nursing_assessment.py +0 -171
- wizards/patient_education.py +0 -654
- wizards/quality_improvement.py +0 -705
- wizards/sbar_report.py +0 -324
- wizards/sbar_wizard.py +0 -608
- wizards/shift_handoff_wizard.py +0 -535
- wizards/soap_note_wizard.py +0 -679
- wizards/treatment_plan.py +0 -15
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/WHEEL +0 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.0.dist-info}/entry_points.txt +0 -0
- {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
|
|
338
|
-
project_root = kwargs[
|
|
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
|
|
314
|
-
path = kwargs[
|
|
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
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
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
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
-
|
|
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
|
-
|
|
175
|
-
|
|
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
|
-
|
|
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
|
|
152
|
-
len(self.syntax_errors) > 3
|
|
153
|
-
self.test_pass_rate < 0.7
|
|
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
|