Skip to content

feat(cli): add /busy slash command for busy input mode#11782

Closed
alexg0bot wants to merge 1 commit into
NousResearch:mainfrom
alexg0bot:julia/upstream-busy-input-mode-clean
Closed

feat(cli): add /busy slash command for busy input mode#11782
alexg0bot wants to merge 1 commit into
NousResearch:mainfrom
alexg0bot:julia/upstream-busy-input-mode-clean

Conversation

@alexg0bot

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a dedicated /busy CLI slash command for controlling what Enter does while Hermes is already working.

This makes the existing busy-input behavior discoverable and controllable at runtime without editing config files by hand. Users can inspect the current mode, switch Enter to queue the next turn, or switch back to interrupt mode directly from the CLI.

This approach fits the current CLI architecture because it uses the existing slash-command registry, persists through the existing save_config_value() path, and keeps the feature single-purpose instead of burying it in a broader settings flow.

Related Issue

Fixes #6898

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • cli.py: add /busy handling with queue, interrupt, and status modes
  • hermes_cli/commands.py: register /busy in the command registry with documented subcommands
  • tests/cli/test_busy_input_mode_command.py: add focused coverage for handler behavior and registry metadata
  • website/docs/user-guide/cli.md: document runtime usage for /busy

How to Test

  1. Start Hermes CLI and run /busy status to confirm the current mode is reported.
  2. Run /busy queue, then /busy status, and confirm the mode switches to queue and reports the queued-input behavior.
  3. Run /busy interrupt, then /busy nonsense, and confirm interrupt mode is restored and invalid input shows usage help.
  4. Run pytest -n0 tests/cli/test_busy_input_mode_command.py -q.
  5. Run pytest -n0 tests/hermes_cli/test_commands.py -q.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 15.x

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

  • pytest -n0 tests/cli/test_busy_input_mode_command.py -q6 passed
  • pytest -n0 tests/hermes_cli/test_commands.py -q108 passed

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard labels Apr 24, 2026
@teknium1

Copy link
Copy Markdown
Contributor

Merged via #15382 — your commit was cherry-picked onto current main with your authorship preserved in git log. Thanks @alexg0bot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(cli): Cursor/ClaudeCode-style busy-input queue with blank-submit gesture

3 participants