Commit Graph

8 Commits

Author SHA1 Message Date
Teknium 3494f7cf23 refactor(hermes_cli): AST-neutral closer hugging across r3-17 slice files 2026-09-02 23:58:31 -07:00
Teknium 670b974bed refactor(hermes_cli): compact mixin docstrings/comments by hand (keep every WHY), drop intra-body blank padding 2026-09-02 21:30:29 -07:00
Teknium 165bcb705d refactor(hermes_cli): collapse announce-gated wake prints, provider-family normalize helper, stream boundary predicate 2026-09-02 21:13:10 -07:00
Teknium c95a56be06 refactor(hermes_cli): fold picker/typed /model commit into _commit_model_switch + shared switch/dispatch helpers 2026-09-02 21:06:11 -07:00
Teknium 5ddca91a31 refactor(hermes_cli): AST-neutral bracket hug/pack layout pass on g5-model files 2026-09-02 20:56:03 -07:00
Teknium b39f0337f1 refactor(hermes_cli): unify /model switch commit path (summary, global persist, preflight, runtime-field snapshot) 2026-09-02 20:26:45 -07:00
Teknium 79aeb22886 refactor(cli): unify duplicated model-switch staging and last-assistant-text blocks
cli_model_switch_mixin: the identical snapshot->stage->agent.switch_model->rollback
block in _apply_model_switch_result and _confirm_and_apply_cli_model_switch (2x47
lines) -> _stage_and_swap_model(result, old_model) -> bool. cli_loops_mixin: the
identical reversed-history assistant-text extraction in the loop-tick and goal
post-turn hooks -> _last_assistant_response_text(). Four _StubCLI test doubles bind
the new helper to the real implementation.
2026-09-02 16:17:31 -07:00
Teknium eb74a00c71 refactor(cli): split HermesCLI into 10 cohesive mixins (cli.py 22,284 -> 9,150)
326 methods lifted by AST (bodies identical; ast.dump-verified) into
hermes_cli/cli_{tui,status_bar,voice,model_switch,session,stream,modal,
terminal,info,loops}_mixin.py. cli.py-internal symbols resolve via lazy
'from cli import ...' inside each method (no import cycle; patch('cli.X')
keeps working). The three 'global' writers (_skill_commands, _cli_wake_owner)
now write the cli module attribute explicitly so the origin's readers still
see them. Dropped imports left unused in cli.py; kept display_hermes_home /
build_welcome_banner as re-exports (mixins + tests resolve them via cli).
Repointed two AST change-detector tests to cli_tui_mixin.py; one test
fixture now keeps 'cli' in sys.modules across its patch.dict scope.
2026-09-02 15:42:24 -07:00