hermes-agent/tests/cli
teknium1 370cc9394b
feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs
Follow-ups on the #53969 salvage:

- hermes_cli/side_question.py: shared compose_side_prompt() used by all
  three surfaces; treats the parent history as read-only by construction.
- gateway: /side now uses the shared composer and registers its task in
  _background_tasks with a done-callback (same lifecycle as /background,
  addressing the sweeper review note); dropped the unused
  _SIDE_BOUNDARY_PROMPT and the dead /sidereturn no-op command (with its
  /return and /closeside alias squatting).
- CLI: /side snapshots self.conversation_history into a side prompt and
  reuses the /background daemon-thread runner (new prompt_override /
  display_prompt / task_label parameters); dispatch wired in cli.py.
- TUI: new prompt.side RPC (history snapshot under history_lock, throwaway
  AIAgent, background.complete delivery) + /side slash command in ui-tui.
- No /btw alias: /btw is a long-standing alias of /background
  (hermes_cli/commands.py) — /side ships alias-free and a registry test
  pins /btw -> background.
- tests: tests/gateway/test_side_command.py (19) covering the byte-identical
  main-history invariant, empty-history, no-session-entry, task lifecycle
  tracking, prompt composition, and registry; tests/cli/test_cli_side_command.py
  (7) covering the CLI surface and dispatch.
- docs: /side rows in the CLI and messaging tables of
  website/docs/reference/slash-commands.md + cross-surface list.
2026-07-26 16:17:57 -07:00
..
__init__.py
…
test_bracketed_paste_timeout.py
…
test_branch_command.py test: update mock assertions for conversation_history kwarg 2026-07-22 10:00:39 +05:30
test_busy_input_mode_command.py
…
test_chat_q_exit_clear.py
…
test_cli_active_agent_ref_wiring.py
…
test_cli_approval_ui.py
…
test_cli_async_delegation_delivery.py
…
test_cli_background_status_indicator.py
…
test_cli_background_tui_refresh.py
…
test_cli_bracketed_paste_sanitizer.py
…
test_cli_browser_connect.py
…
test_cli_codex_context_reference.py fix(context): scope Codex catalogue cache by credential 2026-07-21 04:29:34 -07:00
test_cli_context_warning.py
…
test_cli_copy_command.py
…
test_cli_delegate_background_notice.py
…
test_cli_extension_hooks.py
…
test_cli_external_editor.py fix(cli,tui): recall real paste content on up-arrow 2026-07-20 23:23:40 -05:00
test_cli_file_drop.py
…
test_cli_force_redraw.py
…
test_cli_goal_interrupt.py fix: migrate CLI kanban gate + remaining mocks to 5-value judge contract 2026-07-20 05:38:25 -07:00
test_cli_image_command.py
…
test_cli_init.py feat: raise default tool-calling iteration limit from 90 to 500 2026-07-26 12:54:45 -07:00
test_cli_insights_command.py
…
test_cli_interrupt_ack_race.py
…
test_cli_interrupt_drain_regression.py
…
test_cli_interrupt_subagent.py
…
test_cli_light_mode.py
…
test_cli_loading_indicator.py
…
test_cli_markdown_rendering.py
…
test_cli_mcp_config_watch.py fix(mcp): move auto-reload opt-out to top-level mcp: section + regression tests 2026-07-20 00:41:05 -07:00
test_cli_new_session.py
…
test_cli_pet_pane.py
…
test_cli_prefix_matching.py
…
test_cli_preloaded_skills.py
…
test_cli_provider_resolution.py test: cover custom endpoint key storage and model-list persistence 2026-07-24 21:12:59 -05:00
test_cli_reload_skills.py
…
test_cli_resume_command.py fix(timeline): persist typed display events (#69771) 2026-07-23 14:46:24 -04:00
test_cli_retry.py
…
test_cli_save_config_value.py
…
test_cli_secret_capture.py
…
test_cli_shift_enter_newline.py
…
test_cli_shutdown_memory_messages.py
…
test_cli_side_command.py feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs 2026-07-26 16:17:57 -07:00
test_cli_skin_integration.py
…
test_cli_status_bar.py
…
test_cli_status_command.py Reapply "Merge pull request #30179 from NousResearch/feat/iron-proxy" 2026-07-24 09:49:00 -07:00
test_cli_steer_busy_path.py
…
test_cli_terminal_response_sanitizer.py
…
test_cli_terminal_shortcuts.py
…
test_cli_tools_command.py
…
test_cli_user_message_preview.py
…
test_cli_yolo_toggle.py
…
test_compress_flags.py
…
test_compress_focus.py
…
test_compress_here.py fix: prevent stale lock-skip signal leaking between compress_context calls 2026-07-23 08:19:14 -07:00
test_compress_type_ahead.py test(cli): prove /compress type-ahead queue-drain; map contributor email 2026-07-23 07:24:46 -07:00
test_cpr_local_leak.py refactor: drop platform kwarg, fix PTY test cleanup 2026-07-21 11:18:28 +05:30
test_cprint_bg_thread.py
…
test_ctrl_enter_newline.py
…
test_cwd_env_respect.py
…
test_destructive_slash_confirm.py
…
test_destructive_slash_inline_skip_e2e.py
…
test_exit_delete_session.py
…
test_exit_summary_resume_hint.py
…
test_exit_watchdog_signal_arm.py
…
test_fast_command.py fix: session-scoped /fast + full /new reset to config defaults (#67979) 2026-07-20 03:27:22 -07:00
test_manual_compress.py fix(compress): classify unconfirmed lock-acquire failures and cover all manual-compress surfaces 2026-07-23 08:19:14 -07:00
test_moa_command.py feat(moa): add reference model toggles 2026-07-23 18:11:57 -07:00
test_partial_compress.py
…
test_personality_none.py
…
test_prefill_config.py
…
test_prepend_note_to_message.py
…
test_prompt_text_input_thread_safety.py
…
test_quick_commands.py
…
test_reasoning_command.py fix: session-scoped /fast + full /new reset to config defaults (#67979) 2026-07-20 03:27:22 -07:00
test_resume_display.py fix(timeline): persist typed display events (#69771) 2026-07-23 14:46:24 -04:00
test_resume_quiet_stderr.py
…
test_save_conversation_location.py
…
test_session_boundary_hooks.py
…
test_single_query_session_finalize.py
…
test_slash_command_interrupt.py
…
test_slash_confirm_windows.py
…
test_steer_inline_repaint_34569.py
…
test_stream_delta_think_tag.py
…
test_stream_partial_line_flush.py
…
test_surrogate_sanitization.py
…
test_terminal_interrupt_recovery.py
…
test_tool_progress_scrollback.py
…
test_tui_terminal_reset_on_exit.py
…
test_update_command.py rip out brew + pip/PyPI wheel support (#68217) 2026-07-22 16:51:01 -04:00
test_version_command.py
…
test_worktree.py perf(cli): cut `hermes -w` startup from ~14s to ~1.8s by parallelizing + caching the worktree prune 2026-07-25 16:41:52 -07:00
test_worktree_security.py fix(cli): read .worktreeinclude and .gitignore as UTF-8 in worktree setup 2026-07-24 17:10:39 -07:00
test_worktree_sync_base.py
…