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.
Files changed (32) hide show
  1. empathy_framework-4.7.1.dist-info/METADATA +690 -0
  2. {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/RECORD +31 -6
  3. {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/top_level.txt +1 -0
  4. empathy_os/vscode_bridge 2.py +173 -0
  5. empathy_os/workflows/progressive/README 2.md +454 -0
  6. empathy_os/workflows/progressive/__init__ 2.py +92 -0
  7. empathy_os/workflows/progressive/cli 2.py +242 -0
  8. empathy_os/workflows/progressive/core 2.py +488 -0
  9. empathy_os/workflows/progressive/orchestrator 2.py +701 -0
  10. empathy_os/workflows/progressive/reports 2.py +528 -0
  11. empathy_os/workflows/progressive/telemetry 2.py +280 -0
  12. empathy_os/workflows/progressive/test_gen 2.py +514 -0
  13. empathy_os/workflows/progressive/workflow 2.py +628 -0
  14. patterns/README.md +119 -0
  15. patterns/__init__.py +95 -0
  16. patterns/behavior.py +298 -0
  17. patterns/code_review_memory.json +441 -0
  18. patterns/core.py +97 -0
  19. patterns/debugging.json +3763 -0
  20. patterns/empathy.py +268 -0
  21. patterns/health_check_memory.json +505 -0
  22. patterns/input.py +161 -0
  23. patterns/memory_graph.json +8 -0
  24. patterns/refactoring_memory.json +1113 -0
  25. patterns/registry.py +663 -0
  26. patterns/security_memory.json +8 -0
  27. patterns/structural.py +415 -0
  28. patterns/validation.py +194 -0
  29. empathy_framework-4.7.0.dist-info/METADATA +0 -1598
  30. {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/WHEEL +0 -0
  31. {empathy_framework-4.7.0.dist-info → empathy_framework-4.7.1.dist-info}/entry_points.txt +0 -0
  32. {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.0.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
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.0.dist-info/METADATA,sha256=lJBZz8duv0yCTxhIX39lVeqgnjrwjm9T-v733NV0c_s,62774
351
- empathy_framework-4.7.0.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
352
- empathy_framework-4.7.0.dist-info/entry_points.txt,sha256=41rM9JgcKpkU8dr4VvPcbiPy2GQX68cEj10l3XMH0FQ,1519
353
- empathy_framework-4.7.0.dist-info/top_level.txt,sha256=YJNBYFE2u5f2XnveFqYO-rZDcHR_aMOHAiIIf9tl72c,102
354
- empathy_framework-4.7.0.dist-info/RECORD,,
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,,
@@ -2,4 +2,5 @@ empathy_healthcare_plugin
2
2
  empathy_llm_toolkit
3
3
  empathy_os
4
4
  empathy_software_plugin
5
+ patterns
5
6
  workflow_scaffolding
@@ -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"