ptyprocess depends on Unix-only APIs (fork, openpty) and cannot work on Windows at all. pywinpty provides a compatible PtyProcess interface using the Windows ConPTY API. This conditionally imports winpty.PtyProcess on Windows and ptyprocess.PtyProcess on Unix. The pyproject.toml pty extra now uses platform markers so the correct package is installed automatically.
85 lines
2.2 KiB
TOML
85 lines
2.2 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "hermes-agent"
|
|
version = "0.1.0"
|
|
description = "AI agent with advanced tool-calling and toolsets"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
authors = [{ name = "Nous Research" }]
|
|
license = { text = "MIT" }
|
|
dependencies = [
|
|
# Core
|
|
"openai",
|
|
"python-dotenv",
|
|
"fire",
|
|
"httpx",
|
|
"rich",
|
|
"tenacity",
|
|
"pyyaml",
|
|
"requests",
|
|
"jinja2",
|
|
"pydantic>=2.0",
|
|
# Interactive CLI (prompt_toolkit is used directly by cli.py)
|
|
"prompt_toolkit",
|
|
# Tools
|
|
"firecrawl-py",
|
|
"fal-client",
|
|
# Text-to-speech (Edge TTS is free, no API key needed)
|
|
"edge-tts",
|
|
# mini-swe-agent deps (terminal tool)
|
|
"litellm>=1.75.5",
|
|
"typer",
|
|
"platformdirs",
|
|
# Skills Hub (GitHub App JWT auth — optional, only needed for bot identity)
|
|
"PyJWT[crypto]",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
modal = ["swe-rex[modal]>=1.4.0"]
|
|
dev = ["pytest", "pytest-asyncio"]
|
|
messaging = ["python-telegram-bot>=20.0", "discord.py>=2.0", "aiohttp>=3.9.0", "slack-bolt>=1.18.0", "slack-sdk>=3.27.0"]
|
|
cron = ["croniter"]
|
|
slack = ["slack-bolt>=1.18.0", "slack-sdk>=3.27.0"]
|
|
cli = ["simple-term-menu"]
|
|
tts-premium = ["elevenlabs"]
|
|
pty = [
|
|
"ptyprocess>=0.7.0; sys_platform != 'win32'",
|
|
"pywinpty>=2.0.0; sys_platform == 'win32'",
|
|
]
|
|
honcho = ["honcho-ai>=2.0.1"]
|
|
mcp = ["mcp>=1.2.0"]
|
|
homeassistant = ["aiohttp>=3.9.0"]
|
|
all = [
|
|
"hermes-agent[modal]",
|
|
"hermes-agent[messaging]",
|
|
"hermes-agent[cron]",
|
|
"hermes-agent[cli]",
|
|
"hermes-agent[dev]",
|
|
"hermes-agent[tts-premium]",
|
|
"hermes-agent[slack]",
|
|
"hermes-agent[pty]",
|
|
"hermes-agent[honcho]",
|
|
"hermes-agent[mcp]",
|
|
"hermes-agent[homeassistant]",
|
|
]
|
|
|
|
[project.scripts]
|
|
hermes = "hermes_cli.main:main"
|
|
hermes-agent = "run_agent:main"
|
|
|
|
[tool.setuptools]
|
|
py-modules = ["run_agent", "model_tools", "toolsets", "batch_runner", "trajectory_compressor", "toolset_distributions", "cli", "hermes_constants"]
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["tools", "hermes_cli", "gateway", "cron", "honcho_integration"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
markers = [
|
|
"integration: marks tests requiring external services (API keys, Modal, etc.)",
|
|
]
|
|
addopts = "-m 'not integration'"
|