Spaces:
Paused
Paused
Download acp_adapter/entry.py from abc1181/HermesAgent: direct link, hf CLI and curl.
- Browser
- Download file 2.43 kB
-
https://huggingface.co/spaces/abc1181/HermesAgent/resolve/main/acp_adapter/entry.py
- Command line
-
hf download hf://spaces/abc1181/HermesAgent/acp_adapter/entry.py
-
curl -L -o entry.py https://huggingface.co/spaces/abc1181/HermesAgent/resolve/main/acp_adapter/entry.py
2.43 kB
| """CLI entry point for the hermes-agent ACP adapter. | |
| Loads environment variables from ``~/.hermes/.env``, configures logging | |
| to write to stderr (so stdout is reserved for ACP JSON-RPC transport), | |
| and starts the ACP agent server. | |
| Usage:: | |
| python -m acp_adapter.entry | |
| # or | |
| hermes acp | |
| # or | |
| hermes-acp | |
| """ | |
| import asyncio | |
| import logging | |
| import sys | |
| from pathlib import Path | |
| from hermes_constants import get_hermes_home | |
| def _setup_logging() -> None: | |
| """Route all logging to stderr so stdout stays clean for ACP stdio.""" | |
| handler = logging.StreamHandler(sys.stderr) | |
| handler.setFormatter( | |
| logging.Formatter( | |
| "%(asctime)s [%(levelname)s] %(name)s: %(message)s", | |
| datefmt="%Y-%m-%d %H:%M:%S", | |
| ) | |
| ) | |
| root = logging.getLogger() | |
| root.handlers.clear() | |
| root.addHandler(handler) | |
| root.setLevel(logging.INFO) | |
| # Quiet down noisy libraries | |
| logging.getLogger("httpx").setLevel(logging.WARNING) | |
| logging.getLogger("httpcore").setLevel(logging.WARNING) | |
| logging.getLogger("openai").setLevel(logging.WARNING) | |
| def _load_env() -> None: | |
| """Load .env from HERMES_HOME (default ``~/.hermes``).""" | |
| from hermes_cli.env_loader import load_hermes_dotenv | |
| hermes_home = get_hermes_home() | |
| loaded = load_hermes_dotenv(hermes_home=hermes_home) | |
| if loaded: | |
| for env_file in loaded: | |
| logging.getLogger(__name__).info("Loaded env from %s", env_file) | |
| else: | |
| logging.getLogger(__name__).info( | |
| "No .env found at %s, using system env", hermes_home / ".env" | |
| ) | |
| def main() -> None: | |
| """Entry point: load env, configure logging, run the ACP agent.""" | |
| _setup_logging() | |
| _load_env() | |
| logger = logging.getLogger(__name__) | |
| logger.info("Starting hermes-agent ACP adapter") | |
| # Ensure the project root is on sys.path so ``from run_agent import AIAgent`` works | |
| project_root = str(Path(__file__).resolve().parent.parent) | |
| if project_root not in sys.path: | |
| sys.path.insert(0, project_root) | |
| import acp | |
| from .server import HermesACPAgent | |
| agent = HermesACPAgent() | |
| try: | |
| asyncio.run(acp.run_agent(agent, use_unstable_protocol=True)) | |
| except KeyboardInterrupt: | |
| logger.info("Shutting down (KeyboardInterrupt)") | |
| except Exception: | |
| logger.exception("ACP agent crashed") | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| main() | |