Plugins: extract provider runtime

This commit is contained in:
Gustavo Madeira Santana 2026-03-15 17:35:54 +00:00
parent 96bd348130
commit 19087405d2
No known key found for this signature in database
3 changed files with 40 additions and 4 deletions

View File

@ -0,0 +1,27 @@
import { describe, expect, it } from "vitest";
import { createEmptyPluginRegistry } from "../plugins/registry.js";
import { resolveExtensionHostProviders } from "./provider-runtime.js";
describe("resolveExtensionHostProviders", () => {
it("projects provider registrations into provider plugins with plugin ids", () => {
const registry = createEmptyPluginRegistry();
registry.providers.push({
pluginId: "demo-plugin",
source: "bundled",
provider: {
id: "demo-provider",
label: "Demo Provider",
auth: [],
},
});
expect(resolveExtensionHostProviders({ registry })).toEqual([
{
id: "demo-provider",
label: "Demo Provider",
auth: [],
pluginId: "demo-plugin",
},
]);
});
});

View File

@ -0,0 +1,11 @@
import type { PluginRegistry } from "../plugins/registry.js";
import type { ProviderPlugin } from "../plugins/types.js";
export function resolveExtensionHostProviders(params: {
registry: Pick<PluginRegistry, "providers">;
}): ProviderPlugin[] {
return params.registry.providers.map((entry) => ({
...entry.provider,
pluginId: entry.pluginId,
}));
}

View File

@ -1,3 +1,4 @@
import { resolveExtensionHostProviders } from "../extension-host/provider-runtime.js";
import { createSubsystemLogger } from "../logging/subsystem.js";
import { loadOpenClawPlugins, type PluginLoadOptions } from "./loader.js";
import { createPluginLoaderLogger } from "./logger.js";
@ -18,8 +19,5 @@ export function resolvePluginProviders(params: {
logger: createPluginLoaderLogger(log),
});
return registry.providers.map((entry) => ({
...entry.provider,
pluginId: entry.pluginId,
}));
return resolveExtensionHostProviders({ registry });
}