vibe.web.extensions

Web Extension API for VIBE.

Allows subsystems to register their own Flask blueprints without core VIBE needing explicit knowledge of them.

WebExtension

Protocol for web extensions.

Extensions must provide: - name: Extension name (for logging/debugging) - blueprints: List of (blueprint, url_prefix) tuples to register - init_app(): Optional initialization hook called with the app

blueprints

blueprints: Sequence[tuple[Blueprint, str | None]]

Return blueprints to register as (blueprint, url_prefix) tuples.

init_app

init_app(app: Flask) -> None

Initialize extension with the Flask app (optional setup).

register_extension

register_extension(extension: WebExtension) -> None

Register a web extension.

get_extensions

get_extensions() -> dict[str, WebExtension]

Get all registered extensions.

get_extension

get_extension(name: str) -> WebExtension | None

Get a specific extension by name.

discover_extensions

discover_extensions(app: Flask) -> None

Discover and load web extensions from configured entrypoints.

register_extension_blueprints

register_extension_blueprints(app: Flask) -> None

Register all extension blueprints with the Flask app.

Raises exceptions on failure - better to crash at startup than run with broken extensions (crash early principle).