feat(onboard): pass CLI args as initial config to interactive wizard

--workspace and --config now work as initial defaults in interactive mode:
- The wizard starts with these values pre-filled
- Users can view and modify them in the wizard
- Final saved config reflects user's choices

This makes the CLI args more useful for interactive sessions while
still allowing full customization through the wizard.
This commit is contained in:
chengyongru 2026-03-17 22:55:08 +08:00
parent c191fb3708
commit 91863d9999
2 changed files with 16 additions and 8 deletions

View File

@ -314,8 +314,9 @@ def onboard(
from nanobot.cli.onboard_wizard import run_onboard from nanobot.cli.onboard_wizard import run_onboard
try: try:
config = run_onboard() # Pass the config with workspace override applied as initial config
save_config(config) config = run_onboard(initial_config=config)
save_config(config, config_path)
console.print(f"[green]✓[/green] Config saved at {config_path}") console.print(f"[green]✓[/green] Config saved at {config_path}")
except Exception as e: except Exception as e:
console.print(f"[red]✗[/red] Error during configuration: {e}") console.print(f"[red]✗[/red] Error during configuration: {e}")

View File

@ -938,14 +938,21 @@ def _show_summary(config: Config) -> None:
# --- Main Entry Point --- # --- Main Entry Point ---
def run_onboard() -> Config: def run_onboard(initial_config: Config | None = None) -> Config:
"""Run the interactive onboarding questionnaire.""" """Run the interactive onboarding questionnaire.
config_path = get_config_path()
if config_path.exists(): Args:
config = load_config() initial_config: Optional pre-loaded config to use as starting point.
If None, loads from config file or creates new default.
"""
if initial_config is not None:
config = initial_config
else: else:
config = Config() config_path = get_config_path()
if config_path.exists():
config = load_config()
else:
config = Config()
while True: while True:
try: try: