package plugins // Deferred extension points (deliberately NOT in v1 — the "Management MVP"). // The contract and manager are shaped so these can be added without a redesign: // // - Invocation API: the Plugin.Invoke method already exists; a // POST /api/admin/plugins/{name}/action endpoint + a normalized request/ // response envelope would expose it. Add a mapper layer so core logic never // depends on a provider's schema. // - Resilience: wrap plugin calls with retry/backoff + a circuit breaker, and // record per-plugin latency/error/quota metrics for the panel. // - Per-tenant credentials: today config is a single global blob per plugin. // A (pluginName, orgID/userID) → config store would let users connect their // own third-party accounts. // - Audit logging: record which plugin accessed what and when. // - Sandboxing: the "external" plugin kind is the isolation story — run less // trusted plugins as separate processes/containers behind the HTTP contract. // - Hot-adding builtin Go code without a rebuild is intentionally unsupported // (Go .so plugins are Linux-only and toolchain-fragile); use the external // HTTP kind to add plugins at runtime instead.