plano/cli
Adil Hafeez 5774452195 Refactor config_generator into modular, testable components
Break the 507-line monolithic validate_and_render_schema() into focused
modules with pure validation functions, proper error handling, and clean
I/O separation:

- config_providers.py: provider constants, ConfigValidationError, unified
  URL parsing (replaces 3 different inline implementations)
- config_validator.py: 11 pure validation functions (no I/O, no print/exit)
- config_generator.py: thin 146-line I/O orchestrator, reads files once
  (was twice), uses logging instead of print()

Also cleans up module responsibilities:
- Move stream_access_logs from utils.py to docker_cli.py (Docker operation)
- Deduplicate llm_providers->model_providers migration
- Fix "Model alias 2 -" debug artifact in error message
- Update docker-compose.dev.yaml volume mounts for new files
- Rewrite tests: 53 tests calling pure functions directly (no mock_open
  chains), up from 10 brittle mock-dependent tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 05:16:34 +00:00
..
planoai Refactor config_generator into modular, testable components 2026-02-12 05:16:34 +00:00
test Refactor config_generator into modular, testable components 2026-02-12 05:16:34 +00:00
build_cli.sh use uv instead of poetry (#663) 2025-12-26 11:21:42 -08:00
pyproject.toml release 0.4.6 (#740) 2026-02-10 21:00:29 -08:00
README.md add instructions about uv build/sync in cli (#675) 2026-01-05 13:46:58 -08:00
uv.lock Introduce brand new CLI experience with tracing and quickstart (#724) 2026-02-10 13:17:43 -08:00

plano CLI - Local Development

This guide will walk you through setting up the plano CLI for local development using uv.

Install uv

First, install the uv package manager. This is required for managing dependencies and running the development version of planoai.

On macOS and Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

On Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Setup

  1. Install dependencies

    In the cli directory, run:

    uv sync
    

    This will create a virtual environment in .venv and install all dependencies from pyproject.toml.

  2. Install the CLI tool globally (optional)

    To install planoai as a global tool on your system:

    uv tool install --editable .
    

    This installs planoai globally in editable mode, allowing you to run planoai commands from anywhere while still using the source code from this directory. Any changes you make to the code will be reflected immediately.

  3. Run plano commands

    Use uv run to execute plano commands with the development version:

    uv run planoai build
    

    Or, if you installed globally with uv tool install .:

    planoai build
    

    Note: uv run automatically uses the virtual environment - no activation needed.

Development Workflow

Build plano:

uv run planoai build

View logs:

uv run planoai logs --follow

Run other plano commands:

uv run planoai <command> [options]

Optional: Manual Virtual Environment Activation

While uv run handles the virtual environment automatically, you can activate it manually if needed:

source .venv/bin/activate
planoai build  # No need for 'uv run' when activated

Note: For end-user installation instructions, see the plano documentation.