Skip to content

feat(plugin): implement install command and harden plugin resolution#33

Open
coopbri wants to merge 3 commits intomasterfrom
feature/plugin-install
Open

feat(plugin): implement install command and harden plugin resolution#33
coopbri wants to merge 3 commits intomasterfrom
feature/plugin-install

Conversation

@coopbri
Copy link
Copy Markdown
Contributor

@coopbri coopbri commented Mar 27, 2026

Description

Implement the omni install command and harden plugin resolution.

  • Plugin install command that fetches manifests from the remote plugin registry API, with embedded fallback for offline use
  • Scoped PATH fallback to omni- prefixed binaries (prevents omni foo from executing arbitrary foo on PATH)
  • ${VAR} env var expansion in manifest endpoint fields
  • Package manager detection and automatic binary installation (Homebrew, AUR via yay/paru)
  • Registry URL configurable via OMNI_PLUGIN_REGISTRY_URL env var
  • Changeset for minor version bump

Test Steps

  • Run cargo test plugin -- all tests pass (36 plugin tests, 218 total)
  • Run cargo clippy -- -D warnings -- clean
  • omni install beacon fetches manifest from registry (falls back to embedded if unreachable)
  • omni plugins lists installed plugins
  • omni uninstall beacon removes it

- Add install command with embedded plugin registry and package manager
  detection (Homebrew, AUR via yay/paru)
- Scope PATH fallback to `omni-` prefixed binaries to prevent arbitrary
  binary execution
- Add `${VAR}` env var expansion in manifest endpoint fields
- Add changeset for minor version bump
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 27, 2026

🦋 Changeset detected

Latest commit: fb072cd

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@omnidotdev/cli Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

coopbri and others added 2 commits March 26, 2026 23:19
…back

- Add registry client that fetches plugin manifests from the remote
  plugin registry API (configurable via OMNI_PLUGIN_REGISTRY_URL)
- Fall back to embedded registry when remote is unavailable
- Add Serialize derives to manifest types for TOML round-tripping
- Make install_plugin async to support remote fetch
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