feat: modular setup wizard with section subcommands and tool-first UX#567
Closed
feat: modular setup wizard with section subcommands and tool-first UX#567
Conversation
Restructure the monolithic hermes setup wizard into independently-runnable sections with a category-first tool configuration experience. Changes: - Break setup into 5 sections: model, terminal, gateway, tools, agent - Each section is a standalone function, runnable individually via 'hermes setup model', 'hermes setup terminal', etc. - Returning users get a menu: Quick Setup / Full Setup / individual sections - First-time users get a guided walkthrough of all sections Tool Configuration UX overhaul: - Replace flat API key checklist with category-first approach - Show tool types (TTS, Web Search, Image Gen, etc.) as top-level items - Within each category, let users pick a provider: - TTS: Microsoft Edge (Free), OpenAI, ElevenLabs - Web: Firecrawl Cloud, Firecrawl Self-Hosted - Image Gen: FAL.ai - Browser: Browserbase - Smart Home: Home Assistant - RL Training: Tinker/Atropos - GitHub: Personal Access Token - Shows configured status on each tool and provider - Only prompts for API keys after provider selection Also: - Add section argument to setup argparse parser in main.py - Update summary to show new section commands - Add self-hosted Firecrawl and Home Assistant to tool setup - All 2013 tests pass
simple_term_menu miscalculates string widths when labels contain ANSI escape codes (from color()) or em dashes, causing duplicated and garbled lines on arrow key navigation. Replace color() status indicators with plain text [configured]/[active] and em dashes with regular dashes in all prompt_choice/prompt_checklist labels.
Both 'hermes tools' and 'hermes setup tools' now use the same unified flow in tools_config.py: 1. Select platform (CLI, Telegram, Discord, etc.) 2. Toggle all 18 toolsets on/off in checklist 3. Newly enabled tools that need API keys → provider-aware config (e.g., TTS shows Edge/OpenAI/ElevenLabs picker) 4. Already-configured tools that stay enabled → silent, no prompts 5. Menu option: 'Reconfigure an existing tool' for updating providers or API keys on tools that are already set up Key changes: - Move TOOL_CATEGORIES, provider config, and post-setup hooks from setup.py to tools_config.py - Replace flat _check_and_prompt_requirements() with provider-aware _configure_toolset() that uses TOOL_CATEGORIES - Add _reconfigure_tool() flow for updating existing configs - setup.py's setup_tools() now delegates to tools_command() - tools_command() menu adds 'Reconfigure' option alongside platforms - Only prompt for API keys on tools that are NEWLY toggled on AND don't already have keys configured No breaking changes. All 2013 tests pass.
Contributor
Author
|
Merged in commit 99bd69b. Modular setup wizard with 5 standalone sections ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restructures the monolithic
hermes setupwizard into independently-runnable sections with a category-first tool configuration experience.What Changed
Modular Section Architecture
The wizard is now broken into 5 standalone sections, each runnable independently:
Returning User Menu
Existing users now see a menu instead of the flat Quick/Full/Skip choice:
Tool-First UX (the big change)
Before: Flat checklist showing providers as separate tools:
After: Category-first approach — pick a tool type, then choose a provider:
New Tools Added to Setup
7 Tool Categories with Providers:
Files Changed
hermes_cli/setup.py— Full restructure (+1005, -820)hermes_cli/main.py— Addsectionpositional arg to setup parserTesting