Skip to content

[Feature]: Add first-class uv tool install support #239

@Drswith

Description

@Drswith

Problem or opportunity

Quantex can currently model managed installs for bun, npm, brew, cargo, and winget, but uv tool installs are not represented as a first-class managed installer. Python-based agent CLIs that recommend uv tool install ... are therefore modeled as unmanaged command hints or one-off self-update commands instead of participating in the shared managed lifecycle.

Local intake examples:

  • src/agents/definitions/openhands.ts exposes binaryInstall('uv tool install openhands --python 3.12') and a uv tool upgrade ... self-update command.
  • src/agents/definitions/vibe.ts exposes binaryInstall('uv tool install mistral-vibe').
  • src/agents/definitions/kimi.ts exposes uv tool upgrade kimi-cli --no-cache as a self-update command.
  • ManagedInstallType currently excludes uv, so capabilities, doctor, state, schema, grouped updates, and install guidance cannot treat uv-installed agents as managed installs.

That leaves uv-supported agents less agent-friendly than npm/cargo/brew agents even when upstream documents uv as the preferred installation path.

Desired outcome

Users and agents should be able to install, inspect, update, and uninstall supported uv-distributed agent CLIs through Quantex using a first-class uv managed install method when upstream documentation verifies uv tool install as a supported distribution channel.

Expected direction:

  • Add uv as a managed install type and package metadata target where appropriate.
  • Add a catalog helper such as uvToolInstall(...) for agent definitions, including support for package install args like --python 3.12 and --no-cache when needed.
  • Add uv availability to qtx capabilities and qtx doctor output.
  • Add a uv package-manager provider for uv tool install, uv tool upgrade, uv tool uninstall, and installed-version inspection where reliable.
  • Update structured schema/spec coverage so uv is part of the stable machine-readable contract.
  • Migrate verified uv-based agent definitions, starting with OpenHands and Mistral Vibe if their uv install paths remain upstream-supported.

Scope and non-goals

In scope:

  • Modeling uv tool installs as managed installer lifecycle operations.
  • Cross-platform command planning for Windows, macOS, and Linux.
  • Detection of an available uv command.
  • State recording, command rendering, grouped update behavior, structured output, and validation updates needed for the new install type.
  • OpenSpec coverage for the behavior contract before implementation.

Non-goals:

  • Treating uv as a full Python environment manager inside Quantex.
  • Managing virtualenv creation, Python version installation policy, pyenv/asdf policy, or arbitrary uv run workflows.
  • Replacing separate pip support; pip and uv should remain distinct installer surfaces because they have different lifecycle commands and state behavior.
  • Publishing Quantex itself through Python packaging.
  • Expanding Quantex into a workflow orchestration platform.

Linked discussion or prior context

Related issue: #238 tracks first-class pip install support. This issue should stay separate because uv is not pip-compatible lifecycle plumbing; it uses uv tool ... commands and has different state/update semantics.

Local context observed during intake:

  • src/agents/types.ts currently defines ManagedInstallType = 'bun' | 'npm' | 'brew' | 'cargo' | 'winget'.
  • src/agents/definitions/openhands.ts, src/agents/definitions/vibe.ts, and src/agents/definitions/kimi.ts already reference uv commands.
  • openspec/specs/agent-catalog/spec.md already mentions uv-based Kimi self-update behavior.

Which durable artifacts should this likely create or update?

  • OpenSpec

Done when

  • An OpenSpec change captures the uv managed-install contract before implementation starts.
  • uv is represented in agent package metadata, managed install types, install method helpers, installer capabilities, command rendering, grouped update ordering, and structured schema where applicable.
  • qtx capabilities and qtx doctor report uv availability consistently with other managed installers.
  • Install, update, uninstall, inspect/resolve guidance, and recorded install state handle uv-installed agents consistently with the existing lifecycle model.
  • Verified uv-distributed agent definitions are migrated from unmanaged command hints to the new managed uv method where upstream docs support it.
  • Tests cover the new managed installer behavior, structured output/schema changes, and representative catalog usage with install args.
  • User-facing docs/specs are updated if the observable install surface changes.

Guardrails

  • I understand this issue should promote durable outcomes into repo-native docs instead of adding new ad hoc root markdown files.
  • I understand this issue should stay within Quantex's lifecycle CLI scope unless an explicit decision changes that scope.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions