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,198 @@
|
|
|
1
|
+
"""Profiling commands for Empathy Framework CLI.
|
|
2
|
+
|
|
3
|
+
Performance profiling and memory analysis commands.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
empathy profile memory-scan # Scan for memory leaks
|
|
7
|
+
empathy profile memory-scan --json # JSON output for CI
|
|
8
|
+
empathy profile memory-test # Profile memory module
|
|
9
|
+
|
|
10
|
+
Copyright 2025 Smart-AI-Memory
|
|
11
|
+
Licensed under Fair Source License 0.9
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import subprocess
|
|
15
|
+
import sys
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
|
|
18
|
+
import typer
|
|
19
|
+
from rich.console import Console
|
|
20
|
+
|
|
21
|
+
console = Console()
|
|
22
|
+
|
|
23
|
+
# Create the profile command group
|
|
24
|
+
profile_app = typer.Typer(
|
|
25
|
+
name="profile",
|
|
26
|
+
help="Performance profiling and memory analysis",
|
|
27
|
+
no_args_is_help=True,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@profile_app.command("memory-scan")
|
|
32
|
+
def memory_scan(
|
|
33
|
+
path: Path = typer.Argument(
|
|
34
|
+
Path("src"),
|
|
35
|
+
help="Directory to scan for memory issues",
|
|
36
|
+
),
|
|
37
|
+
feature: str = typer.Option(
|
|
38
|
+
None,
|
|
39
|
+
"--feature",
|
|
40
|
+
"-f",
|
|
41
|
+
help="Scan files related to a specific feature",
|
|
42
|
+
),
|
|
43
|
+
min_severity: str = typer.Option(
|
|
44
|
+
"MEDIUM",
|
|
45
|
+
"--min-severity",
|
|
46
|
+
"-s",
|
|
47
|
+
help="Minimum severity to report (HIGH, MEDIUM, LOW)",
|
|
48
|
+
),
|
|
49
|
+
top: int = typer.Option(
|
|
50
|
+
10,
|
|
51
|
+
"--top",
|
|
52
|
+
"-t",
|
|
53
|
+
help="Number of hot files to show",
|
|
54
|
+
),
|
|
55
|
+
json_output: bool = typer.Option(
|
|
56
|
+
False,
|
|
57
|
+
"--json",
|
|
58
|
+
"-j",
|
|
59
|
+
help="Output in JSON format",
|
|
60
|
+
),
|
|
61
|
+
run_profile: bool = typer.Option(
|
|
62
|
+
False,
|
|
63
|
+
"--profile",
|
|
64
|
+
"-p",
|
|
65
|
+
help="Run dynamic memory profiling on hot files",
|
|
66
|
+
),
|
|
67
|
+
) -> None:
|
|
68
|
+
"""Scan codebase for memory leak patterns.
|
|
69
|
+
|
|
70
|
+
Detects common memory issues like:
|
|
71
|
+
- sorted()[:N] patterns (should use heapq)
|
|
72
|
+
- get_all_* methods that load entire datasets
|
|
73
|
+
- Unbounded caches without eviction
|
|
74
|
+
- Large list comprehensions that could be generators
|
|
75
|
+
|
|
76
|
+
Examples:
|
|
77
|
+
empathy profile memory-scan # Scan src/
|
|
78
|
+
empathy profile memory-scan src/empathy_os # Scan specific dir
|
|
79
|
+
empathy profile memory-scan --feature "cache" # Scan cache-related files
|
|
80
|
+
empathy profile memory-scan --json > report.json # CI integration
|
|
81
|
+
"""
|
|
82
|
+
scanner_path = (
|
|
83
|
+
Path(__file__).parent.parent.parent.parent.parent / "benchmarks" / "memory_leak_scanner.py"
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if not scanner_path.exists():
|
|
87
|
+
console.print("[red]Error:[/red] Memory leak scanner not found at expected path")
|
|
88
|
+
console.print(f"Expected: {scanner_path}")
|
|
89
|
+
raise typer.Exit(1)
|
|
90
|
+
|
|
91
|
+
args = [sys.executable, str(scanner_path), "--path", str(path)]
|
|
92
|
+
|
|
93
|
+
if feature:
|
|
94
|
+
args.extend(["--feature", feature])
|
|
95
|
+
if min_severity:
|
|
96
|
+
args.extend(["--min-severity", min_severity])
|
|
97
|
+
if top:
|
|
98
|
+
args.extend(["--top", str(top)])
|
|
99
|
+
if json_output:
|
|
100
|
+
args.append("--json")
|
|
101
|
+
if run_profile:
|
|
102
|
+
args.append("--profile")
|
|
103
|
+
|
|
104
|
+
subprocess.run(args, check=False)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@profile_app.command("memory-test")
|
|
108
|
+
def memory_test(
|
|
109
|
+
module: str = typer.Argument(
|
|
110
|
+
"unified",
|
|
111
|
+
help="Memory module to profile (unified, short_term, graph)",
|
|
112
|
+
),
|
|
113
|
+
) -> None:
|
|
114
|
+
"""Run memory profiling tests on memory modules.
|
|
115
|
+
|
|
116
|
+
Profiles the specified memory module and reports memory usage
|
|
117
|
+
for key operations like search, store, and retrieve.
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
empathy profile memory-test # Profile unified memory
|
|
121
|
+
empathy profile memory-test unified # Same as above
|
|
122
|
+
"""
|
|
123
|
+
try:
|
|
124
|
+
import memory_profiler # noqa: F401 - check if installed
|
|
125
|
+
except ImportError:
|
|
126
|
+
console.print("[yellow]Installing memory_profiler...[/yellow]")
|
|
127
|
+
subprocess.run([sys.executable, "-m", "pip", "install", "memory_profiler"], check=True)
|
|
128
|
+
|
|
129
|
+
profile_script = (
|
|
130
|
+
Path(__file__).parent.parent.parent.parent.parent
|
|
131
|
+
/ "benchmarks"
|
|
132
|
+
/ "profile_unified_memory.py"
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
if not profile_script.exists():
|
|
136
|
+
console.print("[red]Error:[/red] Memory profiling script not found")
|
|
137
|
+
console.print(f"Expected: {profile_script}")
|
|
138
|
+
raise typer.Exit(1)
|
|
139
|
+
|
|
140
|
+
console.print(f"[bold]Profiling memory module: {module}[/bold]\n")
|
|
141
|
+
subprocess.run([sys.executable, "-m", "memory_profiler", str(profile_script)], check=False)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@profile_app.command("hot-files")
|
|
145
|
+
def hot_files(
|
|
146
|
+
path: Path = typer.Argument(
|
|
147
|
+
Path("src"),
|
|
148
|
+
help="Directory to analyze",
|
|
149
|
+
),
|
|
150
|
+
top: int = typer.Option(
|
|
151
|
+
15,
|
|
152
|
+
"--top",
|
|
153
|
+
"-t",
|
|
154
|
+
help="Number of files to show",
|
|
155
|
+
),
|
|
156
|
+
) -> None:
|
|
157
|
+
"""Show files most likely to have memory issues.
|
|
158
|
+
|
|
159
|
+
Quick scan that ranks files by risk score based on
|
|
160
|
+
detected memory leak patterns.
|
|
161
|
+
|
|
162
|
+
Examples:
|
|
163
|
+
empathy profile hot-files # Scan src/
|
|
164
|
+
empathy profile hot-files --top 20 # Show top 20
|
|
165
|
+
"""
|
|
166
|
+
scanner_path = (
|
|
167
|
+
Path(__file__).parent.parent.parent.parent.parent / "benchmarks" / "memory_leak_scanner.py"
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
if not scanner_path.exists():
|
|
171
|
+
console.print("[red]Error:[/red] Memory leak scanner not found")
|
|
172
|
+
raise typer.Exit(1)
|
|
173
|
+
|
|
174
|
+
args = [
|
|
175
|
+
sys.executable,
|
|
176
|
+
str(scanner_path),
|
|
177
|
+
"--path",
|
|
178
|
+
str(path),
|
|
179
|
+
"--min-severity",
|
|
180
|
+
"MEDIUM",
|
|
181
|
+
"--top",
|
|
182
|
+
str(top),
|
|
183
|
+
]
|
|
184
|
+
subprocess.run(args, check=False)
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@profile_app.callback()
|
|
188
|
+
def callback() -> None:
|
|
189
|
+
"""Performance profiling and memory analysis tools.
|
|
190
|
+
|
|
191
|
+
Use these commands to identify memory leaks, inefficient patterns,
|
|
192
|
+
and performance bottlenecks in your codebase.
|
|
193
|
+
|
|
194
|
+
[bold]Quick Start:[/bold]
|
|
195
|
+
empathy profile memory-scan Scan for memory issues
|
|
196
|
+
empathy profile hot-files Show riskiest files
|
|
197
|
+
empathy profile memory-test Profile memory module
|
|
198
|
+
"""
|
|
@@ -9,16 +9,27 @@ Licensed under Fair Source License 0.9
|
|
|
9
9
|
import subprocess
|
|
10
10
|
import sys
|
|
11
11
|
|
|
12
|
+
import typer
|
|
12
13
|
from rich.panel import Panel
|
|
13
14
|
|
|
14
15
|
from empathy_os.cli.core import console
|
|
15
16
|
|
|
17
|
+
# Create the utilities Typer app
|
|
18
|
+
utilities_app = typer.Typer(
|
|
19
|
+
help="Utility tools - project init, cheatsheet, dashboard, costs",
|
|
20
|
+
no_args_is_help=True,
|
|
21
|
+
)
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
|
|
24
|
+
@utilities_app.command("sync-claude")
|
|
25
|
+
def sync_claude(
|
|
26
|
+
source: str = typer.Option("patterns", "--source", "-s", help="Source to sync"),
|
|
27
|
+
) -> None:
|
|
18
28
|
"""Sync patterns to Claude Code memory."""
|
|
19
29
|
subprocess.run(["empathy-sync-claude", "--source", source], check=False)
|
|
20
30
|
|
|
21
31
|
|
|
32
|
+
@utilities_app.command("cheatsheet")
|
|
22
33
|
def cheatsheet() -> None:
|
|
23
34
|
"""Show quick reference for all commands."""
|
|
24
35
|
console.print(
|
|
@@ -49,9 +60,14 @@ def cheatsheet() -> None:
|
|
|
49
60
|
empathy inspect . Deep analysis (SARIF)
|
|
50
61
|
empathy fix-all Auto-fix everything
|
|
51
62
|
|
|
63
|
+
[bold]Profiling[/bold]
|
|
64
|
+
empathy profile memory-scan Scan for memory leaks
|
|
65
|
+
empathy profile hot-files Show riskiest files
|
|
66
|
+
empathy profile memory-test Profile memory module
|
|
67
|
+
|
|
52
68
|
[bold]Pattern Learning[/bold]
|
|
53
69
|
empathy learn --analyze 20 Learn from commits
|
|
54
|
-
empathy sync-claude
|
|
70
|
+
empathy utilities sync-claude Sync to Claude Code
|
|
55
71
|
|
|
56
72
|
[bold]Workflows[/bold]
|
|
57
73
|
empathy workflow list Show available workflows
|
|
@@ -59,11 +75,11 @@ def cheatsheet() -> None:
|
|
|
59
75
|
empathy workflow create <name> -p <patterns> Create workflow (12x faster)
|
|
60
76
|
empathy workflow list-patterns List available patterns
|
|
61
77
|
|
|
62
|
-
[bold]
|
|
63
|
-
empathy
|
|
64
|
-
empathy
|
|
65
|
-
empathy
|
|
66
|
-
empathy
|
|
78
|
+
[bold]Workflows[/bold]
|
|
79
|
+
empathy workflow list Show available workflows
|
|
80
|
+
empathy workflow run <name> Execute a workflow
|
|
81
|
+
empathy workflow create <name> -d <domain> Create workflow (12x faster)
|
|
82
|
+
empathy workflow list-patterns List available patterns
|
|
67
83
|
|
|
68
84
|
[bold]Usage Telemetry[/bold]
|
|
69
85
|
empathy telemetry show View recent LLM calls & costs
|
|
@@ -74,21 +90,25 @@ def cheatsheet() -> None:
|
|
|
74
90
|
)
|
|
75
91
|
|
|
76
92
|
|
|
93
|
+
@utilities_app.command("dashboard")
|
|
77
94
|
def dashboard() -> None:
|
|
78
95
|
"""Launch visual dashboard."""
|
|
79
96
|
subprocess.run([sys.executable, "-m", "empathy_os.cli", "dashboard"], check=False)
|
|
80
97
|
|
|
81
98
|
|
|
99
|
+
@utilities_app.command("costs")
|
|
82
100
|
def costs() -> None:
|
|
83
101
|
"""View API cost tracking."""
|
|
84
102
|
subprocess.run([sys.executable, "-m", "empathy_os.cli", "costs"], check=False)
|
|
85
103
|
|
|
86
104
|
|
|
105
|
+
@utilities_app.command("init")
|
|
87
106
|
def init() -> None:
|
|
88
107
|
"""Create a new configuration file."""
|
|
89
108
|
subprocess.run([sys.executable, "-m", "empathy_os.cli", "init"], check=False)
|
|
90
109
|
|
|
91
110
|
|
|
111
|
+
@utilities_app.command("status")
|
|
92
112
|
def status() -> None:
|
|
93
113
|
"""What needs attention now."""
|
|
94
114
|
subprocess.run([sys.executable, "-m", "empathy_os.cli", "status"], check=False)
|
empathy_os/cli.py
CHANGED
|
@@ -4,7 +4,7 @@ Provides CLI commands for:
|
|
|
4
4
|
- Running interactive REPL (empathy run)
|
|
5
5
|
- Inspecting patterns, metrics, state (empathy inspect)
|
|
6
6
|
- Exporting/importing patterns (empathy export/import)
|
|
7
|
-
- Interactive setup
|
|
7
|
+
- Interactive setup workflow (empathy workflow)
|
|
8
8
|
- Configuration management
|
|
9
9
|
- Power user workflows: morning, ship, fix-all, learn (v2.4+)
|
|
10
10
|
|
|
@@ -29,7 +29,6 @@ from empathy_os.pattern_library import PatternLibrary
|
|
|
29
29
|
from empathy_os.persistence import MetricsCollector, PatternPersistence, StateManager
|
|
30
30
|
from empathy_os.platform_utils import setup_asyncio_policy
|
|
31
31
|
from empathy_os.templates import cmd_new
|
|
32
|
-
from empathy_os.wizard_factory_cli import add_wizard_factory_commands
|
|
33
32
|
from empathy_os.workflows import (
|
|
34
33
|
cmd_fix_all,
|
|
35
34
|
cmd_learn,
|
|
@@ -84,7 +83,7 @@ logger = get_logger(__name__)
|
|
|
84
83
|
CHEATSHEET = {
|
|
85
84
|
"Getting Started": [
|
|
86
85
|
("empathy init", "Create a new config file"),
|
|
87
|
-
("empathy
|
|
86
|
+
("empathy workflow", "Interactive setup workflow"),
|
|
88
87
|
("empathy run", "Interactive REPL mode"),
|
|
89
88
|
],
|
|
90
89
|
"Daily Workflow": [
|
|
@@ -443,7 +442,7 @@ First, let's create a configuration file for your project.
|
|
|
443
442
|
Run: empathy init
|
|
444
443
|
|
|
445
444
|
This creates empathy.config.yaml with sensible defaults.
|
|
446
|
-
Alternatively, use 'empathy
|
|
445
|
+
Alternatively, use 'empathy workflow' for an interactive setup.
|
|
447
446
|
""",
|
|
448
447
|
"check": lambda: _file_exists("empathy.config.yaml")
|
|
449
448
|
or _file_exists("empathy.config.yml"),
|
|
@@ -822,8 +821,8 @@ def cmd_orchestrate(args):
|
|
|
822
821
|
|
|
823
822
|
from empathy_os.workflows.orchestrated_health_check import OrchestratedHealthCheckWorkflow
|
|
824
823
|
from empathy_os.workflows.orchestrated_release_prep import OrchestratedReleasePrepWorkflow
|
|
825
|
-
# test_coverage_boost removed - feature disabled in v4.0.0 (being redesigned)
|
|
826
824
|
|
|
825
|
+
# test_coverage_boost removed - feature disabled in v4.0.0 (being redesigned)
|
|
827
826
|
# Get workflow type
|
|
828
827
|
workflow_type = args.workflow
|
|
829
828
|
|
|
@@ -1356,50 +1355,24 @@ def cmd_status(args):
|
|
|
1356
1355
|
def cmd_review(args):
|
|
1357
1356
|
"""Pattern-based code review against historical bugs.
|
|
1358
1357
|
|
|
1359
|
-
|
|
1358
|
+
Note: This command has been deprecated. The underlying workflow module
|
|
1359
|
+
has been removed. Use 'empathy workflow run bug-predict' instead.
|
|
1360
1360
|
|
|
1361
1361
|
Args:
|
|
1362
|
-
args: Namespace object from argparse
|
|
1363
|
-
- files (list[str]): Files to review (default: recent changes).
|
|
1364
|
-
- staged (bool): If True, review staged changes only.
|
|
1365
|
-
- severity (str): Minimum severity threshold for findings.
|
|
1366
|
-
- patterns_dir (str): Path to patterns directory.
|
|
1367
|
-
- json (bool): If True, output as JSON format.
|
|
1362
|
+
args: Namespace object from argparse.
|
|
1368
1363
|
|
|
1369
1364
|
Returns:
|
|
1370
|
-
None: Prints
|
|
1365
|
+
None: Prints deprecation message.
|
|
1371
1366
|
"""
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
{
|
|
1382
|
-
"files": args.files,
|
|
1383
|
-
"staged_only": args.staged,
|
|
1384
|
-
"severity_threshold": args.severity,
|
|
1385
|
-
},
|
|
1386
|
-
),
|
|
1387
|
-
)
|
|
1388
|
-
|
|
1389
|
-
# Output results
|
|
1390
|
-
if args.json:
|
|
1391
|
-
import json
|
|
1392
|
-
|
|
1393
|
-
print(json.dumps(result, indent=2, default=str))
|
|
1394
|
-
else:
|
|
1395
|
-
print(wizard.format_terminal_output(result))
|
|
1396
|
-
|
|
1397
|
-
# Show recommendations
|
|
1398
|
-
recommendations = result.get("recommendations", [])
|
|
1399
|
-
if recommendations and result.get("findings"):
|
|
1400
|
-
print("\nRecommendations:")
|
|
1401
|
-
for rec in recommendations:
|
|
1402
|
-
print(f" • {rec}")
|
|
1367
|
+
print("⚠️ The 'review' command has been deprecated.")
|
|
1368
|
+
print()
|
|
1369
|
+
print("The CodeReviewWorkflow module has been removed.")
|
|
1370
|
+
print("Please use one of these alternatives:")
|
|
1371
|
+
print()
|
|
1372
|
+
print(" empathy workflow run bug-predict # Scan for risky patterns")
|
|
1373
|
+
print(" ruff check <files> # Fast linting")
|
|
1374
|
+
print(" bandit -r <path> # Security scanning")
|
|
1375
|
+
print()
|
|
1403
1376
|
|
|
1404
1377
|
|
|
1405
1378
|
def cmd_health(args):
|
|
@@ -1823,7 +1796,7 @@ def cmd_inspect(args):
|
|
|
1823
1796
|
print(f" Success rate: {pattern.success_rate:.0%}")
|
|
1824
1797
|
except FileNotFoundError:
|
|
1825
1798
|
print(f"✗ Pattern library not found: {db_path}")
|
|
1826
|
-
print(" Tip: Use 'empathy-framework
|
|
1799
|
+
print(" Tip: Use 'empathy-framework workflow' to set up your first project")
|
|
1827
1800
|
sys.exit(1)
|
|
1828
1801
|
except (ValueError, KeyError) as e:
|
|
1829
1802
|
# Invalid pattern data format
|
|
@@ -2046,8 +2019,8 @@ def cmd_import(args):
|
|
|
2046
2019
|
print()
|
|
2047
2020
|
|
|
2048
2021
|
|
|
2049
|
-
def
|
|
2050
|
-
"""Interactive setup
|
|
2022
|
+
def cmd_workflow(args):
|
|
2023
|
+
"""Interactive setup workflow.
|
|
2051
2024
|
|
|
2052
2025
|
Guides user through initial framework configuration step by step.
|
|
2053
2026
|
|
|
@@ -2057,7 +2030,7 @@ def cmd_wizard(args):
|
|
|
2057
2030
|
Returns:
|
|
2058
2031
|
None: Creates empathy.config.yml with user's choices.
|
|
2059
2032
|
"""
|
|
2060
|
-
print("🧙 Empathy Framework Setup
|
|
2033
|
+
print("🧙 Empathy Framework Setup Workflow")
|
|
2061
2034
|
print("=" * 50)
|
|
2062
2035
|
print("\nI'll help you set up your Empathy Framework configuration.\n")
|
|
2063
2036
|
|
|
@@ -2140,7 +2113,7 @@ def cmd_wizard(args):
|
|
|
2140
2113
|
|
|
2141
2114
|
# Write YAML config
|
|
2142
2115
|
yaml_content = f"""# Empathy Framework Configuration
|
|
2143
|
-
# Generated by setup
|
|
2116
|
+
# Generated by setup workflow
|
|
2144
2117
|
|
|
2145
2118
|
# Core settings
|
|
2146
2119
|
user_id: "{config["user_id"]}"
|
|
@@ -2605,6 +2578,7 @@ def cmd_workflow(args):
|
|
|
2605
2578
|
# Initialize workflow with provider and optional tier fallback
|
|
2606
2579
|
# Note: Not all workflows support enable_tier_fallback, so we check first
|
|
2607
2580
|
import inspect
|
|
2581
|
+
|
|
2608
2582
|
use_tier_fallback = getattr(args, "use_recommended_tier", False)
|
|
2609
2583
|
|
|
2610
2584
|
# Get the workflow's __init__ signature to know what params it accepts
|
|
@@ -3203,12 +3177,12 @@ def main():
|
|
|
3203
3177
|
parser_import.add_argument("--db", help="Database path (default: .empathy/patterns.db)")
|
|
3204
3178
|
parser_import.set_defaults(func=cmd_import)
|
|
3205
3179
|
|
|
3206
|
-
#
|
|
3207
|
-
|
|
3208
|
-
"
|
|
3209
|
-
help="Interactive setup
|
|
3180
|
+
# Workflow command (Interactive setup)
|
|
3181
|
+
parser_workflow = subparsers.add_parser(
|
|
3182
|
+
"workflow",
|
|
3183
|
+
help="Interactive setup workflow for creating configuration",
|
|
3210
3184
|
)
|
|
3211
|
-
|
|
3185
|
+
parser_workflow.set_defaults(func=cmd_workflow)
|
|
3212
3186
|
|
|
3213
3187
|
# Provider command (Model provider configuration)
|
|
3214
3188
|
parser_provider = subparsers.add_parser(
|
|
@@ -3956,9 +3930,6 @@ def main():
|
|
|
3956
3930
|
)
|
|
3957
3931
|
parser_orchestrate.set_defaults(func=cmd_orchestrate)
|
|
3958
3932
|
|
|
3959
|
-
# Wizard Factory commands (create wizards 12x faster)
|
|
3960
|
-
add_wizard_factory_commands(subparsers)
|
|
3961
|
-
|
|
3962
3933
|
# Parse arguments
|
|
3963
3934
|
args = parser.parse_args()
|
|
3964
3935
|
|