empathy-framework 2.4.0__py3-none-any.whl → 3.8.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- coach_wizards/__init__.py +13 -12
- coach_wizards/accessibility_wizard.py +12 -12
- coach_wizards/api_wizard.py +12 -12
- coach_wizards/base_wizard.py +26 -20
- coach_wizards/cicd_wizard.py +15 -13
- coach_wizards/code_reviewer_README.md +60 -0
- coach_wizards/code_reviewer_wizard.py +180 -0
- coach_wizards/compliance_wizard.py +12 -12
- coach_wizards/database_wizard.py +12 -12
- coach_wizards/debugging_wizard.py +12 -12
- coach_wizards/documentation_wizard.py +12 -12
- coach_wizards/generate_wizards.py +1 -2
- coach_wizards/localization_wizard.py +101 -19
- coach_wizards/migration_wizard.py +12 -12
- coach_wizards/monitoring_wizard.py +12 -12
- coach_wizards/observability_wizard.py +12 -12
- coach_wizards/performance_wizard.py +12 -12
- coach_wizards/prompt_engineering_wizard.py +661 -0
- coach_wizards/refactoring_wizard.py +12 -12
- coach_wizards/scaling_wizard.py +12 -12
- coach_wizards/security_wizard.py +12 -12
- coach_wizards/testing_wizard.py +12 -12
- empathy_framework-3.8.2.dist-info/METADATA +1176 -0
- empathy_framework-3.8.2.dist-info/RECORD +333 -0
- empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/top_level.txt +5 -1
- empathy_healthcare_plugin/__init__.py +1 -2
- empathy_healthcare_plugin/monitors/__init__.py +9 -0
- empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
- empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
- empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
- empathy_llm_toolkit/__init__.py +7 -7
- empathy_llm_toolkit/agent_factory/__init__.py +53 -0
- empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
- empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
- empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
- empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
- empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
- empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
- empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
- empathy_llm_toolkit/agent_factory/base.py +305 -0
- empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
- empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
- empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
- empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
- empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
- empathy_llm_toolkit/agent_factory/decorators.py +286 -0
- empathy_llm_toolkit/agent_factory/factory.py +558 -0
- empathy_llm_toolkit/agent_factory/framework.py +192 -0
- empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
- empathy_llm_toolkit/agent_factory/resilient.py +320 -0
- empathy_llm_toolkit/claude_memory.py +14 -15
- empathy_llm_toolkit/cli/__init__.py +8 -0
- empathy_llm_toolkit/cli/sync_claude.py +487 -0
- empathy_llm_toolkit/code_health.py +186 -28
- empathy_llm_toolkit/config/__init__.py +29 -0
- empathy_llm_toolkit/config/unified.py +295 -0
- empathy_llm_toolkit/contextual_patterns.py +11 -12
- empathy_llm_toolkit/core.py +168 -53
- empathy_llm_toolkit/git_pattern_extractor.py +17 -13
- empathy_llm_toolkit/levels.py +6 -13
- empathy_llm_toolkit/pattern_confidence.py +14 -18
- empathy_llm_toolkit/pattern_resolver.py +10 -12
- empathy_llm_toolkit/pattern_summary.py +16 -14
- empathy_llm_toolkit/providers.py +194 -28
- empathy_llm_toolkit/routing/__init__.py +32 -0
- empathy_llm_toolkit/routing/model_router.py +362 -0
- empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
- empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
- empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
- empathy_llm_toolkit/security/README.md +262 -0
- empathy_llm_toolkit/security/__init__.py +62 -0
- empathy_llm_toolkit/security/audit_logger.py +929 -0
- empathy_llm_toolkit/security/audit_logger_example.py +152 -0
- empathy_llm_toolkit/security/pii_scrubber.py +640 -0
- empathy_llm_toolkit/security/secrets_detector.py +678 -0
- empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
- empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
- empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
- empathy_llm_toolkit/session_status.py +20 -22
- empathy_llm_toolkit/state.py +28 -21
- empathy_llm_toolkit/wizards/__init__.py +38 -0
- empathy_llm_toolkit/wizards/base_wizard.py +364 -0
- empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
- empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
- empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
- empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
- empathy_os/__init__.py +125 -84
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/{monitoring.py → agent_monitoring.py} +28 -28
- empathy_os/cache/__init__.py +117 -0
- empathy_os/cache/base.py +166 -0
- empathy_os/cache/dependency_manager.py +253 -0
- empathy_os/cache/hash_only.py +248 -0
- empathy_os/cache/hybrid.py +390 -0
- empathy_os/cache/storage.py +282 -0
- empathy_os/cli.py +1516 -70
- empathy_os/cli_unified.py +597 -0
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/config.py +95 -37
- empathy_os/coordination.py +72 -68
- empathy_os/core.py +94 -107
- empathy_os/cost_tracker.py +74 -55
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/discovery.py +17 -14
- empathy_os/emergence.py +21 -22
- empathy_os/exceptions.py +18 -30
- empathy_os/feedback_loops.py +30 -33
- empathy_os/levels.py +32 -35
- empathy_os/leverage_points.py +31 -32
- empathy_os/logging_config.py +19 -16
- empathy_os/memory/__init__.py +195 -0
- empathy_os/memory/claude_memory.py +466 -0
- empathy_os/memory/config.py +224 -0
- empathy_os/memory/control_panel.py +1298 -0
- empathy_os/memory/edges.py +179 -0
- empathy_os/memory/graph.py +567 -0
- empathy_os/memory/long_term.py +1194 -0
- empathy_os/memory/nodes.py +179 -0
- empathy_os/memory/redis_bootstrap.py +540 -0
- empathy_os/memory/security/__init__.py +31 -0
- empathy_os/memory/security/audit_logger.py +930 -0
- empathy_os/memory/security/pii_scrubber.py +640 -0
- empathy_os/memory/security/secrets_detector.py +678 -0
- empathy_os/memory/short_term.py +2119 -0
- empathy_os/memory/storage/__init__.py +15 -0
- empathy_os/memory/summary_index.py +583 -0
- empathy_os/memory/unified.py +619 -0
- empathy_os/metrics/__init__.py +12 -0
- empathy_os/metrics/prompt_metrics.py +190 -0
- empathy_os/models/__init__.py +136 -0
- empathy_os/models/__main__.py +13 -0
- empathy_os/models/cli.py +655 -0
- empathy_os/models/empathy_executor.py +354 -0
- empathy_os/models/executor.py +252 -0
- empathy_os/models/fallback.py +671 -0
- empathy_os/models/provider_config.py +563 -0
- empathy_os/models/registry.py +382 -0
- empathy_os/models/tasks.py +302 -0
- empathy_os/models/telemetry.py +548 -0
- empathy_os/models/token_estimator.py +378 -0
- empathy_os/models/validation.py +274 -0
- empathy_os/monitoring/__init__.py +52 -0
- empathy_os/monitoring/alerts.py +23 -0
- empathy_os/monitoring/alerts_cli.py +268 -0
- empathy_os/monitoring/multi_backend.py +271 -0
- empathy_os/monitoring/otel_backend.py +363 -0
- empathy_os/optimization/__init__.py +19 -0
- empathy_os/optimization/context_optimizer.py +272 -0
- empathy_os/pattern_library.py +30 -29
- empathy_os/persistence.py +35 -37
- empathy_os/platform_utils.py +261 -0
- empathy_os/plugins/__init__.py +28 -0
- empathy_os/plugins/base.py +361 -0
- empathy_os/plugins/registry.py +268 -0
- empathy_os/project_index/__init__.py +30 -0
- empathy_os/project_index/cli.py +335 -0
- empathy_os/project_index/crew_integration.py +430 -0
- empathy_os/project_index/index.py +425 -0
- empathy_os/project_index/models.py +501 -0
- empathy_os/project_index/reports.py +473 -0
- empathy_os/project_index/scanner.py +538 -0
- empathy_os/prompts/__init__.py +61 -0
- empathy_os/prompts/config.py +77 -0
- empathy_os/prompts/context.py +177 -0
- empathy_os/prompts/parser.py +285 -0
- empathy_os/prompts/registry.py +313 -0
- empathy_os/prompts/templates.py +208 -0
- empathy_os/redis_config.py +144 -58
- empathy_os/redis_memory.py +79 -77
- empathy_os/resilience/__init__.py +56 -0
- empathy_os/resilience/circuit_breaker.py +256 -0
- empathy_os/resilience/fallback.py +179 -0
- empathy_os/resilience/health.py +300 -0
- empathy_os/resilience/retry.py +209 -0
- empathy_os/resilience/timeout.py +135 -0
- empathy_os/routing/__init__.py +43 -0
- empathy_os/routing/chain_executor.py +433 -0
- empathy_os/routing/classifier.py +217 -0
- empathy_os/routing/smart_router.py +234 -0
- empathy_os/routing/wizard_registry.py +307 -0
- empathy_os/templates.py +19 -14
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/trust_building.py +67 -58
- empathy_os/validation/__init__.py +19 -0
- empathy_os/validation/xml_validator.py +281 -0
- empathy_os/wizard_factory_cli.py +170 -0
- empathy_os/{workflows.py → workflow_commands.py} +131 -37
- empathy_os/workflows/__init__.py +360 -0
- empathy_os/workflows/base.py +1660 -0
- empathy_os/workflows/bug_predict.py +962 -0
- empathy_os/workflows/code_review.py +960 -0
- empathy_os/workflows/code_review_adapters.py +310 -0
- empathy_os/workflows/code_review_pipeline.py +720 -0
- empathy_os/workflows/config.py +600 -0
- empathy_os/workflows/dependency_check.py +648 -0
- empathy_os/workflows/document_gen.py +1069 -0
- empathy_os/workflows/documentation_orchestrator.py +1205 -0
- empathy_os/workflows/health_check.py +679 -0
- empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
- empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
- empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
- empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
- empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
- empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
- empathy_os/workflows/manage_documentation.py +804 -0
- empathy_os/workflows/new_sample_workflow1.py +146 -0
- empathy_os/workflows/new_sample_workflow1_README.md +150 -0
- empathy_os/workflows/perf_audit.py +687 -0
- empathy_os/workflows/pr_review.py +748 -0
- empathy_os/workflows/progress.py +445 -0
- empathy_os/workflows/progress_server.py +322 -0
- empathy_os/workflows/refactor_plan.py +693 -0
- empathy_os/workflows/release_prep.py +808 -0
- empathy_os/workflows/research_synthesis.py +404 -0
- empathy_os/workflows/secure_release.py +585 -0
- empathy_os/workflows/security_adapters.py +297 -0
- empathy_os/workflows/security_audit.py +1046 -0
- empathy_os/workflows/step_config.py +234 -0
- empathy_os/workflows/test5.py +125 -0
- empathy_os/workflows/test5_README.md +158 -0
- empathy_os/workflows/test_gen.py +1855 -0
- empathy_os/workflows/test_lifecycle.py +526 -0
- empathy_os/workflows/test_maintenance.py +626 -0
- empathy_os/workflows/test_maintenance_cli.py +590 -0
- empathy_os/workflows/test_maintenance_crew.py +821 -0
- empathy_os/workflows/xml_enhanced_crew.py +285 -0
- empathy_software_plugin/__init__.py +1 -2
- empathy_software_plugin/cli/__init__.py +120 -0
- empathy_software_plugin/cli/inspect.py +362 -0
- empathy_software_plugin/cli.py +49 -27
- empathy_software_plugin/plugin.py +4 -8
- empathy_software_plugin/wizards/__init__.py +42 -0
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
- empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
- empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
- empathy_software_plugin/wizards/base_wizard.py +288 -0
- empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
- empathy_software_plugin/wizards/code_review_wizard.py +606 -0
- empathy_software_plugin/wizards/debugging/__init__.py +50 -0
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
- empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
- empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
- empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
- empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
- empathy_software_plugin/wizards/debugging/verification.py +369 -0
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
- empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
- empathy_software_plugin/wizards/performance/__init__.py +9 -0
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
- empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
- empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
- empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
- empathy_software_plugin/wizards/security/__init__.py +32 -0
- empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
- empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
- empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
- empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
- empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
- empathy_software_plugin/wizards/testing/__init__.py +27 -0
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
- empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
- empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
- empathy_software_plugin/wizards/testing_wizard.py +274 -0
- hot_reload/README.md +473 -0
- hot_reload/__init__.py +62 -0
- hot_reload/config.py +84 -0
- hot_reload/integration.py +228 -0
- hot_reload/reloader.py +298 -0
- hot_reload/watcher.py +179 -0
- hot_reload/websocket.py +176 -0
- scaffolding/README.md +589 -0
- scaffolding/__init__.py +35 -0
- scaffolding/__main__.py +14 -0
- scaffolding/cli.py +240 -0
- test_generator/__init__.py +38 -0
- test_generator/__main__.py +14 -0
- test_generator/cli.py +226 -0
- test_generator/generator.py +325 -0
- test_generator/risk_analyzer.py +216 -0
- workflow_patterns/__init__.py +33 -0
- workflow_patterns/behavior.py +249 -0
- workflow_patterns/core.py +76 -0
- workflow_patterns/output.py +99 -0
- workflow_patterns/registry.py +255 -0
- workflow_patterns/structural.py +288 -0
- workflow_scaffolding/__init__.py +11 -0
- workflow_scaffolding/__main__.py +12 -0
- workflow_scaffolding/cli.py +206 -0
- workflow_scaffolding/generator.py +265 -0
- agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
- agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
- agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
- agents/compliance_anticipation_agent.py +0 -1427
- agents/epic_integration_wizard.py +0 -541
- agents/trust_building_behaviors.py +0 -891
- empathy_framework-2.4.0.dist-info/METADATA +0 -485
- empathy_framework-2.4.0.dist-info/RECORD +0 -102
- empathy_framework-2.4.0.dist-info/entry_points.txt +0 -6
- empathy_llm_toolkit/htmlcov/status.json +0 -1
- empathy_llm_toolkit/security/htmlcov/status.json +0 -1
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
"""Unified CLI for Empathy Framework
|
|
2
|
+
|
|
3
|
+
A single entry point for all Empathy Framework commands using Typer.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
empathy --help # Show all commands
|
|
7
|
+
empathy memory status # Memory control panel
|
|
8
|
+
empathy provider # Show provider config
|
|
9
|
+
empathy scan . # Scan codebase
|
|
10
|
+
empathy morning # Start-of-day briefing
|
|
11
|
+
|
|
12
|
+
Copyright 2025 Smart-AI-Memory
|
|
13
|
+
Licensed under Fair Source License 0.9
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import subprocess
|
|
17
|
+
import sys
|
|
18
|
+
from importlib.metadata import version as get_version
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
import typer
|
|
22
|
+
from rich.console import Console
|
|
23
|
+
from rich.panel import Panel
|
|
24
|
+
|
|
25
|
+
# Create the main Typer app
|
|
26
|
+
app = typer.Typer(
|
|
27
|
+
name="empathy",
|
|
28
|
+
help="Empathy Framework - Predictive AI-Developer Collaboration",
|
|
29
|
+
no_args_is_help=True,
|
|
30
|
+
rich_markup_mode="rich",
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
console = Console()
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def get_empathy_version() -> str:
|
|
37
|
+
"""Get the installed version of empathy-framework."""
|
|
38
|
+
try:
|
|
39
|
+
return get_version("empathy-framework")
|
|
40
|
+
except Exception:
|
|
41
|
+
return "dev"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def version_callback(value: bool):
|
|
45
|
+
"""Show version and exit."""
|
|
46
|
+
if value:
|
|
47
|
+
console.print(f"[bold blue]Empathy Framework[/bold blue] v{get_empathy_version()}")
|
|
48
|
+
raise typer.Exit()
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@app.callback()
|
|
52
|
+
def callback(
|
|
53
|
+
version: bool = typer.Option(
|
|
54
|
+
None,
|
|
55
|
+
"--version",
|
|
56
|
+
"-v",
|
|
57
|
+
callback=version_callback,
|
|
58
|
+
is_eager=True,
|
|
59
|
+
help="Show version and exit",
|
|
60
|
+
),
|
|
61
|
+
):
|
|
62
|
+
"""Empathy Framework - Predictive AI-Developer Collaboration
|
|
63
|
+
|
|
64
|
+
The AI collaboration framework that predicts problems before they happen.
|
|
65
|
+
|
|
66
|
+
[bold]Quick Start:[/bold]
|
|
67
|
+
empathy morning Start-of-day briefing
|
|
68
|
+
empathy health Quick health check
|
|
69
|
+
empathy ship Pre-commit validation
|
|
70
|
+
|
|
71
|
+
[bold]Memory:[/bold]
|
|
72
|
+
empathy memory status Check memory system status
|
|
73
|
+
empathy memory start Start Redis server
|
|
74
|
+
|
|
75
|
+
[bold]Provider:[/bold]
|
|
76
|
+
empathy provider Show current provider config
|
|
77
|
+
empathy provider --set hybrid Configure provider
|
|
78
|
+
|
|
79
|
+
[bold]Inspection:[/bold]
|
|
80
|
+
empathy scan . Scan codebase for issues
|
|
81
|
+
empathy inspect . Deep inspection with SARIF output
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# =============================================================================
|
|
86
|
+
# MEMORY SUBCOMMAND GROUP
|
|
87
|
+
# =============================================================================
|
|
88
|
+
|
|
89
|
+
memory_app = typer.Typer(help="Memory system control panel")
|
|
90
|
+
app.add_typer(memory_app, name="memory")
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@memory_app.command("status")
|
|
94
|
+
def memory_status():
|
|
95
|
+
"""Check memory system status (Redis, patterns, stats)."""
|
|
96
|
+
# Delegate to the existing CLI
|
|
97
|
+
subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "status"], check=False)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@memory_app.command("start")
|
|
101
|
+
def memory_start():
|
|
102
|
+
"""Start Redis server for short-term memory."""
|
|
103
|
+
subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "start"], check=False)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@memory_app.command("stop")
|
|
107
|
+
def memory_stop():
|
|
108
|
+
"""Stop Redis server."""
|
|
109
|
+
subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stop"], check=False)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@memory_app.command("stats")
|
|
113
|
+
def memory_stats():
|
|
114
|
+
"""Show memory statistics."""
|
|
115
|
+
subprocess.run([sys.executable, "-m", "empathy_os.memory.control_panel", "stats"], check=False)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@memory_app.command("patterns")
|
|
119
|
+
def memory_patterns():
|
|
120
|
+
"""List stored patterns."""
|
|
121
|
+
subprocess.run(
|
|
122
|
+
[sys.executable, "-m", "empathy_os.memory.control_panel", "patterns", "--list"], check=False
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# =============================================================================
|
|
127
|
+
# PROVIDER SUBCOMMAND GROUP
|
|
128
|
+
# =============================================================================
|
|
129
|
+
|
|
130
|
+
provider_app = typer.Typer(help="Multi-model provider configuration")
|
|
131
|
+
app.add_typer(provider_app, name="provider")
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@provider_app.callback(invoke_without_command=True)
|
|
135
|
+
def provider_show(
|
|
136
|
+
ctx: typer.Context,
|
|
137
|
+
set_provider: str | None = typer.Option(
|
|
138
|
+
None,
|
|
139
|
+
"--set",
|
|
140
|
+
"-s",
|
|
141
|
+
help="Set provider (anthropic, openai, google, ollama, hybrid)",
|
|
142
|
+
),
|
|
143
|
+
interactive: bool = typer.Option(False, "--interactive", "-i", help="Interactive setup wizard"),
|
|
144
|
+
format_out: str = typer.Option("table", "--format", "-f", help="Output format (table, json)"),
|
|
145
|
+
):
|
|
146
|
+
"""Show or configure provider settings."""
|
|
147
|
+
if ctx.invoked_subcommand is not None:
|
|
148
|
+
return
|
|
149
|
+
|
|
150
|
+
args = [sys.executable, "-m", "empathy_os.models.cli", "provider"]
|
|
151
|
+
if set_provider:
|
|
152
|
+
args.extend(["--set", set_provider])
|
|
153
|
+
if interactive:
|
|
154
|
+
args.append("--interactive")
|
|
155
|
+
if format_out != "table":
|
|
156
|
+
args.extend(["-f", format_out])
|
|
157
|
+
|
|
158
|
+
subprocess.run(args, check=False)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
@provider_app.command("registry")
|
|
162
|
+
def provider_registry(
|
|
163
|
+
provider_filter: str | None = typer.Option(None, "--provider", "-p", help="Filter by provider"),
|
|
164
|
+
):
|
|
165
|
+
"""Show all available models in the registry."""
|
|
166
|
+
args = [sys.executable, "-m", "empathy_os.models.cli", "registry"]
|
|
167
|
+
if provider_filter:
|
|
168
|
+
args.extend(["--provider", provider_filter])
|
|
169
|
+
subprocess.run(args, check=False)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
@provider_app.command("costs")
|
|
173
|
+
def provider_costs(
|
|
174
|
+
input_tokens: int = typer.Option(10000, "--input-tokens", "-i", help="Input tokens"),
|
|
175
|
+
output_tokens: int = typer.Option(2000, "--output-tokens", "-o", help="Output tokens"),
|
|
176
|
+
):
|
|
177
|
+
"""Estimate costs for token usage."""
|
|
178
|
+
subprocess.run(
|
|
179
|
+
[
|
|
180
|
+
sys.executable,
|
|
181
|
+
"-m",
|
|
182
|
+
"empathy_os.models.cli",
|
|
183
|
+
"costs",
|
|
184
|
+
"--input-tokens",
|
|
185
|
+
str(input_tokens),
|
|
186
|
+
"--output-tokens",
|
|
187
|
+
str(output_tokens),
|
|
188
|
+
],
|
|
189
|
+
check=False,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
@provider_app.command("telemetry")
|
|
194
|
+
def provider_telemetry(
|
|
195
|
+
summary: bool = typer.Option(False, "--summary", help="Show summary"),
|
|
196
|
+
costs: bool = typer.Option(False, "--costs", help="Show cost breakdown"),
|
|
197
|
+
providers: bool = typer.Option(False, "--providers", help="Show provider usage"),
|
|
198
|
+
):
|
|
199
|
+
"""View telemetry and analytics."""
|
|
200
|
+
args = [sys.executable, "-m", "empathy_os.models.cli", "telemetry"]
|
|
201
|
+
if summary:
|
|
202
|
+
args.append("--summary")
|
|
203
|
+
if costs:
|
|
204
|
+
args.append("--costs")
|
|
205
|
+
if providers:
|
|
206
|
+
args.append("--providers")
|
|
207
|
+
subprocess.run(args, check=False)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
# =============================================================================
|
|
211
|
+
# SCAN COMMAND
|
|
212
|
+
# =============================================================================
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
@app.command("scan")
|
|
216
|
+
def scan(
|
|
217
|
+
path: Path = typer.Argument(Path(), help="Path to scan"),
|
|
218
|
+
format_out: str = typer.Option(
|
|
219
|
+
"text",
|
|
220
|
+
"--format",
|
|
221
|
+
"-f",
|
|
222
|
+
help="Output format (text, json, sarif)",
|
|
223
|
+
),
|
|
224
|
+
fix: bool = typer.Option(False, "--fix", help="Auto-fix safe issues"),
|
|
225
|
+
staged: bool = typer.Option(False, "--staged", help="Only scan staged changes"),
|
|
226
|
+
):
|
|
227
|
+
"""Scan codebase for issues."""
|
|
228
|
+
args = ["empathy-scan", str(path)]
|
|
229
|
+
if format_out != "text":
|
|
230
|
+
args.extend(["--format", format_out])
|
|
231
|
+
if fix:
|
|
232
|
+
args.append("--fix")
|
|
233
|
+
if staged:
|
|
234
|
+
args.append("--staged")
|
|
235
|
+
|
|
236
|
+
result = subprocess.run(args, check=False, capture_output=False)
|
|
237
|
+
if result.returncode != 0:
|
|
238
|
+
console.print("[yellow]Note: empathy-scan may not be installed[/yellow]")
|
|
239
|
+
console.print("Install with: pip install empathy-framework[software]")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# =============================================================================
|
|
243
|
+
# INSPECT COMMAND
|
|
244
|
+
# =============================================================================
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
@app.command("inspect")
|
|
248
|
+
def inspect_cmd(
|
|
249
|
+
path: Path = typer.Argument(Path(), help="Path to inspect"),
|
|
250
|
+
format_out: str = typer.Option(
|
|
251
|
+
"text",
|
|
252
|
+
"--format",
|
|
253
|
+
"-f",
|
|
254
|
+
help="Output format (text, json, sarif)",
|
|
255
|
+
),
|
|
256
|
+
):
|
|
257
|
+
"""Deep inspection with code analysis."""
|
|
258
|
+
args = ["empathy-inspect", str(path)]
|
|
259
|
+
if format_out != "text":
|
|
260
|
+
args.extend(["--format", format_out])
|
|
261
|
+
|
|
262
|
+
result = subprocess.run(args, check=False, capture_output=False)
|
|
263
|
+
if result.returncode != 0:
|
|
264
|
+
console.print("[yellow]Note: empathy-inspect may not be installed[/yellow]")
|
|
265
|
+
console.print("Install with: pip install empathy-framework[software]")
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
# =============================================================================
|
|
269
|
+
# SYNC-CLAUDE COMMAND
|
|
270
|
+
# =============================================================================
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@app.command("sync-claude")
|
|
274
|
+
def sync_claude(
|
|
275
|
+
source: str = typer.Option(
|
|
276
|
+
"patterns",
|
|
277
|
+
"--source",
|
|
278
|
+
"-s",
|
|
279
|
+
help="Source to sync (patterns, bugs)",
|
|
280
|
+
),
|
|
281
|
+
):
|
|
282
|
+
"""Sync patterns to Claude Code memory."""
|
|
283
|
+
subprocess.run(["empathy-sync-claude", "--source", source], check=False)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
# =============================================================================
|
|
287
|
+
# WORKFLOW COMMANDS (delegate to legacy CLI)
|
|
288
|
+
# =============================================================================
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
@app.command("morning")
|
|
292
|
+
def morning():
|
|
293
|
+
"""Start-of-day briefing with patterns, git context, and priorities."""
|
|
294
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "morning"], check=False)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
@app.command("ship")
|
|
298
|
+
def ship(
|
|
299
|
+
tests_only: bool = typer.Option(False, "--tests-only", help="Run tests only"),
|
|
300
|
+
security_only: bool = typer.Option(False, "--security-only", help="Run security checks only"),
|
|
301
|
+
skip_sync: bool = typer.Option(False, "--skip-sync", help="Skip Claude sync"),
|
|
302
|
+
):
|
|
303
|
+
"""Pre-commit validation (lint, format, tests, security)."""
|
|
304
|
+
args = [sys.executable, "-m", "empathy_os.cli", "ship"]
|
|
305
|
+
if tests_only:
|
|
306
|
+
args.append("--tests-only")
|
|
307
|
+
if security_only:
|
|
308
|
+
args.append("--security-only")
|
|
309
|
+
if skip_sync:
|
|
310
|
+
args.append("--skip-sync")
|
|
311
|
+
subprocess.run(args, check=False)
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
@app.command("health")
|
|
315
|
+
def health(
|
|
316
|
+
deep: bool = typer.Option(False, "--deep", help="Comprehensive health check"),
|
|
317
|
+
fix: bool = typer.Option(False, "--fix", help="Auto-fix issues"),
|
|
318
|
+
):
|
|
319
|
+
"""Quick health check (lint, types, tests)."""
|
|
320
|
+
args = [sys.executable, "-m", "empathy_os.cli", "health"]
|
|
321
|
+
if deep:
|
|
322
|
+
args.append("--deep")
|
|
323
|
+
if fix:
|
|
324
|
+
args.append("--fix")
|
|
325
|
+
subprocess.run(args, check=False)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
@app.command("fix-all")
|
|
329
|
+
def fix_all():
|
|
330
|
+
"""Fix all lint and format issues."""
|
|
331
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "fix-all"], check=False)
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
@app.command("learn")
|
|
335
|
+
def learn(
|
|
336
|
+
analyze: int = typer.Option(20, "--analyze", "-a", help="Number of commits to analyze"),
|
|
337
|
+
):
|
|
338
|
+
"""Learn patterns from commit history."""
|
|
339
|
+
subprocess.run(
|
|
340
|
+
[sys.executable, "-m", "empathy_os.cli", "learn", "--analyze", str(analyze)], check=False
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
@app.command("run")
|
|
345
|
+
def run_repl():
|
|
346
|
+
"""Start interactive REPL mode."""
|
|
347
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "run"], check=False)
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
# =============================================================================
|
|
351
|
+
# WIZARD COMMANDS
|
|
352
|
+
# =============================================================================
|
|
353
|
+
|
|
354
|
+
wizard_app = typer.Typer(help="AI Development Wizards")
|
|
355
|
+
app.add_typer(wizard_app, name="wizard")
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
@wizard_app.command("list")
|
|
359
|
+
def wizard_list():
|
|
360
|
+
"""List all available wizards."""
|
|
361
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "frameworks"], check=False)
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
@wizard_app.command("run")
|
|
365
|
+
def wizard_run(
|
|
366
|
+
name: str = typer.Argument(..., help="Wizard name to run"),
|
|
367
|
+
path: Path = typer.Option(Path(), "--path", "-p", help="Path to analyze"),
|
|
368
|
+
):
|
|
369
|
+
"""Run a specific wizard on your codebase."""
|
|
370
|
+
console.print(f"[yellow]Running wizard:[/yellow] {name} on {path}")
|
|
371
|
+
# Delegate to empathy-scan with wizard filter
|
|
372
|
+
subprocess.run(["empathy-scan", str(path), "--wizards", name], check=False)
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
@wizard_app.command("create")
|
|
376
|
+
def wizard_create(
|
|
377
|
+
name: str = typer.Argument(..., help="Wizard name (snake_case)"),
|
|
378
|
+
domain: str = typer.Option(
|
|
379
|
+
..., "--domain", "-d", help="Domain (healthcare, finance, software)"
|
|
380
|
+
),
|
|
381
|
+
wizard_type: str = typer.Option(
|
|
382
|
+
"domain", "--type", "-t", help="Wizard type (domain, coach, ai)"
|
|
383
|
+
),
|
|
384
|
+
methodology: str = typer.Option(
|
|
385
|
+
"pattern", "--methodology", "-m", help="Methodology (pattern, tdd)"
|
|
386
|
+
),
|
|
387
|
+
patterns: str | None = typer.Option(
|
|
388
|
+
None, "--patterns", "-p", help="Comma-separated pattern IDs"
|
|
389
|
+
),
|
|
390
|
+
interactive: bool = typer.Option(
|
|
391
|
+
False, "--interactive", "-i", help="Interactive pattern selection"
|
|
392
|
+
),
|
|
393
|
+
):
|
|
394
|
+
"""Create a new wizard using Wizard Factory (12x faster)."""
|
|
395
|
+
cmd = [
|
|
396
|
+
sys.executable,
|
|
397
|
+
"-m",
|
|
398
|
+
"scaffolding",
|
|
399
|
+
"create",
|
|
400
|
+
name,
|
|
401
|
+
"--domain",
|
|
402
|
+
domain,
|
|
403
|
+
"--type",
|
|
404
|
+
wizard_type,
|
|
405
|
+
"--methodology",
|
|
406
|
+
methodology,
|
|
407
|
+
]
|
|
408
|
+
if patterns:
|
|
409
|
+
cmd.extend(["--patterns", patterns])
|
|
410
|
+
if interactive:
|
|
411
|
+
cmd.append("--interactive")
|
|
412
|
+
subprocess.run(cmd, check=False)
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
@wizard_app.command("list-patterns")
|
|
416
|
+
def wizard_list_patterns():
|
|
417
|
+
"""List all available wizard patterns."""
|
|
418
|
+
subprocess.run([sys.executable, "-m", "scaffolding", "list-patterns"], check=False)
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
@wizard_app.command("generate-tests")
|
|
422
|
+
def wizard_generate_tests(
|
|
423
|
+
wizard_id: str = typer.Argument(..., help="Wizard ID"),
|
|
424
|
+
patterns: str = typer.Option(..., "--patterns", "-p", help="Comma-separated pattern IDs"),
|
|
425
|
+
output: Path | None = typer.Option(None, "--output", "-o", help="Output directory"),
|
|
426
|
+
):
|
|
427
|
+
"""Generate tests for a wizard."""
|
|
428
|
+
cmd = [sys.executable, "-m", "test_generator", "generate", wizard_id, "--patterns", patterns]
|
|
429
|
+
if output:
|
|
430
|
+
cmd.extend(["--output", str(output)])
|
|
431
|
+
subprocess.run(cmd, check=False)
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
@wizard_app.command("analyze")
|
|
435
|
+
def wizard_analyze(
|
|
436
|
+
wizard_id: str = typer.Argument(..., help="Wizard ID"),
|
|
437
|
+
patterns: str = typer.Option(..., "--patterns", "-p", help="Wizard ID"),
|
|
438
|
+
json_output: bool = typer.Option(False, "--json", help="Output JSON format"),
|
|
439
|
+
):
|
|
440
|
+
"""Analyze wizard risk and get coverage recommendations."""
|
|
441
|
+
cmd = [sys.executable, "-m", "test_generator", "analyze", wizard_id, "--patterns", patterns]
|
|
442
|
+
if json_output:
|
|
443
|
+
cmd.append("--json")
|
|
444
|
+
subprocess.run(cmd, check=False)
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
# =============================================================================
|
|
448
|
+
# WORKFLOW SUBCOMMAND GROUP
|
|
449
|
+
# =============================================================================
|
|
450
|
+
|
|
451
|
+
workflow_app = typer.Typer(help="Multi-model workflows")
|
|
452
|
+
app.add_typer(workflow_app, name="workflow")
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
@workflow_app.command("list")
|
|
456
|
+
def workflow_list():
|
|
457
|
+
"""List available multi-model workflows."""
|
|
458
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "workflow", "list"], check=False)
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
@workflow_app.command("run")
|
|
462
|
+
def workflow_run(
|
|
463
|
+
name: str = typer.Argument(..., help="Workflow name"),
|
|
464
|
+
path: Path = typer.Option(Path(), "--path", "-p", help="Path to run on"),
|
|
465
|
+
):
|
|
466
|
+
"""Run a multi-model workflow."""
|
|
467
|
+
subprocess.run(
|
|
468
|
+
[sys.executable, "-m", "empathy_os.cli", "workflow", "run", name, str(path)], check=False
|
|
469
|
+
)
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
@workflow_app.command("create")
|
|
473
|
+
def workflow_create(
|
|
474
|
+
name: str = typer.Argument(..., help="Workflow name (kebab-case, e.g., bug-scanner)"),
|
|
475
|
+
description: str = typer.Option(None, "--description", "-d", help="Workflow description"),
|
|
476
|
+
patterns: str = typer.Option(None, "--patterns", "-p", help="Comma-separated pattern IDs"),
|
|
477
|
+
stages: str = typer.Option(None, "--stages", "-s", help="Comma-separated stage names"),
|
|
478
|
+
tier_map: str = typer.Option(
|
|
479
|
+
None, "--tier-map", "-t", help="Tier map (e.g., analyze:CHEAP,process:CAPABLE)"
|
|
480
|
+
),
|
|
481
|
+
output: Path = typer.Option(None, "--output", "-o", help="Output directory"),
|
|
482
|
+
):
|
|
483
|
+
"""Create a new workflow using Workflow Factory (12x faster)."""
|
|
484
|
+
cmd = [sys.executable, "-m", "workflow_scaffolding", "create", name]
|
|
485
|
+
if description:
|
|
486
|
+
cmd.extend(["--description", description])
|
|
487
|
+
if patterns:
|
|
488
|
+
cmd.extend(["--patterns", patterns])
|
|
489
|
+
if stages:
|
|
490
|
+
cmd.extend(["--stages", stages])
|
|
491
|
+
if tier_map:
|
|
492
|
+
cmd.extend(["--tier-map", tier_map])
|
|
493
|
+
if output:
|
|
494
|
+
cmd.extend(["--output", str(output)])
|
|
495
|
+
subprocess.run(cmd, check=False)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
@workflow_app.command("list-patterns")
|
|
499
|
+
def workflow_list_patterns():
|
|
500
|
+
"""List available workflow patterns."""
|
|
501
|
+
subprocess.run([sys.executable, "-m", "workflow_scaffolding", "list-patterns"], check=False)
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
@workflow_app.command("recommend")
|
|
505
|
+
def workflow_recommend(
|
|
506
|
+
workflow_type: str = typer.Argument(
|
|
507
|
+
..., help="Workflow type (code-analysis, simple, multi-agent, etc.)"
|
|
508
|
+
),
|
|
509
|
+
):
|
|
510
|
+
"""Recommend patterns for a workflow type."""
|
|
511
|
+
subprocess.run(
|
|
512
|
+
[sys.executable, "-m", "workflow_scaffolding", "recommend", workflow_type], check=False
|
|
513
|
+
)
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
# =============================================================================
|
|
517
|
+
# UTILITY COMMANDS
|
|
518
|
+
# =============================================================================
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
@app.command("cheatsheet")
|
|
522
|
+
def cheatsheet():
|
|
523
|
+
"""Show quick reference for all commands."""
|
|
524
|
+
console.print(
|
|
525
|
+
Panel.fit(
|
|
526
|
+
"""[bold]Getting Started[/bold]
|
|
527
|
+
empathy morning Start-of-day briefing
|
|
528
|
+
empathy health Quick health check
|
|
529
|
+
empathy ship Pre-commit validation
|
|
530
|
+
empathy run Interactive REPL
|
|
531
|
+
|
|
532
|
+
[bold]Memory System[/bold]
|
|
533
|
+
empathy memory status Check Redis & patterns
|
|
534
|
+
empathy memory start Start Redis server
|
|
535
|
+
empathy memory patterns List stored patterns
|
|
536
|
+
|
|
537
|
+
[bold]Provider Config[/bold]
|
|
538
|
+
empathy provider Show current config
|
|
539
|
+
empathy provider --set hybrid Use best-of-breed
|
|
540
|
+
empathy provider registry List all models
|
|
541
|
+
|
|
542
|
+
[bold]Code Inspection[/bold]
|
|
543
|
+
empathy scan . Scan for issues
|
|
544
|
+
empathy inspect . Deep analysis (SARIF)
|
|
545
|
+
empathy fix-all Auto-fix everything
|
|
546
|
+
|
|
547
|
+
[bold]Pattern Learning[/bold]
|
|
548
|
+
empathy learn --analyze 20 Learn from commits
|
|
549
|
+
empathy sync-claude Sync to Claude Code
|
|
550
|
+
|
|
551
|
+
[bold]Workflows[/bold]
|
|
552
|
+
empathy workflow list Show available workflows
|
|
553
|
+
empathy workflow run <name> Execute a workflow
|
|
554
|
+
empathy workflow create <name> -p <patterns> Create workflow (12x faster)
|
|
555
|
+
empathy workflow list-patterns List available patterns
|
|
556
|
+
|
|
557
|
+
[bold]Wizards[/bold]
|
|
558
|
+
empathy wizard list Show available wizards
|
|
559
|
+
empathy wizard run <name> Execute a wizard
|
|
560
|
+
empathy wizard create <name> -d <domain> Create wizard (12x faster)
|
|
561
|
+
empathy wizard list-patterns List available patterns""",
|
|
562
|
+
title="[bold blue]Empathy Framework Cheatsheet[/bold blue]",
|
|
563
|
+
),
|
|
564
|
+
)
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
@app.command("dashboard")
|
|
568
|
+
def dashboard():
|
|
569
|
+
"""Launch visual dashboard."""
|
|
570
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "dashboard"], check=False)
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
@app.command("costs")
|
|
574
|
+
def costs():
|
|
575
|
+
"""View API cost tracking."""
|
|
576
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "costs"], check=False)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
@app.command("init")
|
|
580
|
+
def init():
|
|
581
|
+
"""Create a new configuration file."""
|
|
582
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "init"], check=False)
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
@app.command("status")
|
|
586
|
+
def status():
|
|
587
|
+
"""What needs attention now."""
|
|
588
|
+
subprocess.run([sys.executable, "-m", "empathy_os.cli", "status"], check=False)
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
def main():
|
|
592
|
+
"""Entry point for the unified CLI."""
|
|
593
|
+
app()
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
if __name__ == "__main__":
|
|
597
|
+
main()
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Configuration management for Empathy Framework.
|
|
2
|
+
|
|
3
|
+
This package provides:
|
|
4
|
+
1. Original EmpathyConfig (backward compatible)
|
|
5
|
+
2. XML enhancement configurations (new)
|
|
6
|
+
|
|
7
|
+
Copyright 2026 Smart-AI-Memory
|
|
8
|
+
Licensed under Fair Source License 0.9
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
# Import original config from parent module's config.py for backward compatibility
|
|
12
|
+
import importlib.util
|
|
13
|
+
import sys
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
# Check if PyYAML is available
|
|
17
|
+
try:
|
|
18
|
+
import yaml # noqa: F401
|
|
19
|
+
|
|
20
|
+
YAML_AVAILABLE = True
|
|
21
|
+
except ImportError:
|
|
22
|
+
YAML_AVAILABLE = False
|
|
23
|
+
|
|
24
|
+
# Load the original config.py module directly
|
|
25
|
+
config_py_path = Path(__file__).parent.parent / "config.py"
|
|
26
|
+
spec = importlib.util.spec_from_file_location("empathy_os_config_legacy", config_py_path)
|
|
27
|
+
if spec and spec.loader:
|
|
28
|
+
legacy_config = importlib.util.module_from_spec(spec)
|
|
29
|
+
spec.loader.exec_module(legacy_config)
|
|
30
|
+
EmpathyConfig = legacy_config.EmpathyConfig
|
|
31
|
+
load_config = legacy_config.load_config
|
|
32
|
+
else:
|
|
33
|
+
# Fallback if import fails
|
|
34
|
+
EmpathyConfig = None
|
|
35
|
+
load_config = None
|
|
36
|
+
|
|
37
|
+
# Import XML enhancement configs
|
|
38
|
+
from empathy_os.config.xml_config import ( # noqa: E402
|
|
39
|
+
AdaptiveConfig,
|
|
40
|
+
EmpathyXMLConfig,
|
|
41
|
+
I18nConfig,
|
|
42
|
+
MetricsConfig,
|
|
43
|
+
OptimizationConfig,
|
|
44
|
+
XMLConfig,
|
|
45
|
+
get_config,
|
|
46
|
+
set_config,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
__all__ = [
|
|
50
|
+
# Original config (backward compatible)
|
|
51
|
+
"EmpathyConfig",
|
|
52
|
+
"load_config",
|
|
53
|
+
"YAML_AVAILABLE",
|
|
54
|
+
# XML enhancement configs
|
|
55
|
+
"XMLConfig",
|
|
56
|
+
"OptimizationConfig",
|
|
57
|
+
"AdaptiveConfig",
|
|
58
|
+
"I18nConfig",
|
|
59
|
+
"MetricsConfig",
|
|
60
|
+
"EmpathyXMLConfig",
|
|
61
|
+
"get_config",
|
|
62
|
+
"set_config",
|
|
63
|
+
]
|