hermes - ✅(Solved) Fix restructure PR 6: move agent/ + leaf modules → hermes_agent/agent/ + hermes_agent/providers/ [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#14591Fetched 2026-04-24 06:16:11
View on GitHub
Comments
0
Participants
1
Timeline
7
Reactions
0
Participants
Timeline (top)
cross-referenced ×4labeled ×3

Fix Action

Fixed

PR fix notes

PR #14498: refactor: move all source into hermes_agent/ package (PR 1/3)

Description (problem / solution / changelog)

Summary

Consolidates the entire codebase into a single hermes_agent/ Python package. This is PR 1 of 3 in the restructure tracked by #14182 (sub-issue: #14183).

Before: 8 independent packages (agent/, tools/, hermes_cli/, gateway/, acp_adapter/, cron/, plugins/) + 11 top-level modules (run_agent.py, cli.py, model_tools.py, etc.) with unprefixed imports (from agent.prompt_builder import ...).

After: One hermes_agent/ package with organized subpackages. All imports are from hermes_agent.X import ....

Diff breakdown

The diff looks large (+13,057 / -12,287) but ~95% is mechanical one-line import path changes. Here's the breakdown:

CategoryFiles+lines-linesWhat it is
Pure renames7200git mv only — invisible in diff
Renames + import rewrites2192,1092,104Moved files that also had imports rewritten
Tests (not renamed)6499,8149,895Import rewrites + test fixture fixes
Scripts1191436Move map + import rewriter (new files)
Infra + other42226245tui_gateway/, environments/, Dockerfile, AGENTS.md, etc.

Tests dominate because every test file imports from the packages we moved, so every from agent., from tools., from hermes_cli. line was rewritten — plus all patch() and monkeypatch.setattr() target strings. There are more test files (649) than source files (291) because each test imports and mocks multiple modules.

The actual semantic changes (infra, new scripts, .git-blame-ignore-revs) account for ~1,100 lines.

What changed

  • 268 source files moved into hermes_agent/ via git mv (100% similarity preserved for blame)
  • All imports rewritten across 898 files — covers import X, from X import, patch() strings, monkeypatch.setattr(), sys.modules[] keys, importlib.import_module() strings
  • Infrastructure updatedpyproject.toml entry points, Dockerfile, docker/entrypoint.sh, scripts/install.sh, setup-hermes.sh, scripts/install.ps1, web/vite.config.ts, MANIFEST.in, AGENTS.md, nix/checks.nix
  • New subpackage organization:
    • agent/transports/ + provider adapters → hermes_agent/providers/
    • tools/environments/hermes_agent/backends/
    • tools/browser_*.pyhermes_agent/tools/browser/
    • tools/mcp_*.pyhermes_agent/tools/mcp/
    • tools/skills_*.pyhermes_agent/tools/skills/
    • tools/file_*.pyhermes_agent/tools/files/
    • tools/*_tool.py (media) → hermes_agent/tools/media/
    • hermes_cli/auth*.pyhermes_agent/cli/auth/
    • hermes_cli/model*.pyhermes_agent/cli/models/
    • hermes_cli/banner.py, colors.py, etc. → hermes_agent/cli/ui/
  • New console script: hermes-skills-sync — decouples shell scripts from internal module layout
  • Zero logic changes — this is purely mechanical file moves + import rewrites

Commit strategy

#CommitPurpose
18bff8bf2Add move map data structure (268 file mappings)
265ca3ba9Pure git mv — all files into hermes_agent/ (100% similarity)
34b163419Rewrite all imports + string references (898 files)
4a1e667b9Fix test regressions from import rewrite (113 test files)
576aebd73Update infrastructure (pyproject, Docker, shell scripts, vite, AGENTS.md)
6ff99611eUpdate Nix files
725072fe6Fix stale references missed by import rewrite
8987962f4Add .git-blame-ignore-revs for restructure commits

Commits 1-2 are separated so git log --follow and git blame work correctly. The git mv commit has 100% similarity on all 268 files. .git-blame-ignore-revs tells git blame (and GitHub) to skip commits 2-3.

Key decisions

DecisionChoiceRationale
plugins/ locationMoved into hermes_agent/plugins/Single package boundary
Layer inversions (agent→cli)Moved as-isPR 1 is mechanical only; fix in follow-up #14278
sys.path hacks in prod codeStrippedAll install paths use editable installs; hacks are redundant
tests/conftest.py sys.pathStripped, added ImportError guardForces proper uv pip install -e '.[all,dev]'
Logger COMPONENT_PREFIXESUpdated to new pathsPreserves hermes logs --component filtering
Process-name matching (gateway)New patterns added alongside oldRunning gateways from pre-upgrade installs still have old cmdline
skills_syncAdded hermes-skills-sync console_scriptDecouples setup-hermes.sh, install.sh, entrypoint.sh from internal layout
Transport discoveryUpdated _discover_transports()Same auto-discovery pattern, new hermes_agent.providers.*_transport paths
Tool registryExtended discover_builtin_tools()Scans browser/, files/, media/, skills/ subpackage directories

Test results

MetricBaseline (pre-restructure)After restructure
Passed14,09914,220 (+121)
Failed6771
Errors7372
Skipped3830

All errors are pre-existing (Callable type annotation bug). The +121 passed is from previously-erroring tests now resolving correctly. No regressions introduced.

Entry points verified

hermes --help          ✅
hermes-agent --help    ✅
hermes-acp --help      ✅
hermes-skills-sync     ✅

Follow-up issues

  • #14278 — Fix layer inversions (agent→cli imports)
  • #14279 — Remove legacy process-name patterns after one release cycle

Directories unchanged (stay at repo root)

skills/, optional-skills/, environments/, tui_gateway/, ui-tui/, web/, website/, docker/, nix/, packaging/, scripts/, tests/, acp_registry/, assets/

Closes #14183


Part of #14182

Changed files

  • .git-blame-ignore-revs (added, +5/-0)
  • AGENTS.md (modified, +64/-73)
  • Dockerfile (modified, +2/-2)
  • MANIFEST.in (modified, +1/-0)
  • datagen-config-examples/run_browser_tasks.sh (modified, +1/-1)
  • datagen-config-examples/web_research.yaml (modified, +1/-1)
  • docker/entrypoint.sh (modified, +1/-1)
  • environments/agent_loop.py (modified, +9/-6)
  • environments/benchmarks/terminalbench_2/terminalbench2_env.py (modified, +3/-3)
  • environments/benchmarks/yc_bench/yc_bench_env.py (modified, +2/-2)
  • environments/hermes_base_env.py (modified, +4/-4)
  • environments/tool_context.py (modified, +4/-4)
  • hermes (modified, +1/-1)
  • hermes_agent/__init__.py (added, +0/-0)
  • hermes_agent/acp/__init__.py (renamed, +0/-0)
  • hermes_agent/acp/__main__.py (renamed, +0/-0)
  • hermes_agent/acp/auth.py (renamed, +1/-1)
  • hermes_agent/acp/entry.py (renamed, +2/-7)
  • hermes_agent/acp/events.py (renamed, +1/-1)
  • hermes_agent/acp/permissions.py (renamed, +0/-0)
  • hermes_agent/acp/server.py (renamed, +14/-14)
  • hermes_agent/acp/session.py (renamed, +7/-7)
  • hermes_agent/acp/tools.py (renamed, +2/-2)
  • hermes_agent/agent/__init__.py (renamed, +0/-0)
  • hermes_agent/agent/context/__init__.py (added, +0/-0)
  • hermes_agent/agent/context/compressor.py (renamed, +4/-4)
  • hermes_agent/agent/context/engine.py (renamed, +0/-0)
  • hermes_agent/agent/context/references.py (renamed, +3/-3)
  • hermes_agent/agent/copilot_acp_client.py (renamed, +2/-2)
  • hermes_agent/agent/display.py (renamed, +6/-5)
  • hermes_agent/agent/file_safety.py (renamed, +1/-1)
  • hermes_agent/agent/image_gen/__init__.py (added, +0/-0)
  • hermes_agent/agent/image_gen/provider.py (renamed, +1/-1)
  • hermes_agent/agent/image_gen/registry.py (renamed, +2/-2)
  • hermes_agent/agent/insights.py (renamed, +2/-2)
  • hermes_agent/agent/loop.py (renamed, +149/-143)
  • hermes_agent/agent/manual_compression_feedback.py (renamed, +0/-0)
  • hermes_agent/agent/memory/__init__.py (added, +0/-0)
  • hermes_agent/agent/memory/manager.py (renamed, +3/-3)
  • hermes_agent/agent/memory/provider.py (renamed, +0/-0)
  • hermes_agent/agent/prompt_builder.py (renamed, +7/-7)
  • hermes_agent/agent/redact.py (renamed, +0/-0)
  • hermes_agent/agent/shell_hooks.py (renamed, +3/-3)
  • hermes_agent/agent/skill_commands.py (renamed, +7/-7)
  • hermes_agent/agent/skill_utils.py (renamed, +4/-3)
  • hermes_agent/agent/subdirectory_hints.py (renamed, +1/-1)
  • hermes_agent/agent/title_generator.py (renamed, +1/-1)
  • hermes_agent/agent/trajectory.py (renamed, +0/-0)
  • hermes_agent/backends/__init__.py (renamed, +1/-1)
  • hermes_agent/backends/base.py (renamed, +6/-6)
  • hermes_agent/backends/daytona.py (renamed, +2/-2)
  • hermes_agent/backends/docker.py (renamed, +6/-6)
  • hermes_agent/backends/file_sync.py (renamed, +3/-3)
  • hermes_agent/backends/local.py (renamed, +8/-8)
  • hermes_agent/backends/managed_modal.py (renamed, +3/-3)
  • hermes_agent/backends/modal.py (renamed, +4/-4)
  • hermes_agent/backends/modal_utils.py (renamed, +3/-3)
  • hermes_agent/backends/singularity.py (renamed, +4/-4)
  • hermes_agent/backends/ssh.py (renamed, +2/-2)
  • hermes_agent/cli/__init__.py (renamed, +0/-0)
  • hermes_agent/cli/auth/__init__.py (added, +0/-0)
  • hermes_agent/cli/auth/auth.py (renamed, +28/-24)
  • hermes_agent/cli/auth/commands.py (renamed, +13/-13)
  • hermes_agent/cli/auth/copilot.py (renamed, +0/-0)
  • hermes_agent/cli/auth/dingtalk.py (renamed, +3/-3)
  • hermes_agent/cli/backup.py (renamed, +2/-2)
  • hermes_agent/cli/claw.py (renamed, +5/-5)
  • hermes_agent/cli/clipboard.py (renamed, +8/-5)
  • hermes_agent/cli/commands.py (renamed, +12/-12)
  • hermes_agent/cli/config.py (renamed, +374/-23)
  • hermes_agent/cli/cron.py (renamed, +9/-10)
  • hermes_agent/cli/debug.py (renamed, +4/-4)
  • hermes_agent/cli/default_soul.py (renamed, +0/-0)
  • hermes_agent/cli/doctor.py (renamed, +26/-28)
  • hermes_agent/cli/dump.py (renamed, +7/-7)
  • hermes_agent/cli/env_loader.py (renamed, +1/-1)
  • hermes_agent/cli/gateway.py (renamed, +44/-32)
  • hermes_agent/cli/hooks.py (renamed, +8/-8)
  • hermes_agent/cli/logs.py (renamed, +2/-2)
  • hermes_agent/cli/main.py (renamed, +167/-171)
  • hermes_agent/cli/mcp_config.py (renamed, +11/-11)
  • hermes_agent/cli/memory_setup.py (renamed, +7/-7)
  • hermes_agent/cli/models/__init__.py (added, +0/-0)
  • hermes_agent/cli/models/codex.py (renamed, +0/-0)
  • hermes_agent/cli/models/models.py (renamed, +23/-23)
  • hermes_agent/cli/models/normalize.py (renamed, +2/-2)
  • hermes_agent/cli/models/switch.py (renamed, +20/-20)
  • hermes_agent/cli/nous_subscription.py (renamed, +8/-8)
  • hermes_agent/cli/pairing.py (renamed, +1/-1)
  • hermes_agent/cli/platforms.py (renamed, +0/-0)
  • hermes_agent/cli/plugins.py (renamed, +13/-13)
  • hermes_agent/cli/plugins_cmd.py (renamed, +22/-22)
  • hermes_agent/cli/profiles.py (renamed, +9/-9)
  • hermes_agent/cli/providers.py (renamed, +3/-3)
  • hermes_agent/cli/repl.py (renamed, +205/-177)
  • hermes_agent/cli/runtime_provider.py (renamed, +12/-12)
  • hermes_agent/cli/setup_wizard.py (renamed, +44/-44)
  • hermes_agent/cli/skills_config.py (renamed, +6/-6)
  • hermes_agent/cli/skills_hub.py (renamed, +30/-30)
  • hermes_agent/cli/timeouts.py (renamed, +2/-2)

PR #14928: refactor: move agent/ and leaf modules to hermes_agent/

Description (problem / solution / changelog)

Summary

Closes #14591.

This is PR 6, the final phase of the codebase restructuring plan to move all loose modules into a hermes_agent/ root package.

Changes

  • Moved agent/ to hermes_agent/agent/.
  • Moved run_agent.py, cli.py, and rl_cli.py to hermes_agent/.
  • Created hermes_agent/providers/ and moved remaining top-level utilities: hermes_constants.py, hermes_logging.py, hermes_state.py, hermes_time.py, trajectory_compressor.py, and utils.py.
  • Rewrote all remaining imports project-wide to point to hermes_agent.agent.*, hermes_agent.providers.*, and hermes_agent.*.
  • Updated pyproject.toml to completely remove obsolete top-level package paths.

This branch is built on top of PR 5 (#14926) and targets main. The hermes_agent refactoring is now complete!

Changed files

  • AGENTS.md (modified, +3/-3)
  • CONTRIBUTING.md (modified, +1/-1)
  • acp_adapter/auth.py (modified, +1/-1)
  • acp_adapter/entry.py (modified, +2/-2)
  • acp_adapter/events.py (modified, +1/-1)
  • acp_adapter/server.py (modified, +10/-10)
  • acp_adapter/session.py (modified, +7/-7)
  • acp_adapter/tools.py (modified, +2/-2)
  • environments/agent_loop.py (modified, +5/-5)
  • environments/benchmarks/terminalbench_2/terminalbench2_env.py (modified, +3/-3)
  • environments/benchmarks/yc_bench/yc_bench_env.py (modified, +2/-2)
  • environments/hermes_base_env.py (modified, +4/-4)
  • environments/tool_context.py (modified, +4/-4)
  • hermes_agent/__init__.py (added, +0/-0)
  • hermes_agent/agent/__init__.py (renamed, +0/-0)
  • hermes_agent/agent/account_usage.py (renamed, +3/-3)
  • hermes_agent/agent/anthropic_adapter.py (renamed, +2/-2)
  • hermes_agent/agent/auxiliary_client.py (renamed, +38/-38)
  • hermes_agent/agent/bedrock_adapter.py (renamed, +0/-0)
  • hermes_agent/agent/codex_responses_adapter.py (renamed, +1/-1)
  • hermes_agent/agent/context_compressor.py (renamed, +4/-4)
  • hermes_agent/agent/context_engine.py (renamed, +0/-0)
  • hermes_agent/agent/context_references.py (renamed, +3/-3)
  • hermes_agent/agent/copilot_acp_client.py (renamed, +2/-2)
  • hermes_agent/agent/credential_pool.py (renamed, +17/-17)
  • hermes_agent/agent/credential_sources.py (renamed, +5/-5)
  • hermes_agent/agent/display.py (renamed, +5/-5)
  • hermes_agent/agent/error_classifier.py (renamed, +0/-0)
  • hermes_agent/agent/file_safety.py (renamed, +1/-1)
  • hermes_agent/agent/gemini_cloudcode_adapter.py (renamed, +3/-3)
  • hermes_agent/agent/gemini_native_adapter.py (renamed, +1/-1)
  • hermes_agent/agent/gemini_schema.py (renamed, +0/-0)
  • hermes_agent/agent/google_code_assist.py (renamed, +0/-0)
  • hermes_agent/agent/google_oauth.py (renamed, +1/-1)
  • hermes_agent/agent/image_gen_provider.py (renamed, +1/-1)
  • hermes_agent/agent/image_gen_registry.py (renamed, +2/-2)
  • hermes_agent/agent/insights.py (renamed, +2/-2)
  • hermes_agent/agent/manual_compression_feedback.py (renamed, +0/-0)
  • hermes_agent/agent/memory_manager.py (renamed, +3/-3)
  • hermes_agent/agent/memory_provider.py (renamed, +0/-0)
  • hermes_agent/agent/model_metadata.py (renamed, +5/-5)
  • hermes_agent/agent/models_dev.py (renamed, +3/-3)
  • hermes_agent/agent/moonshot_schema.py (renamed, +0/-0)
  • hermes_agent/agent/nous_rate_guard.py (renamed, +1/-1)
  • hermes_agent/agent/prompt_builder.py (renamed, +7/-7)
  • hermes_agent/agent/prompt_caching.py (renamed, +0/-0)
  • hermes_agent/agent/rate_limit_tracker.py (renamed, +0/-0)
  • hermes_agent/agent/redact.py (renamed, +0/-0)
  • hermes_agent/agent/retry_utils.py (renamed, +0/-0)
  • hermes_agent/agent/shell_hooks.py (renamed, +3/-3)
  • hermes_agent/agent/skill_commands.py (renamed, +7/-7)
  • hermes_agent/agent/skill_utils.py (renamed, +2/-2)
  • hermes_agent/agent/subdirectory_hints.py (renamed, +1/-1)
  • hermes_agent/agent/title_generator.py (renamed, +1/-1)
  • hermes_agent/agent/trajectory.py (renamed, +0/-0)
  • hermes_agent/agent/transports/__init__.py (renamed, +6/-6)
  • hermes_agent/agent/transports/anthropic.py (renamed, +8/-8)
  • hermes_agent/agent/transports/base.py (renamed, +1/-1)
  • hermes_agent/agent/transports/bedrock.py (renamed, +7/-7)
  • hermes_agent/agent/transports/chat_completions.py (renamed, +5/-5)
  • hermes_agent/agent/transports/codex.py (renamed, +9/-9)
  • hermes_agent/agent/transports/types.py (renamed, +0/-0)
  • hermes_agent/agent/usage_pricing.py (renamed, +2/-2)
  • hermes_agent/backends/__init__.py (added, +0/-0)
  • hermes_agent/backends/batch_runner.py (renamed, +6/-6)
  • hermes_agent/backends/mcp_serve.py (renamed, +5/-5)
  • hermes_agent/backends/mini_swe_runner.py (renamed, +5/-5)
  • hermes_agent/backends/model_tools.py (renamed, +13/-13)
  • hermes_agent/backends/toolset_distributions.py (renamed, +2/-2)
  • hermes_agent/backends/toolsets.py (renamed, +4/-4)
  • hermes_agent/cli.py (renamed, +166/-166)
  • hermes_agent/cli/__init__.py (renamed, +0/-0)
  • hermes_agent/cli/auth.py (renamed, +18/-18)
  • hermes_agent/cli/auth_commands.py (renamed, +13/-13)
  • hermes_agent/cli/backup.py (renamed, +2/-2)
  • hermes_agent/cli/banner.py (renamed, +11/-11)
  • hermes_agent/cli/callbacks.py (renamed, +5/-5)
  • hermes_agent/cli/claw.py (renamed, +4/-4)
  • hermes_agent/cli/cli_output.py (renamed, +1/-1)
  • hermes_agent/cli/clipboard.py (renamed, +1/-1)
  • hermes_agent/cli/codex_models.py (renamed, +0/-0)
  • hermes_agent/cli/colors.py (renamed, +0/-0)
  • hermes_agent/cli/commands.py (renamed, +13/-13)
  • hermes_agent/cli/completion.py (renamed, +0/-0)
  • hermes_agent/cli/config.py (renamed, +10/-10)
  • hermes_agent/cli/copilot_auth.py (renamed, +0/-0)
  • hermes_agent/cli/cron.py (renamed, +8/-8)
  • hermes_agent/cli/curses_ui.py (renamed, +1/-1)
  • hermes_agent/cli/debug.py (renamed, +3/-3)
  • hermes_agent/cli/default_soul.py (renamed, +0/-0)
  • hermes_agent/cli/dingtalk_auth.py (renamed, +1/-1)
  • hermes_agent/cli/doctor.py (renamed, +26/-26)
  • hermes_agent/cli/dump.py (renamed, +6/-6)
  • hermes_agent/cli/env_loader.py (renamed, +1/-1)
  • hermes_agent/cli/gateway.py (renamed, +28/-28)
  • hermes_agent/cli/hooks.py (renamed, +8/-8)
  • hermes_agent/cli/logs.py (renamed, +2/-2)
  • hermes_agent/cli/main.py (renamed, +167/-167)
  • hermes_agent/cli/mcp_config.py (renamed, +11/-11)
  • hermes_agent/cli/memory_setup.py (renamed, +7/-7)

Code Example

[project.scripts]
hermes = "hermes_agent.cli.main:main"
hermes-agent = "hermes_agent.agent.loop:main"
hermes-acp = "hermes_agent.acp.entry:main"
hermes-skills-sync = "hermes_agent.tools.skills.sync:main"

[tool.setuptools.packages.find]
include = ["hermes_agent", "hermes_agent.*", "tui_gateway", "tui_gateway.*"]

---

run_agent.py, cli.py, hermes_constants.py, hermes_state.py,
hermes_logging.py, hermes_time.py, utils.py, agent/, tools/

---

rg "^from (agent|run_agent|hermes_constants|hermes_state|hermes_logging|hermes_time|utils)[\. ]" --type py
rg "^import (agent|run_agent|hermes_constants|hermes_state|hermes_logging|hermes_time|utils)\b" --type py
pytest
hermes --help && hermes-agent --help && hermes-acp --help
RAW_BUFFERClick to expand / collapse

Parent: #14182 Depends on: #14590 (PR 5)

Goal

The final move PR. Moves the agent core, extracts providers from agent/transports/ + adapter files, and relocates the 6 leaf modules that everything imports. After this PR, no Python source lives outside hermes_agent/ (except tui_gateway/, environments/, and tests/).

What moves (~59 files)

Providers (extracted from agent/)

  • agent/transports/*.pyhermes_agent/providers/*.py (7 files)
  • agent/*_adapter.pyhermes_agent/providers/*.py (6 files)
  • Provider infrastructure (credentials, pricing, rate limiting, etc.) → hermes_agent/providers/ (12 files)

Agent core

  • agent/*.pyhermes_agent/agent/*.py (flat files stay flat)
  • agent/context_engine.pyhermes_agent/agent/context/engine.py
  • agent/context_compressor.pyhermes_agent/agent/context/compressor.py
  • agent/context_references.pyhermes_agent/agent/context/references.py
  • agent/memory_manager.pyhermes_agent/agent/memory/manager.py
  • agent/memory_provider.pyhermes_agent/agent/memory/provider.py
  • agent/image_gen_*.pyhermes_agent/agent/image_gen/*.py

Leaf modules

  • run_agent.pyhermes_agent/agent/loop.py
  • hermes_constants.pyhermes_agent/constants.py
  • hermes_state.pyhermes_agent/state.py
  • hermes_logging.pyhermes_agent/logging.py
  • hermes_time.pyhermes_agent/time.py
  • utils.pyhermes_agent/utils.py

__init__.py re-exports (included in this PR)

Re-exports for: hermes_agent/ (top-level), agent/, agent/context/, agent/memory/, agent/image_gen/, providers/

Also UPDATES earlier empty __init__.py files from PRs 1-3: acp/, cron/, gateway/

Known gotchas

  • Widest fan-out. ~265 prod refs for agent, ~330 for leaf modules — rewrites touch every previously-moved package.
  • Transport discovery: _discover_transports() must scan hermes_agent/providers/*_transport.py.
  • Logger COMPONENT_PREFIXES: Update all prefixes in hermes_agent/logging.py.
  • 4 test files with dynamic plugin code: String-based old-style imports in write_text() calls (see manifest for exact locations).
  • sys.path hacks: Strip from all remaining production files (~20+) and test files (~20).
  • tests/conftest.py: Replace sys.path hack with ImportError guard.
  • logging.py and time.py shadow stdlib names: Safe with absolute imports but worth noting.

pyproject.toml — final form

[project.scripts]
hermes = "hermes_agent.cli.main:main"
hermes-agent = "hermes_agent.agent.loop:main"
hermes-acp = "hermes_agent.acp.entry:main"
hermes-skills-sync = "hermes_agent.tools.skills.sync:main"

[tool.setuptools.packages.find]
include = ["hermes_agent", "hermes_agent.*", "tui_gateway", "tui_gateway.*"]

Delete after moves

run_agent.py, cli.py, hermes_constants.py, hermes_state.py,
hermes_logging.py, hermes_time.py, utils.py, agent/, tools/

Verification

rg "^from (agent|run_agent|hermes_constants|hermes_state|hermes_logging|hermes_time|utils)[\. ]" --type py
rg "^import (agent|run_agent|hermes_constants|hermes_state|hermes_logging|hermes_time|utils)\b" --type py
pytest
hermes --help && hermes-agent --help && hermes-acp --help

extent analysis

TL;DR

The final move PR requires careful updates to imports, re-exports, and configurations to ensure a smooth transition of the agent core and providers to the hermes_agent/ directory.

Guidance

  • Review and update all imports in the affected files to reflect the new directory structure, paying attention to the moved providers, agent core, and leaf modules.
  • Verify that the __init__.py re-exports are correct and update the earlier empty files from PRs 1-3.
  • Check the pyproject.toml file for the final form and ensure that the scripts and packages are correctly configured.
  • Run the provided verification commands to ensure that all imports are updated and the code is working as expected.

Example

No code snippet is provided as the issue is more related to directory structure and import updates.

Notes

The issue mentions several known gotchas, such as transport discovery, logger component prefixes, and sys.path hacks, which should be carefully addressed during the update process.

Recommendation

Apply the workaround by carefully reviewing and updating all imports, re-exports, and configurations to ensure a smooth transition to the new directory structure. This is necessary to avoid any potential issues or errors that may arise from the changes.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING