empathy-framework 4.6.6__py3-none-any.whl → 4.7.1__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.7.1.dist-info/METADATA +690 -0
- empathy_framework-4.7.1.dist-info/RECORD +379 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/top_level.txt +1 -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 2.py +173 -0
- 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/README 2.md +454 -0
- empathy_os/workflows/progressive/__init__ 2.py +92 -0
- empathy_os/workflows/progressive/__init__.py +2 -12
- empathy_os/workflows/progressive/cli 2.py +242 -0
- empathy_os/workflows/progressive/cli.py +14 -37
- empathy_os/workflows/progressive/core 2.py +488 -0
- empathy_os/workflows/progressive/core.py +12 -12
- empathy_os/workflows/progressive/orchestrator 2.py +701 -0
- empathy_os/workflows/progressive/orchestrator.py +166 -144
- empathy_os/workflows/progressive/reports 2.py +528 -0
- empathy_os/workflows/progressive/reports.py +22 -31
- empathy_os/workflows/progressive/telemetry 2.py +280 -0
- empathy_os/workflows/progressive/telemetry.py +8 -14
- empathy_os/workflows/progressive/test_gen 2.py +514 -0
- empathy_os/workflows/progressive/test_gen.py +29 -48
- empathy_os/workflows/progressive/workflow 2.py +628 -0
- 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
- patterns/README.md +119 -0
- patterns/__init__.py +95 -0
- patterns/behavior.py +298 -0
- patterns/code_review_memory.json +441 -0
- patterns/core.py +97 -0
- patterns/debugging.json +3763 -0
- patterns/empathy.py +268 -0
- patterns/health_check_memory.json +505 -0
- patterns/input.py +161 -0
- patterns/memory_graph.json +8 -0
- patterns/refactoring_memory.json +1113 -0
- patterns/registry.py +663 -0
- patterns/security_memory.json +8 -0
- patterns/structural.py +415 -0
- patterns/validation.py +194 -0
- 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/METADATA +0 -1597
- 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.1.dist-info}/WHEEL +0 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/entry_points.txt +0 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"""CLI commands for progressive workflow management.
|
|
2
|
+
|
|
3
|
+
Provides commands for:
|
|
4
|
+
- Listing saved results
|
|
5
|
+
- Viewing detailed reports
|
|
6
|
+
- Generating analytics
|
|
7
|
+
- Cleaning up old results
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import argparse
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
from empathy_os.workflows.progressive.reports import (
|
|
14
|
+
cleanup_old_results,
|
|
15
|
+
format_cost_analytics_report,
|
|
16
|
+
generate_cost_analytics,
|
|
17
|
+
list_saved_results,
|
|
18
|
+
load_result_from_disk,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def cmd_list_results(args: argparse.Namespace) -> int:
|
|
23
|
+
"""List all saved progressive workflow results.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
args: Parsed command line arguments
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
Exit code (0 for success)
|
|
30
|
+
"""
|
|
31
|
+
storage_path = args.storage_path or ".empathy/progressive_runs"
|
|
32
|
+
results = list_saved_results(storage_path)
|
|
33
|
+
|
|
34
|
+
if not results:
|
|
35
|
+
print(f"No results found in {storage_path}")
|
|
36
|
+
return 0
|
|
37
|
+
|
|
38
|
+
print(f"\n📋 Found {len(results)} progressive workflow results:\n")
|
|
39
|
+
print(f"{'Task ID':<40} {'Workflow':<15} {'Cost':<10} {'Savings':<12} {'Success'}")
|
|
40
|
+
print("─" * 90)
|
|
41
|
+
|
|
42
|
+
for result in results:
|
|
43
|
+
task_id = result.get("task_id", "unknown")
|
|
44
|
+
workflow = result.get("workflow", "unknown")[:14]
|
|
45
|
+
cost = result.get("total_cost", 0.0)
|
|
46
|
+
savings = result.get("cost_savings_percent", 0.0)
|
|
47
|
+
success = "✅" if result.get("success", False) else "❌"
|
|
48
|
+
|
|
49
|
+
print(f"{task_id:<40} {workflow:<15} ${cost:<9.2f} {savings:>6.1f}% {success}")
|
|
50
|
+
|
|
51
|
+
print()
|
|
52
|
+
return 0
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def cmd_show_report(args: argparse.Namespace) -> int:
|
|
56
|
+
"""Show detailed report for a specific task.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
args: Parsed command line arguments
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Exit code (0 for success, 1 for error)
|
|
63
|
+
"""
|
|
64
|
+
task_id = args.task_id
|
|
65
|
+
storage_path = args.storage_path or ".empathy/progressive_runs"
|
|
66
|
+
|
|
67
|
+
try:
|
|
68
|
+
result_data = load_result_from_disk(task_id, storage_path)
|
|
69
|
+
|
|
70
|
+
if args.json:
|
|
71
|
+
import json
|
|
72
|
+
print(json.dumps(result_data, indent=2))
|
|
73
|
+
else:
|
|
74
|
+
# Show human-readable report
|
|
75
|
+
report = result_data.get("report", "")
|
|
76
|
+
if report:
|
|
77
|
+
print(report)
|
|
78
|
+
else:
|
|
79
|
+
print("No report found for this task")
|
|
80
|
+
|
|
81
|
+
return 0
|
|
82
|
+
|
|
83
|
+
except FileNotFoundError as e:
|
|
84
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
85
|
+
return 1
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def cmd_analytics(args: argparse.Namespace) -> int:
|
|
89
|
+
"""Show cost optimization analytics.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
args: Parsed command line arguments
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
Exit code (0 for success)
|
|
96
|
+
"""
|
|
97
|
+
storage_path = args.storage_path or ".empathy/progressive_runs"
|
|
98
|
+
analytics = generate_cost_analytics(storage_path)
|
|
99
|
+
|
|
100
|
+
if analytics["total_runs"] == 0:
|
|
101
|
+
print(f"No results found in {storage_path}")
|
|
102
|
+
return 0
|
|
103
|
+
|
|
104
|
+
if args.json:
|
|
105
|
+
import json
|
|
106
|
+
print(json.dumps(analytics, indent=2))
|
|
107
|
+
else:
|
|
108
|
+
report = format_cost_analytics_report(analytics)
|
|
109
|
+
print(report)
|
|
110
|
+
|
|
111
|
+
return 0
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def cmd_cleanup(args: argparse.Namespace) -> int:
|
|
115
|
+
"""Clean up old progressive workflow results.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
args: Parsed command line arguments
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Exit code (0 for success)
|
|
122
|
+
"""
|
|
123
|
+
storage_path = args.storage_path or ".empathy/progressive_runs"
|
|
124
|
+
retention_days = args.retention_days
|
|
125
|
+
dry_run = args.dry_run
|
|
126
|
+
|
|
127
|
+
deleted, retained = cleanup_old_results(
|
|
128
|
+
storage_path=storage_path,
|
|
129
|
+
retention_days=retention_days,
|
|
130
|
+
dry_run=dry_run
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
if dry_run:
|
|
134
|
+
print("\n🔍 Dry run mode - no files deleted\n")
|
|
135
|
+
print(f"Would delete: {deleted} results older than {retention_days} days")
|
|
136
|
+
print(f"Would retain: {retained} recent results")
|
|
137
|
+
else:
|
|
138
|
+
print("\n🗑️ Cleanup complete\n")
|
|
139
|
+
print(f"Deleted: {deleted} results older than {retention_days} days")
|
|
140
|
+
print(f"Retained: {retained} recent results")
|
|
141
|
+
|
|
142
|
+
return 0
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def create_parser() -> argparse.ArgumentParser:
|
|
146
|
+
"""Create argument parser for progressive CLI.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
Configured argument parser
|
|
150
|
+
"""
|
|
151
|
+
parser = argparse.ArgumentParser(
|
|
152
|
+
prog="empathy progressive",
|
|
153
|
+
description="Manage progressive tier escalation workflows"
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
parser.add_argument(
|
|
157
|
+
"--storage-path",
|
|
158
|
+
type=str,
|
|
159
|
+
default=None,
|
|
160
|
+
help="Custom storage path (default: .empathy/progressive_runs)"
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
|
164
|
+
|
|
165
|
+
# List command
|
|
166
|
+
list_parser = subparsers.add_parser(
|
|
167
|
+
"list",
|
|
168
|
+
help="List all saved progressive workflow results"
|
|
169
|
+
)
|
|
170
|
+
list_parser.set_defaults(func=cmd_list_results)
|
|
171
|
+
|
|
172
|
+
# 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
|
+
)
|
|
187
|
+
show_parser.set_defaults(func=cmd_show_report)
|
|
188
|
+
|
|
189
|
+
# 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
|
+
)
|
|
199
|
+
analytics_parser.set_defaults(func=cmd_analytics)
|
|
200
|
+
|
|
201
|
+
# Cleanup command
|
|
202
|
+
cleanup_parser = subparsers.add_parser(
|
|
203
|
+
"cleanup",
|
|
204
|
+
help="Clean up old progressive workflow results"
|
|
205
|
+
)
|
|
206
|
+
cleanup_parser.add_argument(
|
|
207
|
+
"--retention-days",
|
|
208
|
+
type=int,
|
|
209
|
+
default=30,
|
|
210
|
+
help="Number of days to retain results (default: 30)"
|
|
211
|
+
)
|
|
212
|
+
cleanup_parser.add_argument(
|
|
213
|
+
"--dry-run",
|
|
214
|
+
action="store_true",
|
|
215
|
+
help="Show what would be deleted without actually deleting"
|
|
216
|
+
)
|
|
217
|
+
cleanup_parser.set_defaults(func=cmd_cleanup)
|
|
218
|
+
|
|
219
|
+
return parser
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def main(argv: list[str] | None = None) -> int:
|
|
223
|
+
"""Main entry point for progressive CLI.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
argv: Command line arguments (defaults to sys.argv[1:])
|
|
227
|
+
|
|
228
|
+
Returns:
|
|
229
|
+
Exit code
|
|
230
|
+
"""
|
|
231
|
+
parser = create_parser()
|
|
232
|
+
args = parser.parse_args(argv)
|
|
233
|
+
|
|
234
|
+
if not hasattr(args, "func"):
|
|
235
|
+
parser.print_help()
|
|
236
|
+
return 1
|
|
237
|
+
|
|
238
|
+
return args.func(args)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
if __name__ == "__main__":
|
|
242
|
+
sys.exit(main())
|
|
@@ -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
|
|