Skip to content

fix: avoid false Web UI build failures on Windows GBK locales#23647

Closed
VinceZcrikl wants to merge 1 commit into
NousResearch:mainfrom
VinceZcrikl:fix/web-ui-build-windows-utf8
Closed

fix: avoid false Web UI build failures on Windows GBK locales#23647
VinceZcrikl wants to merge 1 commit into
NousResearch:mainfrom
VinceZcrikl:fix/web-ui-build-windows-utf8

Conversation

@VinceZcrikl

Copy link
Copy Markdown

Summary

  • force npm install/npm ci subprocess output to decode as UTF-8 with replacement semantics
  • force the Web UI npm run build subprocess output to use the same decoding strategy
  • add regression coverage for both subprocess paths so Windows locale-dependent decoding does not regress

Problem

On Windows systems configured with a Chinese GBK locale, hermes update could incorrectly report that the Web UI build failed even when the frontend build itself actually succeeded.

The observed failure mode was:

  • the update flow printed a background Python traceback from a subprocess reader thread
  • the traceback showed UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 ...
  • Hermes then continued and eventually printed Web UI build failed (hermes web will not be available)

This was misleading because running npm run build manually in web/ still succeeded.

Root cause

The update path captures npm output through Python subprocess APIs. On affected Windows environments, that captured output was being decoded with the process locale instead of a fixed encoding. When npm emitted bytes that are valid in UTF-8 output but invalid under GBK decoding, Python raised UnicodeDecodeError inside the background reader thread. That decoding failure then caused Hermes to treat the Web UI build path as failed even though the underlying npm command completed successfully.

Fix

This patch makes the relevant npm subprocess calls explicit and locale-independent by setting:

  • text=True
  • encoding="utf-8"
  • errors="replace"

The change is applied to:

  1. the deterministic npm dependency installation helper (npm ci / npm install)
  2. the Web UI build step (npm run build)

Using UTF-8 matches npm's expected output in this workflow, and errors="replace" ensures unexpected bytes do not crash output collection.

Validation

I verified the fix with the following checks:

  • ./venv/Scripts/python.exe -m pytest tests/hermes_cli/test_web_ui_build.py -q -o addopts=13 passed
  • direct invocation of the Hermes Web UI build helper returned success
  • npm run build in web/ still completed successfully

Why this approach

This is a narrow, low-risk fix:

  • it changes only the npm subprocess calls involved in the failing path
  • it avoids depending on the host locale, terminal encoding, or global environment variables
  • it preserves existing behavior while preventing false build failures on Windows

@VinceZcrikl

Copy link
Copy Markdown
Author

Adding context in case this looks adjacent to #13368: this PR is intended to address a different Windows failure mode.

#13368 focuses on:

  • cross-platform sync-assets behavior for the Web UI build
  • surfacing captured stdout/stderr when build steps fail
  • console output safety on non-UTF-8 Windows terminals

This PR focuses specifically on the subprocess decoding path during hermes update on Windows systems using a Chinese GBK locale.

In the failure I reproduced, npm run build still succeeds when run directly, but Hermes can misreport the Web UI build as failed because Python decodes captured npm output with the process locale inside the subprocess reader thread and raises:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 ...

The change here makes the relevant npm subprocess calls explicit and locale-independent by setting UTF-8 decoding with replacement semantics for captured output. So this PR is meant to prevent a false-negative build result caused by output decoding, rather than fixing the separate shell / asset-sync / console-printing issues covered by #13368.

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard javascript Pull requests that update javascript code labels May 11, 2026
@VinceZcrikl

Copy link
Copy Markdown
Author

hermes update
⚕ Updating Hermes Agent...

→ Fetching updates...
→ Found 45 new commit(s)
✓ Pre-update snapshot: 20260510-215555-pre-update
→ Pulling updates...
✓ Cleared 47 stale pycache directories
→ Updating Python dependencies...
WARNING: Ignoring invalid distribution ~ (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
WARNING: Ignoring invalid distribution ermes-agent (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
Obtaining file:///C:/Users/zhaow/AppData/Local/hermes/hermes-agent
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Preparing editable metadata (pyproject.toml) ... done
Requirement already satisfied: openai<3,>=2.21.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.36.0)
Requirement already satisfied: anthropic<1,>=0.39.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.100.0)
Requirement already satisfied: python-dotenv<2,>=1.2.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.2.2)
Requirement already satisfied: fire<1,>=0.7.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.7.1)
Requirement already satisfied: httpx<1,>=0.28.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from httpx[socks]<1,>=0.28.1->hermes-agent==0.13.0) (0.28.1)
Requirement already satisfied: rich<15,>=14.3.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (14.3.4)
Requirement already satisfied: tenacity<10,>=9.1.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (9.1.4)
Requirement already satisfied: pyyaml<7,>=6.0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (6.0.3)
Requirement already satisfied: ruamel.yaml<0.19,>=0.18.16 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.18.17)
Requirement already satisfied: requests<3,>=2.33.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.33.1)
Requirement already satisfied: jinja2<4,>=3.1.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (3.1.6)
Requirement already satisfied: pydantic<3,>=2.12.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.13.4)
Requirement already satisfied: prompt_toolkit<4,>=3.0.52 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (3.0.52)
Requirement already satisfied: exa-py<3,>=2.9.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.12.1)
Requirement already satisfied: firecrawl-py<5,>=4.16.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (4.25.2)
Requirement already satisfied: parallel-web<1,>=0.4.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.6.0)
Requirement already satisfied: fal-client<1,>=0.13.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.14.1)
Requirement already satisfied: croniter<7,>=6.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (6.2.2)
Requirement already satisfied: edge-tts<8,>=7.2.7 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (7.2.8)
Requirement already satisfied: PyJWT<3,>=2.12.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from PyJWT[crypto]<3,>=2.12.0->hermes-agent==0.13.0) (2.12.1)
Requirement already satisfied: tzdata>=2023.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2026.2)
Requirement already satisfied: psutil<8,>=5.9.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (7.2.2)
Requirement already satisfied: anyio<5,>=3.5.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (4.13.0)
Requirement already satisfied: distro<2,>=1.7.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (1.9.0)
Requirement already satisfied: docstring-parser<1,>=0.15 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (0.18.0)
Requirement already satisfied: jiter<1,>=0.4.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (0.14.0)
Requirement already satisfied: sniffio in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (1.3.1)
Requirement already satisfied: typing-extensions<5,>=4.14 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from anthropic<1,>=0.39.0->hermes-agent==0.13.0) (4.15.0)
Requirement already satisfied: python-dateutil in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from croniter<7,>=6.0.0->hermes-agent==0.13.0) (2.9.0.post0)
Requirement already satisfied: aiohttp<4.0.0,>=3.8.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (3.13.5)
Requirement already satisfied: certifi>=2023.11.17 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (2026.4.22)
Requirement already satisfied: tabulate<1.0.0,>=0.4.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (0.10.0)
Requirement already satisfied: httpcore>=1.0.9 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from exa-py<3,>=2.9.0->hermes-agent==0.13.0) (1.0.9)
Requirement already satisfied: httpx-sse<0.5,>=0.4.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fal-client<1,>=0.13.1->hermes-agent==0.13.0) (0.4.3)
Requirement already satisfied: msgpack<2,>=1.0.7 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fal-client<1,>=0.13.1->hermes-agent==0.13.0) (1.1.2)
Requirement already satisfied: websockets>=12.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fal-client<1,>=0.13.1->hermes-agent==0.13.0) (15.0.1)
Requirement already satisfied: termcolor in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fire<1,>=0.7.1->hermes-agent==0.13.0) (3.3.0)
Requirement already satisfied: nest-asyncio in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from firecrawl-py<5,>=4.16.0->hermes-agent==0.13.0) (1.6.0)
Requirement already satisfied: idna in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from httpx<1,>=0.28.1->httpx[socks]<1,>=0.28.1->hermes-agent==0.13.0) (3.13)
Requirement already satisfied: h11>=0.16 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from httpcore>=1.0.9->exa-py<3,>=2.9.0->hermes-agent==0.13.0) (0.16.0)
Requirement already satisfied: socksio==1.* in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from httpx[socks]<1,>=0.28.1->hermes-agent==0.13.0) (1.0.0)
Requirement already satisfied: MarkupSafe>=2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from jinja2<4,>=3.1.5->hermes-agent==0.13.0) (3.0.3)
Requirement already satisfied: tqdm>4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from openai<3,>=2.21.0->hermes-agent==0.13.0) (4.67.3)
Requirement already satisfied: wcwidth in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from prompt_toolkit<4,>=3.0.52->hermes-agent==0.13.0) (0.7.0)
Requirement already satisfied: annotated-types>=0.6.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pydantic<3,>=2.12.5->hermes-agent==0.13.0) (0.7.0)
Requirement already satisfied: pydantic-core==2.46.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pydantic<3,>=2.12.5->hermes-agent==0.13.0) (2.46.4)
Requirement already satisfied: typing-inspection>=0.4.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pydantic<3,>=2.12.5->hermes-agent==0.13.0) (0.4.2)
Requirement already satisfied: cryptography>=3.4.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from PyJWT[crypto]<3,>=2.12.0->hermes-agent==0.13.0) (46.0.7)
Requirement already satisfied: charset_normalizer<4,>=2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from requests<3,>=2.33.0->hermes-agent==0.13.0) (3.4.7)
Requirement already satisfied: urllib3<3,>=1.26 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from requests<3,>=2.33.0->hermes-agent==0.13.0) (2.7.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from rich<15,>=14.3.3->hermes-agent==0.13.0) (4.2.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from rich<15,>=14.3.3->hermes-agent==0.13.0) (2.20.0)
Requirement already satisfied: ruamel.yaml.clib>=0.2.15 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from ruamel.yaml<0.19,>=0.18.16->hermes-agent==0.13.0) (0.2.15)
Requirement already satisfied: agent-client-protocol<1.0,>=0.9.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.10.0)
Requirement already satisfied: boto3<2,>=1.35.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.43.6)
Requirement already satisfied: simple-term-menu<2,>=1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.6.6)
Requirement already satisfied: daytona<1,>=0.148.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.173.0)
Requirement already satisfied: debugpy<2,>=1.8.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.8.20)
Requirement already satisfied: pytest<10,>=9.0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (9.0.3)
Requirement already satisfied: pytest-asyncio<2,>=1.3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.3.0)
Requirement already satisfied: pytest-xdist<4,>=3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (3.8.0)
Requirement already satisfied: pytest-split<1,>=0.9 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.11.0)
Requirement already satisfied: mcp<2,>=1.2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.27.1)
Requirement already satisfied: ty<0.0.22,>=0.0.1a29 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.0.21)
Requirement already satisfied: ruff in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.15.12)
Requirement already satisfied: dingtalk-stream<1,>=0.20 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.24.3)
Requirement already satisfied: alibabacloud-dingtalk>=2.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.2.45)
Requirement already satisfied: qrcode<8,>=7.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (7.4.2)
Requirement already satisfied: lark-oapi<2,>=1.5.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.6.2)
Requirement already satisfied: google-api-python-client<3,>=2.100 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.196.0)
Requirement already satisfied: google-auth-oauthlib<2,>=1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.4.0)
Requirement already satisfied: google-auth-httplib2<1,>=0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.4.0)
Requirement already satisfied: honcho-ai<3,>=2.0.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.1.1)
Requirement already satisfied: python-telegram-bot<23,>=22.6 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from python-telegram-bot[webhooks]<23,>=22.6; extra == "messaging"->hermes-agent==0.13.0) (22.7)
Requirement already satisfied: discord.py<3,>=2.7.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from discord.py[voice]<3,>=2.7.1; extra == "messaging"->hermes-agent==0.13.0) (2.7.1)
Requirement already satisfied: slack-bolt<2,>=1.18.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.28.0)
Requirement already satisfied: slack-sdk<4,>=3.27.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (3.41.0)
Requirement already satisfied: mistralai<3,>=2.3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.4.5)
Requirement already satisfied: modal<2,>=1.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.4.2)
Requirement already satisfied: pywinpty<3,>=2.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.0.15)
Requirement already satisfied: elevenlabs<2,>=1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.59.0)
Requirement already satisfied: vercel<0.6.0,>=0.5.7 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.5.8)
Requirement already satisfied: faster-whisper<2,>=1.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.2.1)
Requirement already satisfied: sounddevice<1,>=0.4.6 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.5.5)
Requirement already satisfied: numpy<3,>=1.24.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (2.4.4)
Requirement already satisfied: fastapi<1,>=0.104.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (0.136.1)
Requirement already satisfied: uvicorn<1,>=0.24.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from uvicorn[standard]<1,>=0.24.0; extra == "web"->hermes-agent==0.13.0) (0.46.0)
Requirement already satisfied: youtube-transcript-api>=1.2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from hermes-agent==0.13.0) (1.2.4)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (2.6.1)
Requirement already satisfied: aiosignal>=1.4.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (1.4.0)
Requirement already satisfied: attrs>=17.3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (26.1.0)
Requirement already satisfied: frozenlist>=1.1.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (1.8.0)
Requirement already satisfied: multidict<7.0,>=4.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (6.7.1)
Requirement already satisfied: propcache>=0.2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (0.5.2)
Requirement already satisfied: yarl<2.0,>=1.17.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from aiohttp<4.0.0,>=3.8.0->edge-tts<8,>=7.2.7->hermes-agent==0.13.0) (1.23.0)
Requirement already satisfied: alibabacloud-endpoint-util<1.0.0,>=0.0.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.0.4)
Requirement already satisfied: alibabacloud-gateway-dingtalk<2.0.0,>=1.0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (1.0.2)
Requirement already satisfied: alibabacloud-gateway-spi<1.0.0,>=0.0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.0.3)
Requirement already satisfied: alibabacloud-openapi-util<1.0.0,>=0.2.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.2.4)
Requirement already satisfied: alibabacloud-tea-openapi<1.0.0,>=0.3.16 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.4.4)
Requirement already satisfied: alibabacloud-tea-util<1.0.0,>=0.3.14 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.3.14)
Requirement already satisfied: botocore<1.44.0,>=1.43.6 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from boto3<2,>=1.35.0->hermes-agent==0.13.0) (1.43.6)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from boto3<2,>=1.35.0->hermes-agent==0.13.0) (1.1.0)
Requirement already satisfied: s3transfer<0.18.0,>=0.17.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from boto3<2,>=1.35.0->hermes-agent==0.13.0) (0.17.0)
Requirement already satisfied: cffi>=2.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from cryptography>=3.4.0->PyJWT[crypto]<3,>=2.12.0->hermes-agent==0.13.0) (2.0.0)
Requirement already satisfied: Deprecated<2.0.0,>=1.2.18 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.3.1)
Requirement already satisfied: aiofiles<24.2.0,>=24.1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (24.1.0)
Requirement already satisfied: daytona-api-client==0.173.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.173.0)
Requirement already satisfied: daytona-api-client-async==0.173.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.173.0)
Requirement already satisfied: daytona-toolbox-api-client==0.173.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.173.0)
Requirement already satisfied: daytona-toolbox-api-client-async==0.173.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.173.0)
Requirement already satisfied: obstore<0.9.0,>=0.8.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.8.2)
Requirement already satisfied: opentelemetry-api<2.0.0,>=1.27.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.39.1)
Requirement already satisfied: opentelemetry-exporter-otlp-proto-http<2.0.0,>=1.27.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.39.1)
Requirement already satisfied: opentelemetry-instrumentation-aiohttp-client>=0.59b0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.60b1)
Requirement already satisfied: opentelemetry-sdk<2.0.0,>=1.27.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.39.1)
Requirement already satisfied: python-multipart<0.1.0,>=0.0.15 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.0.27)
Requirement already satisfied: toml<0.11.0,>=0.10.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.10.2)
Requirement already satisfied: aiohttp-retry>=2.8.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from daytona-api-client-async==0.173.0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (2.9.1)
Requirement already satisfied: PyNaCl<1.6,>=1.5.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from discord.py[voice]<3,>=2.7.1; extra == "messaging"->hermes-agent==0.13.0) (1.5.0)
Requirement already satisfied: davey>=0.1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from discord.py[voice]<3,>=2.7.1; extra == "messaging"->hermes-agent==0.13.0) (0.1.5)
Requirement already satisfied: starlette>=0.46.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fastapi<1,>=0.104.0->hermes-agent==0.13.0) (1.0.0)
Requirement already satisfied: annotated-doc>=0.0.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from fastapi<1,>=0.104.0->hermes-agent==0.13.0) (0.0.4)
Requirement already satisfied: ctranslate2<5,>=4.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (4.7.1)
Requirement already satisfied: huggingface-hub>=0.21 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (1.14.0)
Requirement already satisfied: tokenizers<1,>=0.13 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (0.23.1)
Requirement already satisfied: onnxruntime<2,>=1.14 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (1.26.0)
Requirement already satisfied: av>=11 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (17.0.1)
Requirement already satisfied: httplib2<1.0.0,>=0.19.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (0.31.2)
Requirement already satisfied: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=1.32.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (2.52.0)
Requirement already satisfied: google-api-core!=2.0.,!=2.1.,!=2.2.*,!=2.3.0,<3.0.0,>=1.31.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (2.30.3)
Requirement already satisfied: uritemplate<5,>=3.0.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (4.2.0)
Requirement already satisfied: requests-oauthlib>=0.7.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-auth-oauthlib<2,>=1.0->hermes-agent==0.13.0) (2.0.0)
Requirement already satisfied: requests_toolbelt>=0.9 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from lark-oapi<2,>=1.5.3->hermes-agent==0.13.0) (1.0.0)
Requirement already satisfied: pycryptodome>=3.9 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from lark-oapi<2,>=1.5.3->hermes-agent==0.13.0) (3.23.0)
Requirement already satisfied: mdurl
=0.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from markdown-it-py>=2.2.0->rich<15,>=14.3.3->hermes-agent==0.13.0) (0.1.2)
Requirement already satisfied: jsonschema>=4.20.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mcp<2,>=1.2.0->hermes-agent==0.13.0) (4.26.0)
Requirement already satisfied: pydantic-settings>=2.5.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mcp<2,>=1.2.0->hermes-agent==0.13.0) (2.14.1)
Requirement already satisfied: pywin32>=310 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mcp<2,>=1.2.0->hermes-agent==0.13.0) (311)
Requirement already satisfied: sse-starlette>=1.6.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mcp<2,>=1.2.0->hermes-agent==0.13.0) (3.4.2)
Requirement already satisfied: eval-type-backport>=0.2.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mistralai<3,>=2.3.0->hermes-agent==0.13.0) (0.3.1)
Requirement already satisfied: jsonpath-python>=1.0.6 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mistralai<3,>=2.3.0->hermes-agent==0.13.0) (1.1.6)
Requirement already satisfied: opentelemetry-semantic-conventions<0.61,>=0.60b1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from mistralai<3,>=2.3.0->hermes-agent==0.13.0) (0.60b1)
Requirement already satisfied: cbor2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (6.0.1)
Requirement already satisfied: click~=8.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (8.3.3)
Requirement already satisfied: grpclib<0.4.10,>=0.4.7 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (0.4.9)
Requirement already satisfied: protobuf!=4.24.0,<7.0,>=3.19 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (6.33.6)
Requirement already satisfied: synchronicity~=0.12.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (0.12.2)
Requirement already satisfied: typer>=0.9 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (0.25.1)
Requirement already satisfied: types-certifi in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (2021.10.8.3)
Requirement already satisfied: types-toml in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (0.10.8.20260508)
Requirement already satisfied: watchfiles in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from modal<2,>=1.0.0->hermes-agent==0.13.0) (1.1.1)
Requirement already satisfied: colorama>=0.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pytest<10,>=9.0.2->hermes-agent==0.13.0) (0.4.6)
Requirement already satisfied: iniconfig>=1.0.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pytest<10,>=9.0.2->hermes-agent==0.13.0) (2.3.0)
Requirement already satisfied: packaging>=22 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pytest<10,>=9.0.2->hermes-agent==0.13.0) (26.2)
Requirement already satisfied: pluggy<2,>=1.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pytest<10,>=9.0.2->hermes-agent==0.13.0) (1.6.0)
Requirement already satisfied: execnet>=2.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pytest-xdist<4,>=3.0->hermes-agent==0.13.0) (2.1.2)
Requirement already satisfied: six>=1.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from python-dateutil->croniter<7,>=6.0.0->hermes-agent==0.13.0) (1.17.0)
Requirement already satisfied: tornado~=6.5 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from python-telegram-bot[webhooks]<23,>=22.6; extra == "messaging"->hermes-agent==0.13.0) (6.5.5)
Requirement already satisfied: pypng in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from qrcode<8,>=7.0->hermes-agent==0.13.0) (0.20220715.0)
Requirement already satisfied: httptools>=0.6.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from uvicorn[standard]<1,>=0.24.0; extra == "web"->hermes-agent==0.13.0) (0.7.1)
Requirement already satisfied: vercel-workers>=0.0.16 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from vercel<0.6.0,>=0.5.7->hermes-agent==0.13.0) (0.0.22)
Requirement already satisfied: defusedxml<0.8.0,>=0.7.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from youtube-transcript-api>=1.2.0->hermes-agent==0.13.0) (0.7.1)
Requirement already satisfied: alibabacloud_credentials>=0.3.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-gateway-spi<1.0.0,>=0.0.2->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (1.0.8)
Requirement already satisfied: darabonba-core<2.0.0,>=1.0.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-tea-openapi<1.0.0,>=0.3.16->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (1.0.5)
Requirement already satisfied: alibabacloud-tea>=0.3.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud-tea-util<1.0.0,>=0.3.14->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (0.4.3)
Requirement already satisfied: pycparser in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from cffi>=2.0.0->cryptography>=3.4.0->PyJWT[crypto]<3,>=2.12.0->hermes-agent==0.13.0) (3.0)
Requirement already satisfied: setuptools in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from ctranslate2<5,>=4.0->faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (82.0.1)
Requirement already satisfied: wrapt<3,>=1.10 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from Deprecated<2.0.0,>=1.2.18->daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.17.3)
Requirement already satisfied: googleapis-common-protos<2.0.0,>=1.63.2 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-core!=2.0.,!=2.1.,!=2.2.,!=2.3.0,<3.0.0,>=1.31.5->google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (1.75.0)
Requirement already satisfied: proto-plus<2.0.0,>=1.22.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-api-core!=2.0.
,!=2.1.,!=2.2.,!=2.3.0,<3.0.0,>=1.31.5->google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (1.28.0)
Requirement already satisfied: pyasn1-modules>=0.2.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from google-auth!=2.24.0,!=2.25.0,<3.0.0,>=1.32.0->google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (0.4.2)
Requirement already satisfied: h2<5,>=3.1.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from grpclib<0.4.10,>=0.4.7->modal<2,>=1.0.0->hermes-agent==0.13.0) (4.3.0)
Requirement already satisfied: pyparsing<4,>=3.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from httplib2<1.0.0,>=0.19.0->google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (3.3.2)
Requirement already satisfied: filelock>=3.10.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from huggingface-hub>=0.21->faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (3.29.0)
Requirement already satisfied: fsspec>=2023.5.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from huggingface-hub>=0.21->faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (2026.4.0)
Requirement already satisfied: hf-xet<2.0.0,>=1.4.3 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from huggingface-hub>=0.21->faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (1.5.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from jsonschema>=4.20.0->mcp<2,>=1.2.0->hermes-agent==0.13.0) (2025.9.1)
Requirement already satisfied: referencing>=0.28.4 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from jsonschema>=4.20.0->mcp<2,>=1.2.0->hermes-agent==0.13.0) (0.37.0)
Requirement already satisfied: rpds-py>=0.25.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from jsonschema>=4.20.0->mcp<2,>=1.2.0->hermes-agent==0.13.0) (0.30.0)
Requirement already satisfied: flatbuffers in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from onnxruntime<2,>=1.14->faster-whisper<2,>=1.0.0->hermes-agent==0.13.0) (25.12.19)
Requirement already satisfied: importlib-metadata<8.8.0,>=6.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from opentelemetry-api<2.0.0,>=1.27.0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (8.7.1)
Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.39.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from opentelemetry-exporter-otlp-proto-http<2.0.0,>=1.27.0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.39.1)
Requirement already satisfied: opentelemetry-proto==1.39.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from opentelemetry-exporter-otlp-proto-http<2.0.0,>=1.27.0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (1.39.1)
Requirement already satisfied: opentelemetry-instrumentation==0.60b1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from opentelemetry-instrumentation-aiohttp-client>=0.59b0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.60b1)
Requirement already satisfied: opentelemetry-util-http==0.60b1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from opentelemetry-instrumentation-aiohttp-client>=0.59b0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (0.60b1)
Requirement already satisfied: oauthlib>=3.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=1.0->hermes-agent==0.13.0) (3.3.1)
Requirement already satisfied: shellingham>=1.3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from typer>=0.9->modal<2,>=1.0.0->hermes-agent==0.13.0) (1.5.4)
Requirement already satisfied: APScheduler<4.0.0,>=3.10.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud_credentials>=0.3.4->alibabacloud-gateway-spi<1.0.0,>=0.0.2->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (3.11.2)
Requirement already satisfied: alibabacloud-credentials-api<2.0.0,>=1.0.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from alibabacloud_credentials>=0.3.4->alibabacloud-gateway-spi<1.0.0,>=0.0.2->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (1.0.0)
Requirement already satisfied: hyperframe<7,>=6.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from h2<5,>=3.1.0->grpclib<0.4.10,>=0.4.7->modal<2,>=1.0.0->hermes-agent==0.13.0) (6.1.0)
Requirement already satisfied: hpack<5,>=4.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from h2<5,>=3.1.0->grpclib<0.4.10,>=0.4.7->modal<2,>=1.0.0->hermes-agent==0.13.0) (4.1.0)
Requirement already satisfied: zipp>=3.20 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from importlib-metadata<8.8.0,>=6.0->opentelemetry-api<2.0.0,>=1.27.0->daytona<1,>=0.148.0->hermes-agent==0.13.0) (3.23.1)
Requirement already satisfied: pyasn1<0.7.0,>=0.6.1 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from pyasn1-modules>=0.2.1->google-auth!=2.24.0,!=2.25.0,<3.0.0,>=1.32.0->google-api-python-client<3,>=2.100->hermes-agent==0.13.0) (0.6.3)
Requirement already satisfied: tzlocal>=3.0 in c:\users\zhaow\appdata\local\hermes\hermes-agent\venv\lib\site-packages (from APScheduler<4.0.0,>=3.10.0->alibabacloud_credentials>=0.3.4->alibabacloud-gateway-spi<1.0.0,>=0.0.2->alibabacloud-dingtalk>=2.0.0->hermes-agent==0.13.0) (5.3.1)
Building wheels for collected packages: hermes-agent
Building editable for hermes-agent (pyproject.toml) ... done
Created wheel for hermes-agent: filename=hermes_agent-0.13.0-0.editable-py3-none-any.whl size=11089 sha256=6aa81af2954c34380113d5517b69bc16a9c6aff1f24320c67a377950aa2d5378
Stored in directory: C:\Users\zhaow\AppData\Local\Temp\pip-ephem-wheel-cache-vmbdlc98\wheels\60\24\c0\ed34314ffb30d220385cc4f3aad021cf0b14028a5115827cd0
Successfully built hermes-agent
WARNING: Ignoring invalid distribution ~ (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
WARNING: Ignoring invalid distribution ~ermes-agent (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
Installing collected packages: hermes-agent
Attempting uninstall: hermes-agent
Found existing installation: hermes-agent 0.13.0
Uninstalling hermes-agent-0.13.0:
Successfully uninstalled hermes-agent-0.13.0
WARNING: Failed to remove contents in a temporary directory 'C:\Users\zhaow\AppData\Local\Temp\pip-uninstall-perxtqz4'.
You can safely remove it manually.
WARNING: Ignoring invalid distribution ~ (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
WARNING: Ignoring invalid distribution ~ermes-agent (C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Lib\site-packages)
Successfully installed hermes-agent-0.13.0

[notice] A new release of pip is available: 25.0.1 -> 26.1.1
[notice] To update, run: C:\Users\zhaow\AppData\Local\hermes\hermes-agent\venv\Scripts\python.exe -m pip install --upgrade pip
→ Updating Node.js dependencies...
Exception in thread Thread-18 (_readerthread):
Traceback (most recent call last):
File "C:\Users\zhaow\AppData\Local\Programs\Python\Python312\Lib\threading.py", line 1075, in _bootstrap_inner
self.run()
File "C:\Users\zhaow\AppData\Local\Programs\Python\Python312\Lib\threading.py", line 1012, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\zhaow\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 1599, in _readerthread
buffer.append(fh.read())
^^^^^^^^^
UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 3: illegal multibyte sequence
✓ repo root
✓ ui-tui
→ Building web UI...
⚠ Web UI build failed (hermes web will not be available)

✓ Code updated!

→ Syncing bundled skills...
↑ 1 updated: kanban-orchestrator
~ 1 user-modified (kept)

→ Syncing bundled skills to all profiles...
default: ~1 user-modified

→ Checking configuration for new options...
✓ Configuration is up to date

✓ Update complete!

Tip: You can now select a provider and model:
hermes model # Select provider and model

here is the error log I met when running hermes update on windows

Edition Windows 11 Pro
Version 25H2
Installed on ‎5/‎6/‎2026
OS build 26200.8246
Experience Windows Feature Experience Pack 1000.26100.297.0

On Windows systems using a Chinese GBK locale, `hermes update` could misreport the Web UI build as failed even when `npm run build` actually succeeded. The failure was caused by Python decoding captured npm output with the process locale inside a background subprocess reader thread. When npm emitted bytes such as `0x85`, decoding under GBK raised `UnicodeDecodeError`, and Hermes then surfaced a misleading "Web UI build failed" warning.

This change makes the npm install/npm ci path and the Web UI build step decode captured output explicitly as UTF-8 with `errors="replace"`. That keeps unexpected bytes from crashing output collection, preserves successful builds, and prevents false negatives during update on Windows.

The patch also adds regression tests that verify these subprocess calls always use explicit UTF-8 decoding with replacement semantics.
@VinceZcrikl VinceZcrikl force-pushed the fix/web-ui-build-windows-utf8 branch from 94fff19 to 95a5274 Compare May 11, 2026 08:16
@VinceZcrikl

Copy link
Copy Markdown
Author

Follow-up: I corrected the earlier inflated file diff.

The large +11,945 / -11,906 view was not caused by a real logic change across those files. It came from line-ending normalization drift when I had to publish the branch through the GitHub API during a period where normal git push over HTTPS was failing from this machine.

I have now republished the branch with LF-normalized file contents, and the PR diff is back to the expected logical size:

  • 2 changed files
  • +41 / -2 overall

Current breakdown:

  • hermes_cli/main.py: +12 / -1
  • tests/hermes_cli/test_web_ui_build.py: +29 / -1

So the current diff should now accurately reflect only the intended code changes.

@teknium1

Copy link
Copy Markdown
Contributor

Salvaged onto current main via #23850 — your commit is on main with your authorship preserved in git log. Thanks!

rmulligan pushed a commit to rmulligan/hermes-agent that referenced this pull request May 11, 2026
JinyuID pushed a commit to JinyuID/hermes-agent that referenced this pull request May 11, 2026
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
jsboige pushed a commit to jsboige/hermes-agent that referenced this pull request May 14, 2026
heybenn42 pushed a commit to heybenn42/hermes-agent that referenced this pull request May 15, 2026
* upstream/main: (1099 commits)
  chore: ruff auto-fix C401, C416, C408, PLR1722 (NousResearch#23940)
  feat(prompt-cache): cross-session 1h prefix cache for Claude on Anthropic / OpenRouter / Nous Portal (NousResearch#23828)
  chore: ruff auto-fix PLR6201 — tuple → set in membership tests (NousResearch#23937)
  chore(release): add AUTHOR_MAP entry for wuli666
  fix(auxiliary): evict async wrappers on poisoned client (follow-up to NousResearch#23482)
  fix(cli,tui): align CJK / wide-char markdown tables (NousResearch#23863)
  chore: ruff auto-fixes — collapsible-else-if, if-stmt-min-max, dict.fromkeys (NousResearch#23926)
  fix(/model): surface Nous Portal models from remote catalog manifest (NousResearch#23912)
  fix(cli): defensive _slash_confirm_state access + AUTHOR_MAP
  fix: use TUI modal for slash confirmations
  rebuild model catalog
  fix(dashboard): validate dist exists when --skip-build is set
  fix(dashboard): fallback to stale dist, retry build, add --skip-build flag
  chore: AUTHOR_MAP entry for VinceZcrikl noreply (NousResearch#23647)
  fix: make web UI build output decoding robust on Windows
  fix(agent): catch ChatGPT-account Codex data-URL rejection so images are stripped instead of cascading to compression (NousResearch#23602)
  revert: roll back /goal checklist + /subgoal feature stack (NousResearch#23813)
  chore: AUTHOR_MAP entries for sudo-hardening salvage contributors
  fix(approval): catch sudo with stdin/askpass/shell privilege flags
  fix(terminal): block sudo -S password guessing when SUDO_PASSWORD is not set
  ...
AlexFoxD pushed a commit to AlexFoxD/hermes-agent that referenced this pull request May 21, 2026
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard javascript Pull requests that update javascript code P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants