mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-09 08:21:50 +00:00
Phase 2 of the god-file decomposition plan. main()'s argparse tree is 179 inline add_parser calls in one 3,297-line function. This establishes the hermes_cli/subcommands/ package and extracts the first group (cron) as the proof-of-pattern: - hermes_cli/subcommands/_shared.py: shared parser helpers (add_accept_hooks_flag), re-exported from main.py for backwards compat. - hermes_cli/subcommands/cron.py: build_cron_parser(subparsers, cmd_cron=...). Handler injected so the module never imports main (cycle avoidance). - main()'s ~155-line inline cron block becomes one build_cron_parser() call. Behavior-neutral: 'hermes cron create --help' output is byte-identical to origin/main. main() 3297 -> 3143 LOC. Validation: tests/hermes_cli/ 6466 passed / 0 failed under per-file process isolation; new test_subcommands_cron.py covers subactions, aliases, options, no-agent tristate, injected dispatch, and --accept-hooks.
29 lines
943 B
Python
29 lines
943 B
Python
"""Shared parser helpers used across multiple CLI subcommand builders.
|
|
|
|
These were module-level helpers in ``hermes_cli/main.py``. They are pulled
|
|
into a neutral module so both ``main.py`` and every
|
|
``hermes_cli/subcommands/<group>.py`` builder can import them without an
|
|
import cycle. ``main.py`` re-exports them for backwards compatibility, so
|
|
existing references keep working.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
|
|
|
|
def add_accept_hooks_flag(parser: argparse.ArgumentParser) -> None:
|
|
"""Attach the ``--accept-hooks`` flag.
|
|
|
|
Shared across every agent subparser so the flag works regardless of CLI
|
|
position.
|
|
"""
|
|
parser.add_argument(
|
|
"--accept-hooks",
|
|
action="store_true",
|
|
default=argparse.SUPPRESS,
|
|
help=(
|
|
"Auto-approve unseen shell hooks without a TTY prompt "
|
|
"(equivalent to HERMES_ACCEPT_HOOKS=1 / hooks_auto_accept: true)."
|
|
),
|
|
)
|