Skip to content

feat: add generic local install source for managed tools#7

Merged
wpfleger96 merged 2 commits intomainfrom
feat/local-install-source
Apr 30, 2026
Merged

feat: add generic local install source for managed tools#7
wpfleger96 merged 2 commits intomainfrom
feat/local-install-source

Conversation

@wpfleger96
Copy link
Copy Markdown
Owner

Summary

  • Adds ToolSource.LOCAL alongside PYPI and GITHUB for all managed tools (ai-agent-rules, statusline, and any future tools)
  • install_tool() accepts local_path parameter — passes expanded path to uv tool install
  • get_effective_install_source() returns (ToolSource, str | None) tuple instead of bool — carries the local path alongside the source enum
  • tool source CLI accepts local:~/path format with path existence validation
  • check_tool_updates() skips LOCAL-sourced tools (no remote version to query)
  • ensure_statusline_installed() handles three-way source switching (PYPI/GITHUB/LOCAL)
  • get_tool_source() detects LOCAL installs from uv-receipt.toml (path/directory keys)

Enables developing managed tools locally without publishing to PyPI first: ai-agent-rules tool source recall "local:~/Development/Personal/recall" then ai-agent-rules install picks up the local checkout.

wpfleger96 and others added 2 commits April 30, 2026 13:45
Adds ToolSource.LOCAL alongside PYPI and GITHUB for all managed tools
(ai-agent-rules, statusline, and any future tools like recall).

- install_tool() accepts local_path parameter for local filesystem installs
- get_effective_install_source() returns (ToolSource, local_path) tuple
- tool source CLI accepts "local:~/path" format with path validation
- check_tool_updates() skips LOCAL-sourced tools (no remote to query)
- ensure_statusline_installed() handles three-way source switching
perform_tool_upgrade() fell through to the PyPI upgrade path for
LOCAL-sourced tools, which would silently overwrite the local install.
Also fixes relative paths being stored verbatim in config — now
resolved to absolute before persisting.
@wpfleger96 wpfleger96 merged commit 25ab9e8 into main Apr 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant