empathy-framework 3.5.5__py3-none-any.whl → 3.5.6__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: empathy-framework
3
- Version: 3.5.5
3
+ Version: 3.5.6
4
4
  Summary: AI collaboration framework with persistent memory, anticipatory intelligence, code inspection, and multi-agent orchestration
5
5
  Author-email: Patrick Roebuck <patrick.roebuck@smartAImemory.com>
6
6
  Maintainer-email: Smart-AI-Memory <patrick.roebuck@smartAImemory.com>
@@ -32,7 +32,7 @@ coach_wizards/refactoring_wizard.py,sha256=1AuRyX45KI63n_-fvvbRXamqvPbrB-O1B7TPP
32
32
  coach_wizards/scaling_wizard.py,sha256=yLULCkflLoBKS4hOSBPQuKKGBGHgKExnuEp5WLTIY-8,2596
33
33
  coach_wizards/security_wizard.py,sha256=tr1iq0egAMLCM-wOFhTDN5dHQRFuhSshXSkv17Jm7eM,2603
34
34
  coach_wizards/testing_wizard.py,sha256=M2RtaTa1WHsk42svJAEZpLySU3PXJJZn2jigouMJrG0,2561
35
- empathy_framework-3.5.5.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
35
+ empathy_framework-3.5.6.dist-info/licenses/LICENSE,sha256=IJ9eeI5KSrD5P7alsn7sI_6_1bDihxBA5S4Sen4jf2k,4937
36
36
  empathy_healthcare_plugin/__init__.py,sha256=FvVcD7WQTlmCCLgSPfM-FPT2l-ma1oAACBZWhtYFAUA,296
37
37
  empathy_healthcare_plugin/protocols/cardiac.json,sha256=uShOvI2RQJYLZacLT2R_aHfsjvJdyCu_gYfpMfK3N74,2088
38
38
  empathy_healthcare_plugin/protocols/post_operative.json,sha256=nqh3ydPY8FNSLv-Q3QmH8Dsyc1c4LvQxUSP84B8W6xk,2021
@@ -53,7 +53,7 @@ empathy_llm_toolkit/providers.py,sha256=vfN5u_9e4BVUj8hR4HSZTGOLPfiH4k7ffk_Q7Zqf
53
53
  empathy_llm_toolkit/session_status.py,sha256=pJwqHwbVwR2Q6coRkB_34CWRCMoF-r4-YBtQWEO1Mj8,25724
54
54
  empathy_llm_toolkit/state.py,sha256=oi8bPqUHkmfgkfT4_4eD1ndIGH_THyLQDYlIWZLUx5s,8051
55
55
  empathy_os/__init__.py,sha256=pvaca4oCfdL4MG5WO-RKJeXBOk0oj02Mhh_E0h7zSyY,5896
56
- empathy_os/cli.py,sha256=HJnUStMucrNmMoWfyi_HxidB56Dt-DEMZVzvs2Y50rc,91357
56
+ empathy_os/cli.py,sha256=BKZHQeOLcocO6FIHn5wgnEK84KY4APlGulWwL2tpKOE,93218
57
57
  empathy_os/cli_unified.py,sha256=YLNjgZRaeaJn72_4vUpkDK9g70as0upfyDQTmcC7aeY,14029
58
58
  empathy_os/config.py,sha256=itgEYHR3QOxtjObHqnYGoQ48863Mf16UoGPyc_l8gNE,14803
59
59
  empathy_os/coordination.py,sha256=0jKt2DzzJmFjpXJs4pMXBcUktCFHsa9i3rkXzXxykGk,28656
@@ -74,7 +74,7 @@ empathy_os/redis_config.py,sha256=sX7EAXxRd8pL3r1E-Oa5yke_j-wYIQ1PI9jzaNZjlrs,97
74
74
  empathy_os/redis_memory.py,sha256=lWS_F4FeDkmEI-jIgkPTzs3D8TTDB0627WsOxYMT-XM,23276
75
75
  empathy_os/templates.py,sha256=ap4u9i5O9KA83wWLfoUCS7phDHKb6wj8M1Zcm218lN0,17069
76
76
  empathy_os/trust_building.py,sha256=8ZvNwJmeDyKeUIkk_331M9jwKcqrsn6K43gnGtnIXbM,18790
77
- empathy_os/workflow_commands.py,sha256=ZfACBQKjaAfEZER4yRRsFVw9IfGhhPVGwQyBjD1HUAk,21904
77
+ empathy_os/workflow_commands.py,sha256=Kqyr8ICTsx4S-_ThXB52SYzH1mYFsHGVDYiG2KgkQGo,21904
78
78
  empathy_software_plugin/SOFTWARE_PLUGIN_README.md,sha256=RXIOB9Mt-8JrfGAA3ZUuRPT34sThubrwUgg5iNcSKIc,22591
79
79
  empathy_software_plugin/__init__.py,sha256=Ylyj95pSsoN9Zasam96DH61uBHoMJh3kbhO7k_VaCWo,310
80
80
  empathy_software_plugin/cli.py,sha256=GrZWpnFJ9allM9sYrh8rSxSlVDU6RZVnEy4FYg-dSG8,22366
@@ -96,8 +96,8 @@ wizards/sbar_wizard.py,sha256=CJ63JAXwcfBf6C3aYyxY2LODbARP9GPl0ZGJWLbx88E,21790
96
96
  wizards/shift_handoff_wizard.py,sha256=SkoNB0nLQGg92yz4j1j3NBR2mGVe_rw1pTjOFDy-JH0,19092
97
97
  wizards/soap_note_wizard.py,sha256=DBzuuuOvIONhwdfn8jaE4PCuGeKsFwM65XTb6gKFIy4,23572
98
98
  wizards/treatment_plan.py,sha256=t2Qk5eCa1gobEUaBztnwem_p9OuJK5BKqJ-Po8vXuns,512
99
- empathy_framework-3.5.5.dist-info/METADATA,sha256=u8peL5MpGmVeeTzD6Nkgl8dkAOGk1U4nndF_qybQ7mY,30238
100
- empathy_framework-3.5.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
101
- empathy_framework-3.5.5.dist-info/entry_points.txt,sha256=zMu7sKCiLndbEEXjTecltS-1P_JZoEUKrifuRBBbroc,1268
102
- empathy_framework-3.5.5.dist-info/top_level.txt,sha256=8zHB-_f0MI2K55LIEjCeaFNcog3_KgLBa_dDfzE8ESI,110
103
- empathy_framework-3.5.5.dist-info/RECORD,,
99
+ empathy_framework-3.5.6.dist-info/METADATA,sha256=Ay9yi3cPZaMwrSBVgh8V8syC3YzRy8mF76AEQcEBrVw,30238
100
+ empathy_framework-3.5.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
101
+ empathy_framework-3.5.6.dist-info/entry_points.txt,sha256=zMu7sKCiLndbEEXjTecltS-1P_JZoEUKrifuRBBbroc,1268
102
+ empathy_framework-3.5.6.dist-info/top_level.txt,sha256=8zHB-_f0MI2K55LIEjCeaFNcog3_KgLBa_dDfzE8ESI,110
103
+ empathy_framework-3.5.6.dist-info/RECORD,,
empathy_os/cli.py CHANGED
@@ -1874,8 +1874,17 @@ def cmd_workflow(args):
1874
1874
  if args.input:
1875
1875
  input_data = json_mod.loads(args.input)
1876
1876
 
1877
- print(f"\n Running workflow: {name} (provider: {provider})")
1878
- print("=" * 50)
1877
+ # Add test-gen specific flags to input_data (only for test-gen workflow)
1878
+ if name == "test-gen":
1879
+ if getattr(args, "write_tests", False):
1880
+ input_data["write_tests"] = True
1881
+ if getattr(args, "output_dir", None):
1882
+ input_data["output_dir"] = args.output_dir
1883
+
1884
+ # Only print header when not in JSON mode
1885
+ if not args.json:
1886
+ print(f"\n Running workflow: {name} (provider: {provider})")
1887
+ print("=" * 50)
1879
1888
 
1880
1889
  # Execute workflow
1881
1890
  result = asyncio.run(workflow.execute(**input_data))
@@ -1920,9 +1929,29 @@ def cmd_workflow(args):
1920
1929
  error = metadata.get("error") if isinstance(metadata, dict) else None
1921
1930
 
1922
1931
  # JSON output includes both content and metadata
1932
+ # Include final_output for programmatic access (VSCode panels, etc.)
1933
+ raw_final_output = getattr(result, "final_output", None)
1934
+ if raw_final_output and isinstance(raw_final_output, dict):
1935
+ # Make a copy to avoid modifying the original
1936
+ final_output_serializable = {}
1937
+ for k, v in raw_final_output.items():
1938
+ # Skip non-serializable items
1939
+ if isinstance(v, set):
1940
+ final_output_serializable[k] = list(v)
1941
+ elif v is None or isinstance(v, str | int | float | bool | list | dict):
1942
+ final_output_serializable[k] = v
1943
+ else:
1944
+ try:
1945
+ final_output_serializable[k] = str(v)
1946
+ except Exception:
1947
+ pass
1948
+ else:
1949
+ final_output_serializable = None
1950
+
1923
1951
  output = {
1924
1952
  "success": result.success,
1925
1953
  "output": output_content,
1954
+ "final_output": final_output_serializable,
1926
1955
  "cost": total_cost,
1927
1956
  "savings": savings,
1928
1957
  "duration_ms": duration_ms or 0,
@@ -2476,6 +2505,16 @@ def main():
2476
2505
  help="Force overwrite existing config file",
2477
2506
  )
2478
2507
  parser_workflow.add_argument("--json", action="store_true", help="Output as JSON")
2508
+ parser_workflow.add_argument(
2509
+ "--write-tests",
2510
+ action="store_true",
2511
+ help="(test-gen workflow) Write generated tests to disk",
2512
+ )
2513
+ parser_workflow.add_argument(
2514
+ "--output-dir",
2515
+ default="tests/generated",
2516
+ help="(test-gen workflow) Output directory for generated tests",
2517
+ )
2479
2518
  parser_workflow.set_defaults(func=cmd_workflow)
2480
2519
 
2481
2520
  # Sync-claude command (sync patterns to Claude Code)
@@ -347,8 +347,8 @@ def ship_workflow(
347
347
  # Import here to avoid circular imports
348
348
  try:
349
349
  from empathy_llm_toolkit.cli.sync_claude import (
350
- sync_patterns_to_claude, # type: ignore[attr-defined]
351
- )
350
+ sync_patterns_to_claude,
351
+ ) # type: ignore[attr-defined]
352
352
 
353
353
  result = sync_patterns_to_claude(
354
354
  patterns_dir=patterns_dir, output_dir=".claude/rules/empathy"