hermes-agent/hermes_cli
teknium1 0904bc7ea2 refactor(cli): extract 32 slash-command handlers into CLICommandsMixin (god-file Phase 4)
Lift the `_handle_*_command` cluster (2,077 LOC) out of HermesCLI into
hermes_cli/cli_commands_mixin.py; HermesCLI now inherits CLICommandsMixin so
every self.<handler> call resolves unchanged via the MRO. Behavior-neutral.

Import discipline mirrors gateway/slash_commands.py (PR #41886): neutral deps
imported at the mixin module top level; cli.py-internal helpers/constants
(_cprint, _ACCENT, save_config_value, ...) imported lazily inside each handler
via 'from cli import ...' so the mixin never imports cli at module scope.

cli.py 16215 -> 14139 LOC. One test mock repointed (cli.is_browser_debug_ready
-> hermes_cli.cli_commands_mixin.is_browser_debug_ready).
2026-06-08 02:13:07 -07:00
..
dashboard_auth
…
proxy
…
subcommands refactor(cli): promote 9 closure handlers to top-level + extract their parsers (god-file Phase 2 follow-up) 2026-06-07 22:56:23 -07:00
__init__.py
…
_parser.py
…
_subprocess_compat.py
…
auth.py
…
auth_commands.py
…
azure_detect.py
…
backup.py
…
banner.py
…
browser_connect.py
…
build_info.py
…
bundles.py
…
callbacks.py
…
checkpoints.py
…
claw.py
…
cli_commands_mixin.py refactor(cli): extract 32 slash-command handlers into CLICommandsMixin (god-file Phase 4) 2026-06-08 02:13:07 -07:00
cli_output.py
…
clipboard.py
…
codex_models.py
…
codex_runtime_plugin_migration.py
…
codex_runtime_switch.py
…
colors.py
…
commands.py
…
completion.py
…
config.py feat(onboarding): opt-in structured profile-build path on first contact (#41114) 2026-06-07 08:36:48 -07:00
container_boot.py
…
copilot_auth.py
…
cron.py
…
curator.py
…
curses_ui.py
…
dashboard_register.py
…
debug.py
…
default_soul.py
…
dep_ensure.py
…
dingtalk_auth.py
…
doctor.py
…
dump.py
…
env_loader.py
…
fallback_cmd.py
…
fallback_config.py
…
gateway.py fix(gateway): drop --replace from systemd unit templates (#41892) 2026-06-08 00:20:08 -07:00
gateway_windows.py
…
goals.py
…
gui_uninstall.py
…
hooks.py
…
inventory.py
…
kanban.py
…
kanban_db.py fix(kanban): sweep deferred scratch parent on non-scratch child completion + tests 2026-06-07 09:50:44 -07:00
kanban_decompose.py
…
kanban_diagnostics.py
…
kanban_specify.py
…
kanban_swarm.py
…
logs.py
…
main.py fix(cli): set PYTHON env for node-gyp native builds on NixOS (#40690) 2026-06-08 13:57:37 +05:30
managed_uv.py
…
mcp_catalog.py
…
mcp_config.py
…
mcp_picker.py
…
mcp_startup.py
…
memory_setup.py
…
middleware.py
…
migrate.py
…
model_catalog.py
…
model_normalize.py
…
model_switch.py
…
models.py
…
nous_account.py
…
nous_subscription.py
…
oneshot.py
…
pairing.py
…
partial_compress.py
…
platforms.py
…
plugins.py
…
plugins_cmd.py
…
portal_cli.py
…
profile_describer.py
…
profile_distribution.py fix(dist): stop USER_OWNED_EXCLUDE from filtering nested directories 2026-06-07 21:50:57 -07:00
profiles.py fix(profiles): skip 'default' in named profiles scan to prevent duplicates 2026-06-07 21:50:57 -07:00
prompt_size.py
…
providers.py
…
psutil_android.py
…
pt_input_extras.py
…
pty_bridge.py
…
relaunch.py
…
runtime_provider.py
…
secret_prompt.py
…
secrets_cli.py
…
security_advisories.py
…
security_audit.py
…
send_cmd.py
…
service_manager.py
…
session_recap.py
…
setup.py
…
skills_config.py
…
skills_hub.py fix(skills): browse shows full catalog, not first 5000 (#41413) 2026-06-07 10:15:31 -07:00
skin_engine.py
…
slack_cli.py
…
status.py
…
stdio.py
…
telegram_managed_bot.py
…
timeouts.py
…
tips.py
…
tools_config.py
…
uninstall.py
…
voice.py
…
web_server.py fix(session): follow compression continuations for transcript reads 2026-06-07 23:57:20 -07:00
webhook.py
…
xai_retirement.py
…