Skip to main content

Module resource

Module resource 

Source
Expand description

Extension resource discovery and loading.

Provides the resource loading strategy for discovering extension manifests from project, user, and explicit paths with documented precedence.

§Precedence Model

Extension resources are discovered from multiple layers, each with a numeric precedence value. Higher precedence values override lower ones when extension names collide. The standard precedence order is:

  1. User-level (~/.config/opi/extensions/ on Unix, %APPDATA%\opi\extensions\ on Windows) — precedence 0
  2. Project-level (.opi/extensions/ in workspace root) — precedence 1
  3. Explicit (CLI --extension paths or config extensions.paths) — precedence 2

When two layers provide an extension with the same name, the higher precedence layer wins. Within a single layer, duplicate names produce an error.

§Manifest Format

Each extension directory must contain an extension.toml manifest:

[extension]
name = "my-extension"    # required, non-empty
version = "1.0.0"        # optional
description = "..."      # optional

§Path Normalization

All paths are canonicalized (resolved to absolute form) before comparison. This prevents duplicate detection bypass via relative paths or symlinks.

§Unstable

This module is part of the unstable 0.x extension API. Breaking changes may occur between minor versions without a major version bump.

Structs§

DiscoveryLayer
A single discovery layer with root path, optional subdirectory, and precedence value.
ExplicitResourcePaths
Explicit resource paths from resolved configuration or embedder setup.
ExtensionManifest
Parsed extension manifest from extension.toml.
ExtensionResource
A discovered extension resource with its manifest, filesystem path, and layer precedence.
ResourceDiscoveryLayers
Discovery layers for every metadata-backed resource kind.

Enums§

ResourceDiscoveryError
Errors from extension resource discovery.

Functions§

discover_extension_resources
Discover extension resources across multiple layers with precedence-based deduplication.
standard_discovery_layers
Build the standard user/project/explicit discovery layers for a workspace.