empathy-framework 4.7.0__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.0.dist-info → empathy_framework-4.7.1.dist-info}/RECORD +31 -6
- {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/top_level.txt +1 -0
- empathy_os/vscode_bridge 2.py +173 -0
- empathy_os/workflows/progressive/README 2.md +454 -0
- empathy_os/workflows/progressive/__init__ 2.py +92 -0
- empathy_os/workflows/progressive/cli 2.py +242 -0
- empathy_os/workflows/progressive/core 2.py +488 -0
- empathy_os/workflows/progressive/orchestrator 2.py +701 -0
- empathy_os/workflows/progressive/reports 2.py +528 -0
- empathy_os/workflows/progressive/telemetry 2.py +280 -0
- empathy_os/workflows/progressive/test_gen 2.py +514 -0
- empathy_os/workflows/progressive/workflow 2.py +628 -0
- 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
- empathy_framework-4.7.0.dist-info/METADATA +0 -1598
- {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/WHEEL +0 -0
- {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/entry_points.txt +0 -0
- {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
empathy_framework-4.7.
|
|
1
|
+
empathy_framework-4.7.1.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
|
|
2
2
|
empathy_healthcare_plugin/__init__.py,sha256=4NioL1_86UXzkd-QNkQZUSZ8rKTQGSP0TC9VXP32kQs,295
|
|
3
3
|
empathy_healthcare_plugin/monitors/__init__.py,sha256=Udp8qfZR504QAq5_eQjvtIaE7v06Yguc7nuF40KllQc,196
|
|
4
4
|
empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py,sha256=MWE5t8tW9HWZn_SNo-inx8-0nhdTNGhbcB8ZeDWyXa0,11648
|
|
@@ -120,6 +120,7 @@ empathy_os/redis_memory.py,sha256=MYhW_M41AoWhxxh8YggWUHxZaUoQZ7XxqeBB2qDqyww,23
|
|
|
120
120
|
empathy_os/templates.py,sha256=B5fzlc6wU3lwdaKK4ZUdytqOYrM6TEnFteZ0nCSp_EI,17220
|
|
121
121
|
empathy_os/tier_recommender.py,sha256=oYOKhnrTG2sqYsDvojQyaKuyC4ac_weSz4Xv0j0TuP8,14305
|
|
122
122
|
empathy_os/trust_building.py,sha256=z2ZsQWK5QjX6d7pxFWrFD54J1keUguTog6YztZJVPKI,19180
|
|
123
|
+
empathy_os/vscode_bridge 2.py,sha256=SgFmWFCoAoPww-g2hsRC2VeqAMTqUmXXxJ3hglykxP4,4967
|
|
123
124
|
empathy_os/vscode_bridge.py,sha256=SgFmWFCoAoPww-g2hsRC2VeqAMTqUmXXxJ3hglykxP4,4967
|
|
124
125
|
empathy_os/workflow_commands.py,sha256=J1KcEI_bNJ3OOZ0T8utcCZzXMmx6NzWUjlsbW0bYEfc,25520
|
|
125
126
|
empathy_os/adaptive/__init__.py,sha256=07m_Gsdxmm9mDBjJRFz7a8wZK-Tdd2QFRQOUw6yCc1w,342
|
|
@@ -328,14 +329,23 @@ empathy_os/workflows/keyboard_shortcuts/parsers.py,sha256=aws4HSjqBOrl-DQEOV9WeJ
|
|
|
328
329
|
empathy_os/workflows/keyboard_shortcuts/prompts.py,sha256=gcV2F2bAMjZUrbB13lOI4ixXzXm2TNWEZ4VbPhC7ITw,9164
|
|
329
330
|
empathy_os/workflows/keyboard_shortcuts/schema.py,sha256=MwvM63J9WTO6nqtwes5A04HH1dTa9XhJlD0SbFhsS5E,5806
|
|
330
331
|
empathy_os/workflows/keyboard_shortcuts/workflow.py,sha256=FOEQwc8IR0PEYim05zjR-uIlw6oPZHW9jQZ8skxXp0c,17678
|
|
332
|
+
empathy_os/workflows/progressive/README 2.md,sha256=ngn3ZC48LW-ON5Vow90dW4UvEWeOKuU7V-W4JdudqJo,13793
|
|
331
333
|
empathy_os/workflows/progressive/README.md,sha256=ngn3ZC48LW-ON5Vow90dW4UvEWeOKuU7V-W4JdudqJo,13793
|
|
334
|
+
empathy_os/workflows/progressive/__init__ 2.py,sha256=l18JX30ONk8H08Wm210k1W3AKat2tVzI840JqlzTBpU,2203
|
|
332
335
|
empathy_os/workflows/progressive/__init__.py,sha256=qkPVjO_MtHjxVcHMr5jbU9NMZTxVCGHXVD3EkngyCso,2179
|
|
336
|
+
empathy_os/workflows/progressive/cli 2.py,sha256=WIFxTBUsCL2hvKKoPFxYUgfhRFjMm-HVUjRp3Y-pvXA,6305
|
|
333
337
|
empathy_os/workflows/progressive/cli.py,sha256=jbl5jSk3wlbjGc00Ao06OO7aU53AZuVZVKJpJJAajX4,6122
|
|
338
|
+
empathy_os/workflows/progressive/core 2.py,sha256=891OttvWkFokBRVzvqVUxwpcNlgc7edlVYqGUCkn0vs,16101
|
|
334
339
|
empathy_os/workflows/progressive/core.py,sha256=2FzIsy0xKyP91-aMTGfERbX5Mow5CSlfR9RUmHU4GeM,16070
|
|
340
|
+
empathy_os/workflows/progressive/orchestrator 2.py,sha256=FsLcoRC8jujRcOV87PyN-0jzlLvStIQQqMFisxWWg0I,26786
|
|
335
341
|
empathy_os/workflows/progressive/orchestrator.py,sha256=LssTqdy4ufqhgpgS3QNZEdpeSkdg-MgpFyhW5zCJmAY,27733
|
|
342
|
+
empathy_os/workflows/progressive/reports 2.py,sha256=F2p3HyInGH8fT9-e_BsOVcgeQBtOugYsSyBn49yhhmc,17588
|
|
336
343
|
empathy_os/workflows/progressive/reports.py,sha256=VgymV6v7owodELf_QLQTwqGOEZjaFKclKxeQ0-vow0k,17631
|
|
344
|
+
empathy_os/workflows/progressive/telemetry 2.py,sha256=5ZjCmeGjtfESejocWdtvnm5iCTAQv5_3NRTYmuoIbVs,9427
|
|
337
345
|
empathy_os/workflows/progressive/telemetry.py,sha256=DiDTrkeKDjsWJnA57UrNfhbSG6qv9LaTP2wqHPcRscA,9398
|
|
346
|
+
empathy_os/workflows/progressive/test_gen 2.py,sha256=rNjjrQ8AFoXRe99X1Yk020gX6tcTxLh5pGMXXho8XRs,15802
|
|
338
347
|
empathy_os/workflows/progressive/test_gen.py,sha256=wdpjx-Tlz-dWqOwHwoblbgEABr7EjTRV2faXMTad1M0,15759
|
|
348
|
+
empathy_os/workflows/progressive/workflow 2.py,sha256=bGXKmB9UFLfDw5c9MsW6Zw4GSbknCP-9HnaIEX36nhY,21597
|
|
339
349
|
empathy_os/workflows/progressive/workflow.py,sha256=FD3MzRSMV1n_c1S8jSlLLIrcewcus6Niyml6-EMdk_E,21146
|
|
340
350
|
empathy_software_plugin/SOFTWARE_PLUGIN_README.md,sha256=XjvK2TXoI5nsgEZqh4RQIAxBiGVpvbXihIu7zF8KNYk,1399
|
|
341
351
|
empathy_software_plugin/__init__.py,sha256=OceDhLoQrjD0jTPlI4418608l97OT48u4SCL5yEDPQc,309
|
|
@@ -343,12 +353,27 @@ empathy_software_plugin/cli.py,sha256=85AppXccTjp2LCpSxPAIezAAQKs_58t7vMY065o2ke
|
|
|
343
353
|
empathy_software_plugin/plugin.py,sha256=jjIrGOtitOUzmLqfsgML5lsGx7bXaI9WURgucPY7rb0,6676
|
|
344
354
|
empathy_software_plugin/cli/__init__.py,sha256=YM3lWC69nzp07a7_PoRZ3yqkh-109PzLpwWLacL0YZs,4233
|
|
345
355
|
empathy_software_plugin/cli/inspect.py,sha256=Z1f2bV0TtAUY0uODMjEmoM2zryAsM2mwQEAyRMlmhOE,9413
|
|
356
|
+
patterns/README.md,sha256=CiLt8ugjWGbWliQiHJ2Lkyc3OJurZt30aWS6iyl9Wks,4246
|
|
357
|
+
patterns/__init__.py,sha256=Nkf8_lN7bEyAaF4doY-86w9hzyugwdrA5SiZKnV3Olw,2761
|
|
358
|
+
patterns/behavior.py,sha256=_mdCbDA5mhM5pcls9zGAUBAvD89Iwj4382x44PpA3CM,8947
|
|
359
|
+
patterns/code_review_memory.json,sha256=emfMrXKpaA24yuaINnmZXu7sHq71Y96b68yw95mMawA,13909
|
|
360
|
+
patterns/core.py,sha256=qHuniDCS0JukS4I9o94LbJxRZ7c-89Vr8yafVknYBw8,2833
|
|
361
|
+
patterns/debugging.json,sha256=NgXYJnPAZgMphHbSsO7sljOyEIGicIWOHI_WoPTqpfc,109621
|
|
362
|
+
patterns/empathy.py,sha256=-xF3DZKnDwYbokjX7FqYRxe-TjjJCT3KmLgcGGFKoIM,7967
|
|
363
|
+
patterns/health_check_memory.json,sha256=_ysRZ_R4ermnkDkT0UFzQTp6v4BtW9aawbqnLlbL2i8,14804
|
|
364
|
+
patterns/input.py,sha256=VoigsEpzY6GGxkRQ4u9_akuxGTSbE6OPQVHplR2L4zk,4703
|
|
365
|
+
patterns/memory_graph.json,sha256=PX38SdyVUdm91T2D559AFERhAsIASbE8FVGCFC-IwUo,137
|
|
366
|
+
patterns/refactoring_memory.json,sha256=NAkU3Fjme8jCq-gpIJ1X3I5zDaaINix1u68RwQ7IxY4,40687
|
|
367
|
+
patterns/registry.py,sha256=xmD8xVaGAW2Y47DPC1VJ9D7apWi6eN26KZAmBfzYLfA,21284
|
|
368
|
+
patterns/security_memory.json,sha256=slkoSa4ej_7PD0rgWQsPb8KoqGZ_30QY_28spuLILpk,137
|
|
369
|
+
patterns/structural.py,sha256=i86Ebwr5VrvKXJrBnl5WBJW12hMfKbDIlL7e9pFTzRw,13229
|
|
370
|
+
patterns/validation.py,sha256=99DM7MaySa5OXO2O77rVCfcN6JGFsndfZAejYGVIyDk,6041
|
|
346
371
|
workflow_scaffolding/__init__.py,sha256=UpX5vjjjPjIaAKyIV1D4GxJzLUZy5DzdzgSkePYMES0,222
|
|
347
372
|
workflow_scaffolding/__main__.py,sha256=0qspuNoadTDqyskXTlT8Sahqau-XIxN35NHTSGVW6z4,236
|
|
348
373
|
workflow_scaffolding/cli.py,sha256=yLgvMsPbqI-LHt7UKXMuj-Dc0-44EqWiChldysrw1YQ,6763
|
|
349
374
|
workflow_scaffolding/generator.py,sha256=9eEmm324kVzf8BCtXEML090pyke06o0U7aGATzZIaPM,8869
|
|
350
|
-
empathy_framework-4.7.
|
|
351
|
-
empathy_framework-4.7.
|
|
352
|
-
empathy_framework-4.7.
|
|
353
|
-
empathy_framework-4.7.
|
|
354
|
-
empathy_framework-4.7.
|
|
375
|
+
empathy_framework-4.7.1.dist-info/METADATA,sha256=YZPAG8K3mK933pzqZmyU2OkAdDsJo0trbDG5UejJIZE,27097
|
|
376
|
+
empathy_framework-4.7.1.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
377
|
+
empathy_framework-4.7.1.dist-info/entry_points.txt,sha256=41rM9JgcKpkU8dr4VvPcbiPy2GQX68cEj10l3XMH0FQ,1519
|
|
378
|
+
empathy_framework-4.7.1.dist-info/top_level.txt,sha256=4IZRRG2MjbyiihC_KWhH7XReqNoKKd6MGr0uzklYmI0,111
|
|
379
|
+
empathy_framework-4.7.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"""VS Code Extension Bridge
|
|
2
|
+
|
|
3
|
+
Provides functions to write data that the VS Code extension can pick up.
|
|
4
|
+
Enables Claude Code CLI output to appear in VS Code webview panels.
|
|
5
|
+
|
|
6
|
+
Copyright 2026 Smart-AI-Memory
|
|
7
|
+
Licensed under Fair Source License 0.9
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
from dataclasses import asdict, dataclass
|
|
12
|
+
from datetime import datetime
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class ReviewFinding:
|
|
19
|
+
"""A code review finding."""
|
|
20
|
+
|
|
21
|
+
id: str
|
|
22
|
+
file: str
|
|
23
|
+
line: int
|
|
24
|
+
severity: str # 'critical' | 'high' | 'medium' | 'low' | 'info'
|
|
25
|
+
category: str # 'security' | 'performance' | 'maintainability' | 'style' | 'correctness'
|
|
26
|
+
message: str
|
|
27
|
+
column: int = 1
|
|
28
|
+
details: str | None = None
|
|
29
|
+
recommendation: str | None = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class CodeReviewResult:
|
|
34
|
+
"""Code review results for VS Code bridge."""
|
|
35
|
+
|
|
36
|
+
findings: list[dict[str, Any]]
|
|
37
|
+
summary: dict[str, Any]
|
|
38
|
+
verdict: str # 'approve' | 'approve_with_suggestions' | 'request_changes' | 'reject'
|
|
39
|
+
security_score: int
|
|
40
|
+
formatted_report: str
|
|
41
|
+
model_tier_used: str
|
|
42
|
+
timestamp: str
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def get_empathy_dir() -> Path:
|
|
46
|
+
"""Get the .empathy directory, creating if needed."""
|
|
47
|
+
empathy_dir = Path(".empathy")
|
|
48
|
+
empathy_dir.mkdir(exist_ok=True)
|
|
49
|
+
return empathy_dir
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def write_code_review_results(
|
|
53
|
+
findings: list[dict[str, Any]] | None = None,
|
|
54
|
+
summary: dict[str, Any] | None = None,
|
|
55
|
+
verdict: str = "approve_with_suggestions",
|
|
56
|
+
security_score: int = 85,
|
|
57
|
+
formatted_report: str = "",
|
|
58
|
+
model_tier_used: str = "capable",
|
|
59
|
+
) -> Path:
|
|
60
|
+
"""Write code review results for VS Code extension to pick up.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
findings: List of finding dicts with keys: id, file, line, severity, category, message
|
|
64
|
+
summary: Summary dict with keys: total_findings, by_severity, by_category, files_affected
|
|
65
|
+
verdict: One of 'approve', 'approve_with_suggestions', 'request_changes', 'reject'
|
|
66
|
+
security_score: 0-100 score
|
|
67
|
+
formatted_report: Markdown formatted report
|
|
68
|
+
model_tier_used: 'cheap', 'capable', or 'premium'
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Path to the written file
|
|
72
|
+
"""
|
|
73
|
+
findings = findings or []
|
|
74
|
+
|
|
75
|
+
# Build summary if not provided
|
|
76
|
+
if summary is None:
|
|
77
|
+
by_severity: dict[str, int] = {}
|
|
78
|
+
by_category: dict[str, int] = {}
|
|
79
|
+
files_affected: set[str] = set()
|
|
80
|
+
|
|
81
|
+
for f in findings:
|
|
82
|
+
sev = f.get("severity", "info")
|
|
83
|
+
cat = f.get("category", "correctness")
|
|
84
|
+
by_severity[sev] = by_severity.get(sev, 0) + 1
|
|
85
|
+
by_category[cat] = by_category.get(cat, 0) + 1
|
|
86
|
+
if f.get("file"):
|
|
87
|
+
files_affected.add(f["file"])
|
|
88
|
+
|
|
89
|
+
summary = {
|
|
90
|
+
"total_findings": len(findings),
|
|
91
|
+
"by_severity": by_severity,
|
|
92
|
+
"by_category": by_category,
|
|
93
|
+
"files_affected": list(files_affected),
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
result = CodeReviewResult(
|
|
97
|
+
findings=findings,
|
|
98
|
+
summary=summary,
|
|
99
|
+
verdict=verdict,
|
|
100
|
+
security_score=security_score,
|
|
101
|
+
formatted_report=formatted_report,
|
|
102
|
+
model_tier_used=model_tier_used,
|
|
103
|
+
timestamp=datetime.now().isoformat(),
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
output_path = get_empathy_dir() / "code-review-results.json"
|
|
107
|
+
|
|
108
|
+
with open(output_path, "w") as f:
|
|
109
|
+
json.dump(asdict(result), f, indent=2)
|
|
110
|
+
|
|
111
|
+
return output_path
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def write_pr_review_results(
|
|
115
|
+
pr_number: int | str,
|
|
116
|
+
title: str,
|
|
117
|
+
findings: list[dict[str, Any]],
|
|
118
|
+
verdict: str = "approve_with_suggestions",
|
|
119
|
+
summary_text: str = "",
|
|
120
|
+
) -> Path:
|
|
121
|
+
"""Write PR review results for VS Code extension.
|
|
122
|
+
|
|
123
|
+
Convenience wrapper for PR reviews from GitHub.
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
pr_number: The PR number
|
|
127
|
+
title: PR title
|
|
128
|
+
findings: List of review findings
|
|
129
|
+
verdict: Review verdict
|
|
130
|
+
summary_text: Summary of the review
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Path to the written file
|
|
134
|
+
"""
|
|
135
|
+
formatted_report = f"""## PR #{pr_number}: {title}
|
|
136
|
+
|
|
137
|
+
{summary_text}
|
|
138
|
+
|
|
139
|
+
### Findings ({len(findings)})
|
|
140
|
+
|
|
141
|
+
"""
|
|
142
|
+
for f in findings:
|
|
143
|
+
formatted_report += f"- **{f.get('severity', 'info').upper()}** [{f.get('file', 'unknown')}:{f.get('line', 0)}]: {f.get('message', '')}\n"
|
|
144
|
+
|
|
145
|
+
return write_code_review_results(
|
|
146
|
+
findings=findings,
|
|
147
|
+
verdict=verdict,
|
|
148
|
+
formatted_report=formatted_report,
|
|
149
|
+
model_tier_used="capable",
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Quick helper for Claude Code to call
|
|
154
|
+
def send_to_vscode(
|
|
155
|
+
message: str,
|
|
156
|
+
findings: list[dict[str, Any]] | None = None,
|
|
157
|
+
verdict: str = "approve_with_suggestions",
|
|
158
|
+
) -> str:
|
|
159
|
+
"""Quick helper to send review results to VS Code.
|
|
160
|
+
|
|
161
|
+
Usage in Claude Code:
|
|
162
|
+
from empathy_os.vscode_bridge import send_to_vscode
|
|
163
|
+
send_to_vscode("Review complete", findings=[...])
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Confirmation message
|
|
167
|
+
"""
|
|
168
|
+
path = write_code_review_results(
|
|
169
|
+
findings=findings or [],
|
|
170
|
+
formatted_report=message,
|
|
171
|
+
verdict=verdict,
|
|
172
|
+
)
|
|
173
|
+
return f"Results written to {path} - VS Code will update automatically"
|