Plugin system plus two base plugins #1
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.
Add Harbor Plugin System
This PR introduces a plugin architecture that allows separate Firefox extensions to provide tools to Harbor. Plugins communicate via extension-to-extension messaging (browser.runtime.sendMessage) and their tools are exposed to web applications through the existing window.agent API.
Documentation
Summary
Architecture
Web Page Harbor Hub Plugin Extension
(window.agent) ←→ (aggregates tools, ←→ (provides tools,
enforces consent) executes them)
Plugins register with Harbor on startup, and Harbor namespaces their tools as pluginId::toolName. Web pages see plugin tools alongside MCP tools with unified consent handling.
New Files
Next Steps
This plugin system lays the groundwork for making the native bridge optional. Since plugins run entirely in the browser and can make HTTP requests, a future "LLM plugin" could communicate directly with Ollama's HTTP API, enabling Harbor to function without the Node.js bridge for users who only need local LLM access.