From cccaca6b4216a28c85988812c9eb1c716d6b77e2 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Wed, 9 Sep 2026 02:36:18 -0700 Subject: [PATCH] fix(cli): tolerate partial prompt_toolkit stubs; map saforem2 attribution test_prompt_stash_cli.py stubs prompt_toolkit with a bare module, so the module-level 'from prompt_toolkit.enums import EditingMode' crashed every test importing cli. Import it with the same ImportError fallback as CursorShape and pass editing_mode via extra_kw only when available. --- cli.py | 12 ++++++++---- contributors/emails/saforem2@gmail.com | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 contributors/emails/saforem2@gmail.com diff --git a/cli.py b/cli.py index dff2932a66..c719595336 100644 --- a/cli.py +++ b/cli.py @@ -51,7 +51,10 @@ from agent.pet import render as pet_render from prompt_toolkit.patch_stdout import patch_stdout from prompt_toolkit.application import Application -from prompt_toolkit.enums import EditingMode +try: + from prompt_toolkit.enums import EditingMode +except ImportError: # partial prompt_toolkit stubs in tests + EditingMode = None from prompt_toolkit import print_formatted_text as _pt_print from prompt_toolkit.formatted_text import ANSI as _PT_ANSI try: @@ -3759,13 +3762,14 @@ class HermesCLI(CLIProcessNotificationsMixin, CLIAgentSetupMixin, CLICommandsMix extra_kw["output"] = _cpr_disabled_output if _STEADY_CURSOR is not None: extra_kw["cursor"] = _STEADY_CURSOR + if EditingMode is not None: + # Vi editing mode when display.vim_mode is on (toggled at runtime by /vim). + # EMACS is prompt_toolkit's own default, so non-opted-in behaviour is unchanged. + extra_kw["editing_mode"] = EditingMode.VI if self._vim_mode else EditingMode.EMACS return Application( layout=layout, key_bindings=kb, style=style, - # Vi editing mode when display.vim_mode is on (toggled at runtime by /vim). - # EMACS is prompt_toolkit's own default, so non-opted-in behaviour is unchanged. - editing_mode=EditingMode.VI if self._vim_mode else EditingMode.EMACS, full_screen=False, mouse_support=False, # 0 (default) avoids fighting terminal auto-scroll in non-fullscreen mode. diff --git a/contributors/emails/saforem2@gmail.com b/contributors/emails/saforem2@gmail.com new file mode 100644 index 0000000000..6915444ab8 --- /dev/null +++ b/contributors/emails/saforem2@gmail.com @@ -0,0 +1,2 @@ +saforem2 +# PR #97385 vim mode salvage