* fix(routing): auto-migrate v0.3.0 inline routing_preferences to v0.4.0 top-level Lift inline routing_preferences under each model_provider into the top-level routing_preferences list with merged models[] and bump version to v0.4.0, with a deprecation warning. Existing v0.3.0 demo configs (Claude Code, Codex, preference_based_routing, etc.) keep working unchanged. Schema flags the inline shape as deprecated but still accepts it. Docs and skills updated to canonical top-level multi-model form. * test(common): bump reference config assertion to v0.4.0 The rendered reference config was bumped to v0.4.0 when its inline routing_preferences were lifted to the top level; align the configuration deserialization test with that change. * fix(config_generator): bump version to v0.4.0 up front in migration Move the v0.3.0 -> v0.4.0 version bump to the top of migrate_inline_routing_preferences so it runs unconditionally, including for configs that already declare top-level routing_preferences at v0.3.0. Previously the bump only fired when inline migration produced entries, leaving top-level v0.3.0 configs rejected by brightstaff's v0.4.0 gate. Tests updated to cover the new behavior and to confirm we never downgrade newer versions. * fix(config_generator): gate routing_preferences migration on version < v0.4.0 Short-circuit the migration when the config already declares v0.4.0 or newer. Anything at v0.4.0+ is assumed to be on the canonical top-level shape and is passed through untouched, including stray inline preferences (which are the author's bug to fix). Only v0.3.0 and older configs are rewritten and bumped. |
||
|---|---|---|
| .. | ||
| planoai | ||
| test | ||
| build_cli.sh | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
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
-
Install dependencies
In the cli directory, run:
uv syncThis will create a virtual environment in
.venvand install all dependencies frompyproject.toml. -
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
planoaicommands from anywhere while still using the source code from this directory. Any changes you make to the code will be reflected immediately. -
Run plano commands
Use
uv runto execute plano commands with the development version:uv run planoai buildOr, if you installed globally with
uv tool install .:planoai buildNote:
uv runautomatically 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]
CI: Keep CLI templates and demos in sync
The CLI templates in cli/planoai/templates/ are the source of truth for mapped
demo config.yaml files.
Use the sync utility to write mapped demo configs from templates:
uv run python -m planoai.template_sync
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.