Skip to content
Back to top
View this page

# mindroot.lib.plugins package

## Submodules

## mindroot.lib.plugins.installation module

mindroot.lib.plugins.installation.check_plugin_dependencies(plugin_path)

  Check if all plugin dependencies are met.

  Parameters:

    plugin_path (str) – Path to plugin directory

  Returns:

    True if all dependencies are met

  Return type:

    bool

mindroot.lib.plugins.installation.download_github_files(repo_path, tag=None)

  Download GitHub repo files to temp directory.

  Parameters:

    - repo_path (str) – GitHub repository path (user/repo)

    - tag (str, optional) – Specific tag to download

  Returns:

    (plugin_dir, plugin_root, plugin_info)

  Return type:

    tuple

mindroot.lib.plugins.installation.install_plugin_dependencies(plugin_path)

  Install plugin dependencies from requirements.txt.

  Parameters:

    plugin_path (str) – Path to plugin directory

  Returns:

    True if installation successful

  Return type:

    bool

async mindroot.lib.plugins.installation.install_recommended_plugins(agent_name, context=None)

  Install plugins recommended for an agent based on its required_plugins list.

  Parameters:

    agent_name (str) – Name of the agent

  Returns:

    Results of plugin installation

  Return type:

    dict

async mindroot.lib.plugins.installation.plugin_install(plugin_name, source='pypi', source_path=None, remote_source=None)

  Install a plugin from various sources.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - source (str) – Installation source (‘pypi’, ‘local’, ‘github’)

    - source_path (str, optional) – Path or GitHub repo reference

    - remote_source (str, optional) – Remote source for the plugin (e.g., GitHub repo path)

  Returns:

    True if installation successful

  Return type:

    bool

mindroot.lib.plugins.installation.plugin_update(plugin_name)

  Update an installed plugin.

  Parameters:

    plugin_name (str) – Name of the plugin to update

  Returns:

    True if update successful

  Return type:

    bool

## mindroot.lib.plugins.l8n_static_handler module

class mindroot.lib.plugins.l8n_static_handler.TranslatedStaticFiles(*, directory: str, plugin_name: str = None, **kwargs)

  Bases: `StaticFiles`

  Custom StaticFiles handler that applies l8n translations to JavaScript files.

  apply_translations_to_js(content: str, language: str, file_path: str) → str

    Apply translations to JavaScript content.

    This looks for __TRANSLATE_key__ placeholders in JS files and replaces them with translated strings. If translations are missing, returns None to signal that the original file should be served instead.

  get_current_language(request: Request) → str

    Get the current language for the request.

  async get_response(path: str, scope: MutableMapping[str, Any]) → Response

    Override to add translation support for JavaScript files.

  should_translate_file(file_path: Path) → bool

    Check if a file should be translated.

mindroot.lib.plugins.l8n_static_handler.create_js_translation_object(translations: dict) → str

  Create a JavaScript object containing translations.

  This can be injected into JS files to provide client-side translation support.

  Parameters:

    translations – Dictionary of translation key-value pairs

  Returns:

    JavaScript code defining a translation object

mindroot.lib.plugins.l8n_static_handler.inject_translations_into_js(content: str, translations: dict) → str

  Inject translation object into JavaScript content.

  This prepends translation definitions to JS files.

  Parameters:

    - content – Original JavaScript content

    - translations – Translation dictionary

  Returns:

    JavaScript content with translations injected

mindroot.lib.plugins.l8n_static_handler.mount_translated_static_files(app, plugin_name: str, category: str)

  Mount plugin static files with translation support.

  Parameters:

    - app (FastAPI) – The FastAPI application instance

    - plugin_name (str) – Name of the plugin

    - category (str) – Plugin category (‘core’ or ‘installed’)

## mindroot.lib.plugins.loader module

async mindroot.lib.plugins.loader.load(app=None)

  Load all enabled plugins with l8n translation support.

  Parameters:

    app (FastAPI, optional) – The FastAPI application instance

  Raises:

    Exception – If no FastAPI instance is provided or found

mindroot.lib.plugins.loader.load_middleware(app, plugin_name, plugin_path, category)

  Load plugin middleware if it exists.

  Parameters:

    - app (FastAPI) – The FastAPI application instance

    - plugin_name (str) – Name of the plugin

    - plugin_path (str) – Import path of the plugin

mindroot.lib.plugins.loader.mount_static_files(app, plugin_name, category)

  Mount plugin static files with translation support if available.

  Parameters:

    - app (FastAPI) – The FastAPI application instance

    - plugin_name (str) – Name of the plugin

    - category (str) – Plugin category (‘core’ or ‘installed’)

async mindroot.lib.plugins.loader.pre_load(app=None)

## mindroot.lib.plugins.loader_with_l8n module

async mindroot.lib.plugins.loader_with_l8n.load(app=None)

  Load all enabled plugins with l8n translation support.

  Parameters:

    app (FastAPI, optional) – The FastAPI application instance

  Raises:

    Exception – If no FastAPI instance is provided or found

mindroot.lib.plugins.loader_with_l8n.load_middleware(app, plugin_name, plugin_path, category)

  Load plugin middleware if it exists.

  Parameters:

    - app (FastAPI) – The FastAPI application instance

    - plugin_name (str) – Name of the plugin

    - plugin_path (str) – Import path of the plugin

mindroot.lib.plugins.loader_with_l8n.mount_static_files(app, plugin_name, category)

  Mount plugin static files with translation support if available.

  Parameters:

    - app (FastAPI) – The FastAPI application instance

    - plugin_name (str) – Name of the plugin

    - category (str) – Plugin category (‘core’ or ‘installed’)

async mindroot.lib.plugins.loader_with_l8n.pre_load(app=None)

## mindroot.lib.plugins.manifest module

mindroot.lib.plugins.manifest.create_default_plugin_manifest()

  Create a new default manifest file.

  This function first attempts migration, then creates from default template if needed.

mindroot.lib.plugins.manifest.list_enabled(include_category=True)

  List all enabled plugins.

  Parameters:

    include_category (bool) – Whether to include the category in results

  Returns:

    List of enabled plugins, optionally with categories

  Return type:

    list

mindroot.lib.plugins.manifest.load_plugin_manifest()

  Load the plugin manifest file.

  Returns:

    The manifest data structure

  Return type:

    dict

mindroot.lib.plugins.manifest.save_plugin_manifest(manifest)

  Save the plugin manifest file.

  Parameters:

    manifest (dict) – The manifest data structure to save

mindroot.lib.plugins.manifest.toggle_plugin_state(plugin_name, enabled)

  Toggle a plugin’s enabled state.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - enabled (bool) – New enabled state

  Returns:

    True if successful, False if plugin not found

  Return type:

    bool

mindroot.lib.plugins.manifest.update_plugin_manifest(plugin_name, source, source_path, remote_source=None, version='0.0.1', metadata=None)

  Update or add a plugin entry in the manifest.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - source (str) – Source type (‘core’, ‘local’, ‘github’)

    - source_path (str) – Path to the plugin

    - remote_source (str, optional) – GitHub repository reference

    - version (str, optional) – Plugin version

    - metadata (dict, optional) – Plugin metadata including commands and services

## mindroot.lib.plugins.mapping module

async mindroot.lib.plugins.mapping.get_command_plugin_mapping(context=None)

  Get a mapping of commands to the plugins that provide them.

  Returns:

    Mapping of command names to lists of plugin names

  Return type:

    dict

## mindroot.lib.plugins.paths module

mindroot.lib.plugins.paths.get_plugin_import_path(plugin_name)

  Get the Python import path for a plugin.

  Parameters:

    plugin_name (str) – Name of the plugin

  Returns:

    Import path for the plugin or None if not found

  Return type:

    str

mindroot.lib.plugins.paths.get_plugin_path(plugin_name)

  Get the filesystem path for a plugin.

  Parameters:

    plugin_name (str) – Name of the plugin

  Returns:

    Absolute path to the plugin directory or None if not found

  Return type:

    str

## Module contents

Plugin system for managing, installing, and loading plugins.

This module provides the main interface for the plugin system, including: - Plugin installation and updates - Plugin loading and initialization - Manifest management - Path resolution

Typical usage:

  from lib.plugins import load, plugin_install, toggle_plugin_state

  # Install a plugin plugin_install(‘my-plugin’, source=’github’, source_path=’user/repo’)

  # Load plugins in FastAPI app await load(app)

mindroot.lib.plugins.check_plugin_dependencies(plugin_path)

  Check if all plugin dependencies are met.

  Parameters:

    plugin_path (str) – Path to plugin directory

  Returns:

    True if all dependencies are met

  Return type:

    bool

mindroot.lib.plugins.get_plugin_import_path(plugin_name)

  Get the Python import path for a plugin.

  Parameters:

    plugin_name (str) – Name of the plugin

  Returns:

    Import path for the plugin or None if not found

  Return type:

    str

mindroot.lib.plugins.get_plugin_path(plugin_name)

  Get the filesystem path for a plugin.

  Parameters:

    plugin_name (str) – Name of the plugin

  Returns:

    Absolute path to the plugin directory or None if not found

  Return type:

    str

mindroot.lib.plugins.install_plugin_dependencies(plugin_path)

  Install plugin dependencies from requirements.txt.

  Parameters:

    plugin_path (str) – Path to plugin directory

  Returns:

    True if installation successful

  Return type:

    bool

mindroot.lib.plugins.list_enabled(include_category=True)

  List all enabled plugins.

  Parameters:

    include_category (bool) – Whether to include the category in results

  Returns:

    List of enabled plugins, optionally with categories

  Return type:

    list

async mindroot.lib.plugins.load(app=None)

  Load all enabled plugins with l8n translation support.

  Parameters:

    app (FastAPI, optional) – The FastAPI application instance

  Raises:

    Exception – If no FastAPI instance is provided or found

mindroot.lib.plugins.load_plugin_manifest()

  Load the plugin manifest file.

  Returns:

    The manifest data structure

  Return type:

    dict

async mindroot.lib.plugins.plugin_install(plugin_name, source='pypi', source_path=None, remote_source=None)

  Install a plugin from various sources.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - source (str) – Installation source (‘pypi’, ‘local’, ‘github’)

    - source_path (str, optional) – Path or GitHub repo reference

    - remote_source (str, optional) – Remote source for the plugin (e.g., GitHub repo path)

  Returns:

    True if installation successful

  Return type:

    bool

mindroot.lib.plugins.plugin_update(plugin_name)

  Update an installed plugin.

  Parameters:

    plugin_name (str) – Name of the plugin to update

  Returns:

    True if update successful

  Return type:

    bool

async mindroot.lib.plugins.pre_load(app=None)

mindroot.lib.plugins.save_plugin_manifest(manifest)

  Save the plugin manifest file.

  Parameters:

    manifest (dict) – The manifest data structure to save

mindroot.lib.plugins.toggle_plugin_state(plugin_name, enabled)

  Toggle a plugin’s enabled state.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - enabled (bool) – New enabled state

  Returns:

    True if successful, False if plugin not found

  Return type:

    bool

mindroot.lib.plugins.update_plugin_manifest(plugin_name, source, source_path, remote_source=None, version='0.0.1', metadata=None)

  Update or add a plugin entry in the manifest.

  Parameters:

    - plugin_name (str) – Name of the plugin

    - source (str) – Source type (‘core’, ‘local’, ‘github’)

    - source_path (str) – Path to the plugin

    - remote_source (str, optional) – GitHub repository reference

    - version (str, optional) – Plugin version

    - metadata (dict, optional) – Plugin metadata including commands and services