Commit Graph
100 Commits
Author SHA1 Message Date
ekkoandPaulo Cavallari bbb8b1d536 [codex] fix bridge tool marker flush persistence (#1002)
* fix: don't drop pending tool-call-marker prefix on tool.started/run.done

The `filterBridgeToolCallMarkupDelta` filter holds back any text that
ends in a partial prefix of `[Calling tool:` (i.e. `[`, `[C`, `[Ca`,
..., `[Calling tool`) so it can decide whether the buffered chars are
the start of a tool-call markup block to be hidden, or just regular
text to be released by the next delta.

The bug: that "release on next delta" assumption breaks at TWO points:

1. **On `tool.started`**: the next chunk for this assistant message is
   the tool call itself, NOT a follow-up text delta. Buffered chars
   sit there forever and nothing flushes them — they vanish silently
   from the user-visible stream.

2. **On run completion**: the code did
   `state.bridgePendingToolCallMarkup = undefined` directly, dropping
   any pending chars without forwarding them.

Both cases produce the user-visible symptom of "abrupt cuts in text
right before/after tool calls (terminal, read_file, write_file...)" —
1 to 13 characters disappear at exactly the boundary where the model
was emitting natural prose that happened to end with `[`.

The fix introduces `flushPendingToolCallMarkup(state)` and calls it:

- In the `tool.started` branch BEFORE recording the tool call, so the
  buffered chars are appended to the open assistant message and emitted
  as a normal `message.delta` to the client.
- At run-done BEFORE clearing the buffer, same flush path.

This is a pure recovery patch — no change to the marker detection
logic itself. If the buffer turns out to actually be a real
`[Calling tool: ...]` marker that just hasn't completed yet, that
case is still caught by the existing `markerIdx >= 0` branch in the
filter on the next delta. The only behavioral change is that the
"orphan" cases (text that ends with `[` but never becomes a marker)
are no longer dropped.

* fix bridge marker flush persistence

---------

Co-authored-by: Paulo Cavallari <paulocavallari@users.noreply.github.com>
2026-05-25 11:09:16 +08:00
ekko 9e35d81f48 fix mobile chat run reconnect (#993) 2026-05-25 11:08:54 +08:00
ekko 61b41512d4 [codex] increase login lock threshold (#984)
* increase login ip lock threshold

* show login lock recovery commands
2026-05-24 22:36:21 +08:00
ekko 4176923bac support external skill sources (#981) 2026-05-24 19:47:52 +08:00
ekko 6763721545 fix session links profile filtering (#979) 2026-05-24 19:30:32 +08:00
ekkoandGoldenFish123321 e743c81ad3 [codex] add clarify support with response path tests (#972)
* feat: 新增 clarify(澄清/确认)交互支持

* test clarify response bridge path

---------

Co-authored-by: GoldenFish123321 <golden_fish@foxmail.com>
2026-05-24 18:09:39 +08:00
ekko a7f0a92fe6 fix session profile listing and cli sqlite warning (#971) 2026-05-24 17:54:17 +08:00
ekko f61a1d9454 [codex] fix auth startup and profile model defaults (#966)
* docs release 0.6.0 changelog

* fix auth startup and profile model defaults
2026-05-24 14:00:31 +08:00
ekko 634a622934 [codex] fix media skill profile auth and run events (#965)
* fix media skill profile auth and run events

* test bridge run profile context
2026-05-24 12:52:14 +08:00
ekkoandMaxim Kirilyuk df41d6b051 [codex] Fix profile-aware session deep links (#962)
* feat: add session deep links for chats

* feat: add deep links for history and group chat

* Fix profile-aware session deep links

---------

Co-authored-by: Maxim Kirilyuk <werserk@inbox.ru>
2026-05-24 10:55:55 +08:00
ekkoandCodex 3f16c4a20e Allow bridge sessions to run concurrently (#932)
* Allow bridge sessions to run concurrently

* Stabilize bridge concurrency test

* Set bridge approval timeout to 120 seconds

* harden bridge approval concurrency

---------

Co-authored-by: Codex <codex@openai.com>
2026-05-22 15:52:00 +08:00
ekko 92670e97ee Add Windows Kanban upgrade changelog note (#930) 2026-05-22 12:03:43 +08:00
ekko f0817003b2 Update changelog for 0.5.34 (#929) 2026-05-22 11:12:21 +08:00
ekko f90e79fd2f fix: sync bundled skills across profiles (#926) 2026-05-22 10:41:14 +08:00
ekko 4b759c4d8a cache group chat fixed context usage (#925) 2026-05-22 10:20:39 +08:00
ekko c3538a6b44 fix compression context usage accounting (#924) 2026-05-22 09:46:50 +08:00
ekkoandCodex 254573400d Fix final context and tool status updates (#917)
Co-authored-by: Codex <codex@openai.com>
2026-05-21 23:21:26 +08:00
ekko ff1f471745 Persist custom Hermes models (#913) 2026-05-21 20:55:19 +08:00
ekko 4d89767847 Clean multimodal tool results before storage (#911) 2026-05-21 20:19:06 +08:00
ekkoandCodex 39ead94352 Account for full context tokens in compression (#908)
* Account for full context tokens in compression

* Fix group chat final context updates

---------

Co-authored-by: Codex <codex@openai.com>
2026-05-21 19:40:52 +08:00
ekko b2ec321990 Fix group chat agent connection failures (#900) 2026-05-21 14:54:41 +08:00
ekko 013b4abcbf Update changelog for 0.5.33 (#899) 2026-05-21 14:31:52 +08:00
ekko ab7dd00e8c Fix profile list column parsing (#897) 2026-05-21 14:08:58 +08:00
ekko 3b4e0cec74 Update Nous provider model preset (#896) 2026-05-21 13:20:26 +08:00
ekko dd3320d1ce Fix Windows netstat encoding in agent bridge (#894) 2026-05-21 12:25:38 +08:00
ekko 284d794260 Add skill recommendations page content (#892) 2026-05-21 12:23:08 +08:00
ekko 91f7f2329a prune unused changelog translations (#890) 2026-05-21 11:47:54 +08:00
ekko 529065f023 scope session search by selected profile (#889) 2026-05-21 09:48:31 +08:00
ekko 3612a76735 show chat run errors as agent messages (#887) 2026-05-21 09:05:17 +08:00
ekko 40109e9c42 [codex] fix profile scoped model selection (#881)
* fix profile scoped model selection

* test profile scoped provider refresh
2026-05-20 18:26:01 +08:00
ekko cd77e5ba2e Align i18n locale coverage (#878) 2026-05-20 17:13:32 +08:00
51c3f0c62a [codex] harden recursive skill scan (#876)
* fix: recursive skill scan for nested sub-category directories

The Web UI skill scanner (scanSkillsDir) only checked one level deep:
skills/<category>/<subdir>/SKILL.md. Sub-category containers like
mlops/evaluation/ (which has DESCRIPTION.md + subdirs but no SKILL.md)
were skipped entirely, hiding all 12 nested skills under mlops.

Changes:
- scanSkillsDir: extract collectSkills() recursive helper that depth-first
  searches for SKILL.md at every level under a category directory.
  Directories without SKILL.md but with subdirectories are recursively
  descended into.
- listFiles handler: replace hardcoded join(category, skill) path with
  recursive findSkillDir() search, so nested skill file browsing works
  (e.g., mlops/evaluation/lm-evaluation-harness).

Fixes mlops category showing 1 skill instead of 13. All 20 other
categories verified with zero regression.

* fix: pA handler also needs recursive search for nested skill file content

The readFile_ (pA) handler was constructing direct paths like
skills/category/skill/... which fails for nested sub-category
skills (mlops/evaluation/lm-evaluation-harness). Added fallback
recursive search when direct path returns 404.

Also fixed listFiles (sA) handler to use recursive search for
the same reason - previous fix to dist was not in source TS.

Verified:
- lm-evaluation-harness SKILL.md content: 200 
- vllm SKILL.md: 200 
- huggingface-hub (non-nested): 200 
- reference file in nested skill: 200 

* fix: pA handler also needs recursive search for nested skill file content

The readFile_ (pA) handler was constructing direct paths like
skills/category/skill/... which fails for nested sub-category
skills (mlops/evaluation/lm-evaluation-harness). Added fallback
recursive search when direct path returns 404.

Also fixed listFiles (sA) handler to use recursive search for
the same reason - previous fix to dist was not in source TS.

Verified:
- lm-evaluation-harness SKILL.md content: 200 
- vllm SKILL.md: 200 
- huggingface-hub (non-nested): 200 
- reference file in nested skill: 200 

* harden recursive skill lookup

---------

Co-authored-by: gs <gs@localhost>
Co-authored-by: gutanulaif <gutanulaifa@gmail.com>
2026-05-20 15:38:56 +08:00
ekko 866d243978 update 0.5.31 changelog (#874) 2026-05-20 15:34:09 +08:00
ekko 204058502e add apikey image generation media endpoint (#872) 2026-05-20 15:10:30 +08:00
ekkoandCodex 201330652d fix: raise mobile session drawer overlay (#871)
Co-authored-by: Codex <codex@openai.com>
2026-05-20 15:06:12 +08:00
ekko c90eba226d [codex] add customizable profile avatars (#870)
* add customizable profile avatars

* keep profile avatar visible when sidebar collapses

* simplify collapsed profile avatar styling

* force managed gateway startup in docker

* limit gateway autostart to active profile

* restore all profile gateway autostart

* fix managed gateway runtime detection
2026-05-20 14:15:01 +08:00
ekko 663afb61ff Improve profile runtime controls (#868)
* Improve profile runtime controls

* Restore profile selector test id

* Update profile switch e2e flow
2026-05-20 12:59:34 +08:00
ekko 210b0ee6c2 Harden bridge broker restart (#862) 2026-05-20 10:02:15 +08:00
ekko 0547fd6b6a [codex] Harden context compression history handling (#848)
* Use token threshold for chat compression

* Add compression settings controls

* Use config for chat compression

* Cover protected messages in compression tests

* Remove message-count compression limit

* Harden compression window fallback

* Rebuild stale compression snapshots

* Harden stale compression snapshots

* Update changelog for compression hardening

* Prefer local history session details
2026-05-19 17:58:39 +08:00
ekko 84e343fc22 Add 0.5.30 changelog (#846) 2026-05-19 16:19:56 +08:00
ekkoandCodex 9a9416c99c Fix bridge history, profile models, and Windows gateway handling (#845)
* feat: support profile-aware group chat bridge flows

* feat: route cron jobs through hermes cli

* Fix group chat routing and isolate bridge tests

* Add Grok image-to-video media skill

* Default Grok videos to media directory

* Fix bridge profile fallback and cron repeat clearing

* Refine bridge chat and gateway platform handling

* Filter bridge tool-call text deltas

* Preserve structured bridge chat history

* Prepare beta release build artifacts

* Fix Windows run profile resolution

* Fix Windows path compatibility checks

* Fix profile-scoped model page display

* Hide Windows subprocess windows for jobs and updates

* Hide Windows file backend subprocess windows

* Avoid Windows gateway restart lock conflicts

* Treat Windows gateway lock as running on startup

* Force release Windows gateway lock on restart

* Tighten Windows gateway lock cleanup

* Update chat e2e source expectation

* Bump package version to 0.5.30

---------

Co-authored-by: Codex <codex@openai.com>
2026-05-19 16:09:59 +08:00
ekkoandchenxusheng d2cbce2f13 Adjust outline user item background (#836)
* feat:新增大纲功能

* Adjust outline user item background

---------

Co-authored-by: chenxusheng <chenxusheng@haizhi.com>
2026-05-19 08:25:01 +08:00
ekko bbfd818106 update zai models and sidebar divider (#819) 2026-05-17 20:47:52 +08:00
ekko aff3546677 fix: route fun codex through responses api (#815) 2026-05-17 16:17:32 +08:00
ekko ce5a9bb012 Harden env parsing and writes (#814) 2026-05-17 15:39:31 +08:00
ekko 6516d86dfc Limit run-time model list waiting (#812) 2026-05-17 12:51:23 +08:00
ekko 5e8f8bd4a1 Add session-level bridge model settings (#811) 2026-05-17 12:20:53 +08:00
ekko fa035f348e Fix Windows local file download paths (#810) 2026-05-17 11:09:28 +08:00
ekko bcfc5053c4 Add 0.5.26 changelog (#809) 2026-05-17 10:09:25 +08:00
ekko 53f0301da4 Add Hermes Agent package fallback and xAI OAuth (#808) 2026-05-17 09:45:56 +08:00
ekkoandZhicheng Han 0c2bafc619 [codex] Add local tool trace toggle (#806)
* test: harden tool approval browser contract

* test: cover tool trace display edge cases

* test: cover resumed tool trace edge cases

* feat: hide tool traces by default

* Add local tool trace toggle

---------

Co-authored-by: Zhicheng Han <zhicheng.han@mathematik.uni-goettingen.de>
2026-05-17 09:01:59 +08:00
ekkoandCodex 569ddc28da fix(logs): keep loading state below filters (#802)
Co-authored-by: Codex <codex@openai.com>
2026-05-16 22:49:09 +08:00
ekkoandGaoZzr 840cb6cd9f fix: correct session reset mode options (#800)
* fix: correct session reset mode options

- Change 'hourly' to 'daily' to match gateway SessionResetPolicy
- Add 'none' option (officially supported in CLI setup wizard)
- Add 'modeDaily' and 'modeNone' i18n keys

* fix: add i18n keys for session reset mode fixes (en)

* fix: add i18n keys for session reset mode fixes (zh)

* fix: add i18n keys for session reset mode fixes (de)

* fix: add i18n keys for session reset mode fixes (es)

* fix: add i18n keys for session reset mode fixes (fr)

* fix: add i18n keys for session reset mode fixes (ja)

* fix: add i18n keys for session reset mode fixes (ko)

* fix: add i18n keys for session reset mode fixes (pt)

* fix zh-TW session reset labels

---------

Co-authored-by: GaoZzr <55678517+GaoZzr@users.noreply.github.com>
2026-05-16 21:18:59 +08:00
ekko 048a0ad87e fix mobile terminal drawer sizing (#799) 2026-05-16 21:01:00 +08:00
ekko f7556e6204 fix plugin discovery python env (#798) 2026-05-16 20:58:44 +08:00
ekko 8357c8ed84 Fix bridge profile environment isolation (#796) 2026-05-16 20:27:23 +08:00
ekkoandCodex 7d7c8b7321 fix(cli): make port detection portable (#789)
Co-authored-by: Codex <codex@openai.com>
2026-05-16 15:44:50 +08:00
ekko db0c23bf5e [codex] add QQBot and DingTalk channel settings (#787)
* add qqbot and dingtalk channel settings

* remove history session context menu
2026-05-16 13:54:38 +08:00
ekko 67723d9315 [codex] add locked file updates for config writes (#785)
* add locked file updates for config writes

* add glm vision turbo preset
2026-05-16 13:11:59 +08:00
ekko 217b721648 clear stale compression status on run start (#783) 2026-05-16 11:15:29 +08:00
ekko c5380c4ab5 filter empty assistant history (#781) 2026-05-16 11:01:33 +08:00
ekko 24e906998a support windows markdown media paths (#780) 2026-05-16 10:43:51 +08:00
ekko 61c10997fa clarify windows media path prompt (#779) 2026-05-16 10:12:18 +08:00
ekko cf9d0c6008 prepare 0.5.25 changelog (#778) 2026-05-16 09:40:25 +08:00
ekko 07257a8964 [codex] proxy provider model fetches (#777)
* proxy provider model fetches

* add provider model proxy e2e
2026-05-16 08:57:00 +08:00
ekko 3f8461d9eb suppress bridge CLI platform hint (#776) 2026-05-16 08:31:18 +08:00
ekko 8bb71b5592 fix tool approval flow (#773) 2026-05-16 00:11:51 +08:00
ekko 015c698993 replace claude guide with development guidelines (#767) 2026-05-15 19:30:12 +08:00
ekko e0bfa828cb make web ui state directory configurable (#764) 2026-05-15 17:30:27 +08:00
ekko fbb0236af4 Update docs and CLI upgrade notes (#760) 2026-05-15 16:13:51 +08:00
ekko 8196e49478 [codex] Add group chat room reset and clone (#756)
* Add group chat room reset and clone

* Clean npm cache before self update
2026-05-15 15:52:16 +08:00
ekko 94f1061734 align bridge multimodal handling (#755) 2026-05-15 14:47:29 +08:00
ekko 84e98cfb5e fix command compression token estimate (#751) 2026-05-15 14:10:49 +08:00
ekko 3d49f778fb align compression token estimates (#749) 2026-05-15 13:50:27 +08:00
ekko 2dbc3e1c10 chore: update changelog for 0.5.23 (#747) 2026-05-15 13:03:03 +08:00
ekko f6a6c1c228 fix: reserve web ui port for gateways (#746) 2026-05-15 12:52:45 +08:00
ekko 876aa9ee83 fix: isolate gateway profile environment (#745) 2026-05-15 12:44:36 +08:00
ekko 48dcaee6c2 feat: add bridge session commands (#743) 2026-05-15 12:04:03 +08:00
ekko 13fad02db8 [codex] fix bridge state db sync (#740)
* fix bridge session db flush cursor

* fix bridge state db result sync
2026-05-15 10:31:26 +08:00
ekko da067a5a78 refactor chat run socket (#739) 2026-05-15 10:08:52 +08:00
ekkoandClaude Opus 4.7 7da934fe8b revert: remove i18n lazy loading and highlight.js selective import (#736)
Revert the dynamic import() for i18n locales and highlight.js core+
registration from #696. Dynamic imports create separate chunk files
that cause 404 errors for users after updating when the browser still
references old chunk hashes.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 23:32:33 +08:00
ekko e5e44fd7e2 feat: auto-switch to default profile before gateway startup (#734)
When starting gateways, automatically switch to 'default' profile if
current profile is not 'default'. This ensures consistent gateway startup
behavior and prevents port conflicts from different profile configurations.

Changes:
- Check current profile before starting gateways
- Execute 'hermes profile use default' if needed
- Wait 2 seconds for profile switch to take effect
- Update internal GatewayManager state
- Add detailed logging for the switching process
2026-05-14 23:11:22 +08:00
ekko acf5184d5f Remove website QQ QR code (#730) 2026-05-14 22:04:08 +08:00
ekko 50de4eb857 fix bridge agent init compatibility (#727) 2026-05-14 21:21:26 +08:00
ekkoandClaude Opus 4.7 d0f1e7d1f2 Fix bridge compression history handling (#726)
* feat(bridge): refactor compression to use DB history and add structured logging

- Extract buildDbHistory() to share message loading between buildCompressedHistory and forceCompressBridgeHistory
- forceCompressBridgeHistory now reads from local DB instead of using Python-provided messages, ensuring consistency with api_server path
- Pass sessionId to compressor for snapshot-aware compression
- Add force_compress flag to bridge chat requests
- Add bridgeLogger structured logging for compression lifecycle
- Simplify schemas, session-sync, and providers

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix bridge compression history handling

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 21:02:59 +08:00
ekko bd6c4dc82e fix: restore Hermes session history listing (#716) 2026-05-14 15:23:19 +08:00
ekko 9b243cab36 [codex] fix self update restart (#707)
* fix: make self update restart reliably

* chore: clarify update success message
2026-05-14 12:06:39 +08:00
ekkoandClaude Opus 4.7 b2a80808e3 fix: comment out pending session delete operations in group chat (#703)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:34:10 +08:00
ekkoandClaude Opus 4.7 47ff859c7c chore: add 0.5.20 changelog and remove old entries (#702)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:32:24 +08:00
ekkoandClaude Opus 4.7 9fa3ad6ee8 fix: pass HERMES_HOME to plugins Python bridge (#701)
Fixes #689

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:14:54 +08:00
ekkoandClaude Opus 4.7 7c87ba51da feat: add Ollama Cloud provider preset (#700)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 09:43:14 +08:00
9170e11715 fix: SkillsUsage 页面样式修复与 API server skill usage 统计 (#698)
* Reapply "feat: 新增 Skills Usage 监控统计与图表 (#668)" (#670)

This reverts commit 91de3b12a1.

* fix: count API-server skill usage

* fix: align SkillsUsageView header with other pages and update sidebar icon

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Zhicheng Han <zhicheng.han@mathematik.uni-goettingen.de>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 09:28:51 +08:00
ekkoandClaude Opus 4.7 eae7195ba8 Update CLI chat session bridge (#697)
* feat: add CLI chat sessions with Python agent bridge

Introduce a new CLI chat mode that connects Web UI directly to Hermes
Agent's AIAgent via a Python bridge subprocess and Socket.IO, bypassing
the API Server /v1/responses path. Supports streaming, slash commands
(/new, /undo, /retry, /branch, /compress, /save, /title), interrupt,
and steer.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat: update CLI chat session bridge

* fix: extend agent bridge startup timeouts

* docs: update bridge chat session design

* feat: align bridge compression and provider registry

* chore: bump version to 0.5.20

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 09:03:57 +08:00
ekkoandClaude Opus 4.7 e0fcc0040b fix: parse .env and SOUL.md fields from hermes profile show output (#669)
The regex `^(\w[\w\s]*?)` could not match keys containing dots (`.env`,
`SOUL.md`), so `hasEnv` and `hasSoulMd` were always `undefined` → false.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 07:52:34 +08:00
ekko 91de3b12a1 Revert "feat: 新增 Skills Usage 监控统计与图表 (#668)" (#670)
This reverts commit ce08d2b05a.
2026-05-13 07:51:29 +08:00
ekkoandClaude Sonnet 4.6 44d1b13741 fix: enhance gateway logging for Windows dev restart debugging (#665)
Add comprehensive debug logging throughout the gateway lifecycle to
help troubleshoot nodemon restart issues on Windows, where SIGTERM
is used instead of SIGUSR2.

Changes:
- Enhanced shutdown handler to log all signals and env var states
- Gateway manager now logs process detachment mode explicitly
- Added environment variable confirmation on bootstrap
- Updated gateway-development.md with new debug logs and troubleshooting steps

Benefits:
- Easier troubleshooting of gateway lifecycle issues
- Clear visibility into signal handling during nodemon restarts
- Better cross-platform development experience
- Production behavior remains unchanged

Testing:
-  Windows: Gateways persist across nodemon restarts
-  macOS/Linux: Existing SIGUSR2 behavior preserved
-  Production: Default shutdown cleanup unchanged
-  Backward compatibility: No breaking changes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 22:03:28 +08:00
ekko 5bd1475a83 fix: preserve gateways across dev restarts (#662) 2026-05-12 21:35:17 +08:00
ekkoandClaude Opus 4.7 ebb166abee fix: skip gateway shutdown during dev restarts (#661)
Set HERMES_WEB_UI_STOP_GATEWAYS_ON_SHUTDOWN=0 in nodemon.json so
nodemon restarts don't kill running gateways. Production behavior
unchanged (stops owned gateways by default).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 21:17:40 +08:00
ekkoandClaude Opus 4.7 8b57c4a278 fix: improve gateway PID recovery and port detection (#660)
- Refactor port detection into reusable getListeningPids/killListeningPids
- Add ss command fallback when lsof is unavailable
- Extract readPidFile for cleaner PID file reading
- Remove unnecessary PowerShell candidate from Windows shell detection
- Add PID validity check in gateway_state.json fallback (Number.isFinite + > 0)

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 20:53:21 +08:00
ekkoandClaude Opus 4.7 b9b99042a0 refactor(docker): merge two-container setup into single container (#657)
* refactor(docker): merge two-container setup into single container

The Web UI already manages the Hermes Agent gateway lifecycle internally
via GatewayManager (spawn hermes gateway run --replace), making the
separate hermes-agent container redundant. The Dockerfile is built on
the hermes-agent base image, so all CLI tooling is already included.

- Remove hermes-agent service and shared volume from docker-compose.yml
- Remove gateway port mapping (8642-8670) — internal-only now
- Update docs/docker.md, README.md, README_zh.md for single-container setup

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: remove version tag from image references

Use ekkoye8888/hermes-web-ui instead of ekkoye8888/hermes-web-ui:latest
to avoid pinning a specific version in documentation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 19:01:24 +08:00