Skip to main content

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 BasePlugin lifecycle 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:

  1. ./plugins/
  2. Installed package plugin locations.

Lifecycle:

  1. Discover plugin classes.
  2. Instantiate with dependencies.
  3. Call initialize().
  4. Call register_hooks().
  5. 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 BasePlugin methods.
  • 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

kollabor_plugins-0.5.16.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kollabor_plugins-0.5.16-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file kollabor_plugins-0.5.16.tar.gz.

File metadata

  • Download URL: kollabor_plugins-0.5.16.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for kollabor_plugins-0.5.16.tar.gz
Algorithm Hash digest
SHA256 2ebb11b16974da1c636b2b56f76eafd92c6b3b522fd1b59cebc5aaf6377cfbbf
MD5 665b9186f17b2a8226f97346f4208215
BLAKE2b-256 ba927906d2b7266f0ba1c7e8c6560890f9f876eb52064d689f40c9eafabf6c06

See more details on using hashes here.

File details

Details for the file kollabor_plugins-0.5.16-py3-none-any.whl.

File metadata

File hashes

Hashes for kollabor_plugins-0.5.16-py3-none-any.whl
Algorithm Hash digest
SHA256 d9b7b0fb7e9867878cf7cd94c4361473c6792cc21e0b028153ca594ced1be56f
MD5 46692da4ae65c39756a5681a4fba0df7
BLAKE2b-256 67b23326f4cc3d5390eb62f9ae67ea229611bdf57b2f1c5ec264a86a2d8993e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page