feat(FN-3182): scope plugin installs globally with project enablement

- Store plugin installation metadata in central DB while preserving per-project enable/disable state
- Update plugin CLI and dashboard Plugin Manager copy/behavior to distinguish global install from project enablement
- Expand plugin store and loader test coverage, including legacy migration and scoped install assertions
- Update runtime plugin e2e tests to use isolated central DB directories and document the new semantics
- Add a changeset for @runfusion/fusion describing the plugin scope behavior change

Fusion-Task-Id: FN-3182
This commit is contained in:
Fusion
2026-05-07 22:11:53 -07:00
committed by gsxdsm
parent 979cf115d9
commit b7f68d7dc0
20 changed files with 617 additions and 279 deletions

View File

@@ -153,7 +153,7 @@ describe("OpenClaw runtime E2E pipeline", () => {
});
it("loads OpenClaw plugin and executes through OpenClaw runtime", async () => {
const pluginStore = new PluginStore(testRoot, { inMemoryDb: true });
const pluginStore = new PluginStore(testRoot, { inMemoryDb: true, centralGlobalDir: testRoot });
await pluginStore.init();
await pluginStore.registerPlugin({
@@ -240,7 +240,7 @@ describe("OpenClaw runtime E2E pipeline", () => {
});
it("falls back to default pi runtime when OpenClaw plugin is not installed", async () => {
const pluginStore = new PluginStore(testRoot, { inMemoryDb: true });
const pluginStore = new PluginStore(testRoot, { inMemoryDb: true, centralGlobalDir: testRoot });
await pluginStore.init();
const taskStore = createTaskStoreMock(testRoot);