mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-15 02:45:16 +00:00
2.3 KiB
2.3 KiB
Plugins Boundary
This directory owns plugin discovery, manifest validation, loading, registry assembly, and contract enforcement.
Public Contracts
- Docs:
docs/plugins/architecture.mddocs/plugins/manifest.mddocs/plugins/sdk-overview.mddocs/plugins/sdk-entrypoints.md
- Definition files:
src/plugins/types.tssrc/plugins/runtime/types.tssrc/plugins/contracts/registry.tssrc/plugins/public-artifacts.ts
Boundary Rules
- Preserve manifest-first behavior: discovery, config validation, and setup should work from metadata before plugin runtime executes.
- Keep loader behavior aligned with the documented Plugin SDK and manifest contracts. Do not create private backdoors that bundled plugins can use but external plugins cannot.
- Preserve laziness in discovery and activation flows. Loader, registry, and public-artifact changes must not eagerly import bundled plugin runtime barrels when metadata, light exports, or typed contracts are sufficient.
- If a plugin exposes separate light and heavy runtime surfaces, keep discovery, inventory, and setup-state checks on the light path until actual execution needs the heavy module.
- If a loader or registry change affects plugin authors, update the public SDK, docs, and contract tests instead of relying on incidental internals.
- Do not normalize "plugin-owned" into "core-owned" by scattering direct reads
of
plugins.entries.<id>.configthrough unrelated core paths. Prefer generic helpers, plugin runtime hooks, manifest metadata, and explicit auto-enable wiring. - When plugin-owned tools or provider fallbacks need core participation, keep the contract generic and honor plugin disablement plus SecretRef semantics.
- Keep contract loading and contract tests on the dedicated bundled registry path. Do not make contract validation depend on activating providers through unrelated production resolution flows.
Verification
- If you touch loader, registry, activation, or public-artifact code that can
change bundled plugin import fanout, run
pnpm build. - If the change can alter bundled plugin startup cost, re-profile the affected
plugin entrypoint with:
OPENCLAW_LOCAL_CHECK=0 node scripts/profile-extension-memory.mjs --extension <id> --skip-combined --concurrency 1