Vyasa Extension Refactor Audit and Execution Plan

Mermaid Example TargetURL copied

Target files:

vyasa/extensions_builtin/mermaid/
  __init__.py
  extension.py
  render.py
  static/mermaid.js
  static/mermaid.css

__init__.py:

from .extension import EXTENSION

extension.py:

from ...extensions import ExtensionMeta, VyasaExtensionBase
from .render import render_mermaid_block


class MermaidExtension(VyasaExtensionBase):
    meta = ExtensionMeta(
        id="mermaid",
        category="render",
        provides=("cap:markdown:fence:mermaid", "bundle:mermaid.runtime"),
        requires=("cap:markdown_pipeline",),
    )

    def register(self, app):
        app.assets.bundle(
            "mermaid.runtime",
            css=("static/mermaid.css",),
            js=("static/mermaid.js",),
            scope="document",
        )
        app.markdown.fence("mermaid", render_mermaid_block)


EXTENSION = MermaidExtension()

The renderer must live in render.py, not in Markdown.