feat: guarded plugin auto-detection — installing @soulcraft/cor is the opt-in
With plugins unset (the default), init() probes for the first-party accelerator: not installed means plain brainy with zero noise; installed and healthy means it loads and announces itself; installed but broken (import failure, invalid shape, failed activation, version mismatch) makes init() THROW. An installed accelerator never silently vanishes behind the JS engines - the anti-drift posture of the explicit list, applied to detection. plugins: []/false stays a true opt-out (no probe); an explicit list keeps its required-and-loud semantics. The import runs through an importPluginPackage seam (variable specifier - bundlers cannot static-resolve the optional package; tests simulate all outcomes without it installed). Also: when a plugin activates but registers zero native providers (e.g. a licensing gate declining to engage), the provider summary now warns loudly instead of leaving every query silently on the JS engines. Supersedes 8.0.8's explicit-opt-in wording; README/PLUGINS/types now document the guarded contract. 7 new tests (tests/unit/plugin-autodetect.test.ts).
This commit is contained in:
parent
b37359e097
commit
588267be7f
6 changed files with 265 additions and 26 deletions
|
|
@ -1804,10 +1804,13 @@ export interface BrainyConfig {
|
|||
eagerEmbeddings?: boolean
|
||||
|
||||
// Plugin configuration
|
||||
// Controls which plugins are loaded during init(). Plugins are explicit
|
||||
// opt-in — brainy NEVER auto-imports a package that isn't listed here.
|
||||
// - undefined (default): no plugins loaded (same as [] / false)
|
||||
// - false / []: no plugins loaded
|
||||
// Controls which plugins are loaded during init().
|
||||
// - undefined (default): guarded auto-detection of the first-party
|
||||
// accelerator (@soulcraft/cor) — installing the package IS the opt-in.
|
||||
// Not installed → plain brainy, silently. Installed → it loads and
|
||||
// announces itself. Installed but broken → init() THROWS (an installed
|
||||
// accelerator never silently vanishes behind the JS engines).
|
||||
// - false / []: no plugins, no detection (explicit opt-out)
|
||||
// - ['@soulcraft/cor']: load exactly these packages; a listed plugin that
|
||||
// fails to load or is invalid THROWS (loud, never a silent JS fallback)
|
||||
plugins?: string[] | false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue