Skip to content

upgrade ​

The upgrade command updates your project to the latest version of agent-starter-pack using an intelligent 3-way merge. It automatically applies updates to scaffolding files while preserving your customizations.

Usage ​

bash
uvx agent-starter-pack upgrade [PROJECT_PATH] [OPTIONS]

Arguments ​

  • PROJECT_PATH (optional): Path to the project to upgrade (default: current directory)

Options ​

OptionDefaultDescription
--dry-runfalsePreview changes without applying them
--auto-approve, -yfalseAuto-apply non-conflicting changes without prompts
--debugfalseEnable debug logging

Examples ​

Basic Upgrade ​

bash
# Upgrade current project
uvx agent-starter-pack upgrade

# Upgrade a specific project
uvx agent-starter-pack upgrade /path/to/project

Preview Changes ​

bash
# See what would change without applying
uvx agent-starter-pack upgrade --dry-run

Non-Interactive Upgrade ​

bash
# Auto-approve all non-conflicting changes
uvx agent-starter-pack upgrade -y

How the 3-Way Merge Works ​

The upgrade command uses a 3-way comparison between:

  1. Your current project - The files as they exist now
  2. Old ASP template - What ASP generated at your project's version
  3. New ASP template - What ASP generates at the latest version

This enables intelligent decision-making:

Your ChangesASP ChangesResult
NoneUpdatedAuto-update - Apply ASP's changes
ModifiedNonePreserve - Keep your changes
ModifiedUpdatedConflict - Prompt for resolution
N/ANew fileAdd - Prompt to add new file
N/ARemovedRemove - Prompt to remove file

Files Always Preserved ​

The following are never modified by upgrade:

  • Agent code (e.g., app/agent.py, custom modules)
  • Configuration files (.env, secrets, local configs)

Conflict Resolution ​

When both you and ASP have modified a file, you'll be prompted:

  • (v)iew diff - See the differences between versions
  • (k)eep yours - Preserve your current version
  • (u)se new - Replace with ASP's new version
  • (s)kip - Don't change the file

Dependency Handling ​

Python Projects ​

The upgrade command intelligently merges dependencies in pyproject.toml:

  • ASP dependencies updated → Automatically update version
  • Your custom dependencies → Preserved unchanged
  • New ASP dependencies → Added to your project
  • Removed ASP dependencies → Optionally removed

Version constraints are respected, and your custom additions are never removed.

Go Projects ​

For Go projects, dependencies in go.mod and go.sum are categorized as project dependencies and handled during 3-way comparison. The upgrade command does not perform automatic dependency merging for Go projects - Go's module system handles this natively.

Language Support ​

The upgrade command supports both Python and Go projects:

LanguageConfig FileVersion KeyDependency Handling
Pythonpyproject.tomlasp_versionAutomatic merge
Go.asp.tomlversion3-way compare

Language is auto-detected from project files.

Requirements ​

  • uvx: Required for re-generating templates at specific versions
  • Project metadata:
    • Python: pyproject.toml must have [tool.agent-starter-pack] with asp_version
    • Go: .asp.toml must have [project] with version

How It Works ​

  1. Reads project metadata to determine current ASP version
  2. Re-generates old template using uvx agent-starter-pack@{old_version}
  3. Re-generates new template using current ASP version
  4. Compares all files using 3-way diff
  5. Applies changes based on comparison results
  6. Updates metadata to reflect new version

Example Workflow ​

bash
# Check current version in pyproject.toml
grep asp_version pyproject.toml
# asp_version = "0.30.0"

# Preview what would change
uvx agent-starter-pack upgrade --dry-run

# Output shows:
# Auto-updating (unchanged by you):
#   ✓ deployment/terraform/main.tf
#   ✓ .github/workflows/ci.yaml
#
# Preserving (you modified, ASP unchanged):
#   ✓ Makefile
#
# Conflicts (both changed):
#   âš  deployment/terraform/variables.tf

# Apply the upgrade
uvx agent-starter-pack upgrade

# Resolve any conflicts interactively
# ...

# Verify upgrade
grep asp_version pyproject.toml
# asp_version = "0.31.0"

Best Practices ​

  1. Commit before upgrading - Ensure you can easily revert if needed
  2. Use dry-run first - Preview changes before applying
  3. Review conflicts carefully - Don't blindly accept new versions
  4. Test after upgrade - Run make test to verify everything works
  5. Check dependency changes - Review any updated package versions

Troubleshooting ​

"No agent-starter-pack metadata found"

  • Python: Ensure pyproject.toml has [tool.agent-starter-pack] section
  • Go: Ensure .asp.toml has [project] section
  • This project may not have been created with agent-starter-pack

"No asp_version found"

  • Python: Add asp_version = "X.Y.Z" to [tool.agent-starter-pack] in pyproject.toml
  • Go: Add version = "X.Y.Z" to [project] in .asp.toml
  • Use the version you originally created the project with

"Failed to generate old template"

  • The old version may not be available on PyPI
  • Try upgrading from a more recent version

"uvx is required but not installed"

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

Released under the Apache 2.0 License.