fix(plugins): normalize bundled provider ids

This commit is contained in:
Peter Steinberger
2026-03-13 04:09:57 +00:00
parent 61d219cb39
commit 6472949f25
2 changed files with 31 additions and 2 deletions

View File

@@ -200,6 +200,29 @@ describe("discoverOpenClawPlugins", () => {
expect(ids).toContain("voice-call");
});
it("normalizes bundled provider package ids to canonical plugin ids", async () => {
const stateDir = makeTempDir();
const globalExt = path.join(stateDir, "extensions", "ollama-provider-pack");
mkdirSafe(path.join(globalExt, "src"));
writePluginPackageManifest({
packageDir: globalExt,
packageName: "@openclaw/ollama-provider",
extensions: ["./src/index.ts"],
});
fs.writeFileSync(
path.join(globalExt, "src", "index.ts"),
"export default function () {}",
"utf-8",
);
const { candidates } = await discoverWithStateDir(stateDir, {});
const ids = candidates.map((c) => c.idHint);
expect(ids).toContain("ollama");
expect(ids).not.toContain("ollama-provider");
});
it("treats configured directory paths as plugin packages", async () => {
const stateDir = makeTempDir();
const packDir = path.join(stateDir, "packs", "demo-plugin-dir");

View File

@@ -333,11 +333,17 @@ function deriveIdHint(params: {
const unscoped = rawPackageName.includes("/")
? (rawPackageName.split("/").pop() ?? rawPackageName)
: rawPackageName;
const canonicalPackageId =
{
"ollama-provider": "ollama",
"sglang-provider": "sglang",
"vllm-provider": "vllm",
}[unscoped] ?? unscoped;
if (!params.hasMultipleExtensions) {
return unscoped;
return canonicalPackageId;
}
return `${unscoped}/${base}`;
return `${canonicalPackageId}/${base}`;
}
function addCandidate(params: {