Plugin infrastructure for Kollabor
Project description
kollabor-plugins
kollabor-plugins is the plugin framework for Kollabor.
It provides plugin discovery, safe instantiation, lifecycle management, status
collection, the base plugin class, and SDK helpers. Concrete plugins live in the
repo-level plugins/ directory or installed package plugin locations.
Current Role
- Discover plugin classes from development and installed plugin directories.
- Instantiate plugins with shared dependencies such as event bus, config, and services.
- Provide a stable
BasePluginlifecycle for initialization, hook registration, status, config widgets, and shutdown. - Collect plugin startup/status information without crashing the host app.
- Provide utility helpers for safe optional-method calls.
Architecture
| Module | Responsibility |
|---|---|
base.py |
BasePlugin lifecycle and default methods |
discovery.py |
plugin class discovery |
factory.py |
dependency-aware plugin construction |
registry.py |
plugin registration and lifecycle registry |
collector.py |
status/startup info collection |
plugin_sdk.py |
helper API for plugin authors |
plugin_utils.py |
safe calls, metadata, interface validation |
Plugin Shape
from kollabor_plugins import BasePlugin
class MyPlugin(BasePlugin):
name = "my_plugin"
version = "1.0.0"
description = "Adds one useful thing"
async def initialize(self, args=None, **kwargs):
return None
async def register_hooks(self):
return None
async def shutdown(self):
return None
Discovery order:
./plugins/- Installed package plugin locations.
Lifecycle:
- Discover plugin classes.
- Instantiate with dependencies.
- Call
initialize(). - Call
register_hooks(). - Call
shutdown()on app exit.
Known Gaps
- Plugin metadata and config schemas are partly convention-based; stronger typed metadata would help UI and docs generation.
- Discovery order and dependency injection behavior should be covered by more integration tests across local and installed plugin layouts.
- Plugin shutdown must remain best-effort and non-blocking; long-running plugin tasks need clearer ownership and cancellation guidance.
Roadmap
Phase 1: Authoring clarity
- Add a plugin author guide generated from real
BasePluginmethods. - Document config widget and status-line conventions.
- Add examples for hook-only, command, fullscreen, and background-task plugins.
Phase 2: Lifecycle hardening
- Add tests for plugin discovery, instantiation failures, and shutdown failures.
- Track plugin-owned tasks/resources explicitly.
- Make startup/status collection easier to inspect from CLI and engine surfaces.
Phase 3: Packaging and marketplace readiness
- Normalize plugin metadata fields for installed packages.
- Document compatibility/version expectations for plugins.
- Prepare a stable manifest format if plugins move toward external distribution.
Development
Targeted validation examples:
python -m py_compile packages/kollabor-plugins/src/kollabor_plugins/*.py
python -m pytest tests/unit/commands/test_all_command_handlers.py -q
Dependencies
kollabor-events
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kollabor_plugins-0.5.7.tar.gz.
File metadata
- Download URL: kollabor_plugins-0.5.7.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98b041407fc1ec5853ea24a2073a22bf9e992976ba9d5c75d8efff2e4a96c5b8
|
|
| MD5 |
ffa62beed7c0082052d98f3d0295f2f6
|
|
| BLAKE2b-256 |
cadeb4a7ea61c85a25fad50e7c2ae098f068734f6f970ce216df6ad58445e290
|
File details
Details for the file kollabor_plugins-0.5.7-py3-none-any.whl.
File metadata
- Download URL: kollabor_plugins-0.5.7-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3ac01c9376479c1b9d21c7323dcf2389a7796e7048352d1efe69b59c61a9a37
|
|
| MD5 |
fb9688c1cd03e68966ad7488a3e4334b
|
|
| BLAKE2b-256 |
e5f7c29076a08862d9e399d2ada47a8c194e77763792ad58103c1d5c66241de5
|