feat: add generic local install source for managed tools#7
Merged
wpfleger96 merged 2 commits intomainfrom Apr 30, 2026
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ToolSource.LOCALalongsidePYPIandGITHUBfor all managed tools (ai-agent-rules, statusline, and any future tools)install_tool()acceptslocal_pathparameter — passes expanded path touv tool installget_effective_install_source()returns(ToolSource, str | None)tuple instead ofbool— carries the local path alongside the source enumtool sourceCLI acceptslocal:~/pathformat with path existence validationcheck_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 fromuv-receipt.toml(path/directorykeys)Enables developing managed tools locally without publishing to PyPI first:
ai-agent-rules tool source recall "local:~/Development/Personal/recall"thenai-agent-rules installpicks up the local checkout.