Vyasa Extension Refactor Audit and Execution Plan

New Contract To ImplementURL copied

VyasaExtensionAppURL copied

The extension app is the only registration surface given to extensions.

Required namespaces:

  • routes
  • assets
  • markdown
  • layout
  • config
  • lifecycle
  • storage
  • content
  • search
  • navigation
  • documents

Minimum V1:

app.routes.add(prefix, handler, methods=("GET",), name=None)
app.assets.bundle(name, css=(), js=(), scope="document")
app.markdown.fence(name, handler)
app.markdown.preprocessor(name, handler, stage="normal")
app.markdown.postprocessor(name, handler, stage="normal")
app.layout.slot(name, provider)
app.layout.mode(name, provider)
app.config.defaults(model)
app.lifecycle.startup(fn)
app.lifecycle.shutdown(fn)
app.storage.namespace(name=None)

Add these because current Vyasa needs them:

app.documents.kind(kind, resolver, renderer)
app.documents.action(name, provider)
app.navigation.sidebar_section(name, provider)
app.navigation.sidebar_row_decorator(name, provider)
app.search.provider(name, provider)
app.theme.selector(name, provider)