Skip to content

v1.1.17

Choose a tag to compare

@db-lyon db-lyon released this 13 Jul 23:33

v1.1.17

Adds a guard pipeline around the editor bridge - a plugin extension point for gating any action. Opt-in and additive: with no guard plugin installed the pipeline is a pass-through, so existing setups are unchanged.

Server

  • Bridge guard pipeline. Every action crosses one seam (IBridge.call). A plugin can now wrap that seam with a guard, in the shape of NestJS guards/interceptors but agnostic to what the guard does: a before hook may deny a call or act on it (e.g. check a file out of source control), and an after hook may observe or replace the result (audit, transform). Guards compose in an ordered pipeline - before in order, after in reverse.
  • Pluggable registration. A plugin declares a guard by shipping a task named guard.<name>.<phase>, where phase is before (every call), beforeWrite (only calls that resolve to existing on-disk files, so reads pay nothing), after, or afterWrite. No new manifest section; the server discovers guard.* tasks at boot. Source control, access policy, audit, and rate limiting are all just guards.

Internals

  • New BridgeGuard / CallContext / GuardRegistry in the flow layer; GuardedBridge runs the pipeline. Write classification is a lazy enrichment on the call context that write-oriented guards may consult, not a core assumption - a guard that ignores writes pays nothing.
  • No behavior change without a registered guard: empty registry short-circuits to a direct pass-through.

Docs

  • Plugin authoring guide gains a "Guards" section with a worked example (a policy guard that blocks writes outside a sandbox).