Download hermes_cli/__init__.py from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 1.84 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/hermes_cli/__init__.py
- Command line
-
hf download hf://SaylorTwift/hermes-agent/hermes_cli/__init__.py
-
curl -L -o __init__.py https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/hermes_cli/__init__.py
1.84 kB
| """Hermes CLI - Unified command-line interface for Hermes Agent.""" | |
| import os | |
| import sys | |
| __version__ = "0.21.3" | |
| __release_date__ = "2026.9.14" | |
| def _ensure_utf8(): | |
| """Force UTF-8 stdout/stderr to prevent UnicodeEncodeError crashes. | |
| The CLI prints box-drawing characters and the ☤ glyph in the setup wizard, doctor, and status | |
| banners; under a non-UTF-8 codec that raises before the command can even start (e.g. | |
| `hermes setup` on a fresh Pi). | |
| """ | |
| repaired = False | |
| for stream_name in ("stdout", "stderr"): | |
| stream = getattr(sys, stream_name, None) | |
| if stream is None: | |
| continue | |
| try: | |
| if (getattr(stream, "encoding", "") or "").lower().replace("-", "") == "utf8": | |
| continue | |
| # Preferred: reconfigure in place, preserving object identity so code already holding | |
| # a reference to the old sys.stdout benefits from the repair too. | |
| reconfigure = getattr(stream, "reconfigure", None) | |
| if callable(reconfigure): | |
| reconfigure(encoding="utf-8", errors="replace") | |
| else: | |
| # No reconfigure(): reopen the fd as UTF-8 (closefd=False keeps the original fd open). | |
| new_stream = open(stream.fileno(), "w", encoding="utf-8", errors="replace", | |
| buffering=1, closefd=False) | |
| setattr(sys, stream_name, new_stream) | |
| repaired = True | |
| except (AttributeError, OSError, ValueError): | |
| pass | |
| # Only nudge child processes toward UTF-8 when a non-UTF-8 locale was actually detected; on a | |
| # healthy UTF-8 host children inherit it from the locale already. | |
| if repaired: | |
| os.environ.setdefault("PYTHONUTF8", "1") | |
| os.environ.setdefault("PYTHONIOENCODING", "utf-8") | |
| _ensure_utf8() | |