f75bfcda51
* Add onboarding wizard with style and validation components - Introduced `style.py` for shared visual elements used in the onboarding wizard. - Created `validators.py` for input validation, including integer and choice validators, and API key validation functions for various providers. - Implemented `wizard.py` as the entry point for the onboarding process, managing user prompts and configuration steps. - Added progress rendering and autosave functionality to enhance user experience during the onboarding process. * feat(onboarding): enhance validation and configuration for onboarding wizard - Added validation for UI backends, workspace modes, and providers in the onboarding command. - Updated channel definitions to include secret field handling for sensitive tokens. - Improved user prompts for required fields, ensuring sensitive data is masked. - Introduced constants for valid providers, UI backends, and workspace modes to maintain consistency. - Implemented tests to ensure alignment between constants and interactive choices in onboarding steps. * feat(onboarding): improve WeChat account ID prompt and validation for newly enabled channels * feat(onboarding): enhance WeChat backend credential prompts and validation * feat(onboarding): refine WeChat backend credential prompts for wecom and wechatmp * Refactor onboarding package for improved structure and clarity - Simplified the onboarding package by removing unnecessary re-exports and consolidating public API to only include `run_onboard`. - Updated `install_back_keys` to `install_navigation_keys` for clarity and consistency in the prompter module. - Enhanced the `NonInteractivePrompter` class to support strict mode, allowing for better handling of non-interactive prompts. - Adjusted the onboarding steps to utilize the new navigation keys installation method. - Improved the `run_onboard` function to handle section implications based on user flags, enhancing the onboarding experience. - Updated tests to reflect changes in imports and ensure compatibility with the new structure. * feat(onboarding): enhance validation logic for non-interactive prompts * refactor(onboarding): streamline onboarding module structure and enhance validation error handling * refactor(onboarding): enhance config revert logic to preserve original file state * refactor(onboarding): enhance tavily key validation and error handling in onboarding process
70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""Typer application objects — no intra-package imports to avoid circular deps."""
|
|
|
|
import typer # type: ignore[import-untyped]
|
|
|
|
app = typer.Typer(
|
|
no_args_is_help=False,
|
|
add_completion=False,
|
|
context_settings={"help_option_names": ["-h", "--help"]},
|
|
)
|
|
|
|
# Config subcommand group
|
|
config_app = typer.Typer(
|
|
help="Configuration management commands", invoke_without_command=True
|
|
)
|
|
app.add_typer(config_app, name="config")
|
|
|
|
# MCP subcommand group
|
|
_MCP_HELP = """\
|
|
Configure and manage MCP servers
|
|
|
|
Examples:
|
|
# Add a local MCP server (stdio auto-detected):
|
|
EvoSci mcp add local-server python -- /path/to/server.py
|
|
|
|
# Add an npx-based server:
|
|
EvoSci mcp add sequential-thinking npx -- -y @modelcontextprotocol/server-sequential-thinking
|
|
|
|
# Add an HTTP server (http auto-detected from URL):
|
|
EvoSci mcp add docs-langchain https://docs.langchain.com/mcp
|
|
|
|
# Add a stdio server with env vars (hardcoded):
|
|
EvoSci mcp add my-server node --env API_KEY=xxx -- server.js
|
|
|
|
# Add a server with runtime env ref (resolved from .env at startup):
|
|
EvoSci mcp add brave-search npx --env-ref BRAVE_API_KEY -- -y @modelcontextprotocol/server-brave-search
|
|
|
|
# Expose to a specific sub-agent (e.g. research-agent):
|
|
EvoSci mcp add brave-search npx --env-ref BRAVE_API_KEY -e research-agent -- -y @modelcontextprotocol/server-brave-search
|
|
|
|
# Expose to multiple agents:
|
|
EvoSci mcp add local-server python -e main,research-agent,code-agent -- /path/to/server.py
|
|
|
|
# Explicit transport override:
|
|
EvoSci mcp add my-sse https://example.com/sse --transport sse
|
|
|
|
Sub-agents (-e): planner-agent | research-agent | code-agent | debug-agent | data-analysis-agent | writing-agent
|
|
"""
|
|
mcp_app = typer.Typer(help=_MCP_HELP, invoke_without_command=True)
|
|
app.add_typer(mcp_app, name="mcp")
|
|
|
|
# Channel subcommand group
|
|
channel_app = typer.Typer(help="Channel management commands")
|
|
app.add_typer(channel_app, name="channel")
|
|
|
|
# Sessions subcommand group — diagnostic tools for the LangGraph checkpoint DB
|
|
sessions_app = typer.Typer(
|
|
help="Inspect and manage the sessions DB (~/.evoscientist/sessions.db)",
|
|
invoke_without_command=True,
|
|
)
|
|
app.add_typer(sessions_app, name="sessions")
|
|
|
|
# Configure subcommand group — re-run a single onboarding section.
|
|
configure_app = typer.Typer(
|
|
help=(
|
|
"Re-run one onboarding section without going through the full wizard.\n"
|
|
"Example: EvoSci configure provider"
|
|
),
|
|
)
|
|
app.add_typer(configure_app, name="configure")
|