v1.1.17
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: abeforehook may deny a call or act on it (e.g. check a file out of source control), and anafterhook may observe or replace the result (audit, transform). Guards compose in an ordered pipeline -beforein order,afterin reverse. - Pluggable registration. A plugin declares a guard by shipping a task named
guard.<name>.<phase>, where phase isbefore(every call),beforeWrite(only calls that resolve to existing on-disk files, so reads pay nothing),after, orafterWrite. No new manifest section; the server discoversguard.*tasks at boot. Source control, access policy, audit, and rate limiting are all just guards.
Internals
- New
BridgeGuard/CallContext/GuardRegistryin the flow layer;GuardedBridgeruns 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).