From 0a9616caa8fd3ca3a704bfaa4a67f1f4348d67d6 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 14 Apr 2026 18:03:16 +0100 Subject: [PATCH] fix(matrix): align extension-api source aliases --- extensions/matrix/src/plugin-entry.runtime.js | 6 ++-- .../matrix/src/plugin-entry.runtime.test.ts | 30 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/extensions/matrix/src/plugin-entry.runtime.js b/extensions/matrix/src/plugin-entry.runtime.js index 861fcb2bb46..82c6d852b3e 100644 --- a/extensions/matrix/src/plugin-entry.runtime.js +++ b/extensions/matrix/src/plugin-entry.runtime.js @@ -122,8 +122,10 @@ function buildPluginSdkAliasMap(moduleUrl) { } const extensionApi = - resolveExistingFile(path.join(packageRoot, "src", "extensionAPI"), [".ts", ".js"]) ?? - resolveExistingFile(path.join(packageRoot, "dist", "extensionAPI"), [".js"]); + resolveExistingFile( + path.join(packageRoot, "src", "extensionAPI"), + PLUGIN_SDK_SOURCE_EXTENSIONS, + ) ?? resolveExistingFile(path.join(packageRoot, "dist", "extensionAPI"), [".js"]); if (extensionApi) { aliasMap["openclaw/extension-api"] = extensionApi; } diff --git a/extensions/matrix/src/plugin-entry.runtime.test.ts b/extensions/matrix/src/plugin-entry.runtime.test.ts index 9f370b3c777..7061239f228 100644 --- a/extensions/matrix/src/plugin-entry.runtime.test.ts +++ b/extensions/matrix/src/plugin-entry.runtime.test.ts @@ -246,6 +246,36 @@ it("builds scoped and unscoped plugin-sdk aliases for the wrapper jiti loader", }); }, 240_000); +it("resolves extension-api aliases through the same source extension family", async () => { + const fixtureRoot = makeFixtureRoot(".tmp-matrix-runtime-extension-api-"); + const wrapperSource = fs.readFileSync( + path.join(REPO_ROOT, "extensions", "matrix", "src", "plugin-entry.runtime.js"), + "utf8", + ); + + delete matrixWrapperGlobal.__openclawMatrixWrapperJitiOptions; + writeOpenClawAliasFixture(fixtureRoot); + writeFixtureFile(fixtureRoot, "src/extensionAPI.mts", "export {};\n"); + writeCapturingJitiFixture(fixtureRoot); + writeFixtureFile(fixtureRoot, "extensions/matrix/src/plugin-entry.runtime.js", wrapperSource); + writeFixtureFile( + fixtureRoot, + "extensions/matrix/plugin-entry.handlers.runtime.js", + PACKAGED_RUNTIME_STUB, + ); + + const wrapperUrl = pathToFileURL( + path.join(fixtureRoot, "extensions", "matrix", "src", "plugin-entry.runtime.js"), + ); + await import(`${wrapperUrl.href}?t=${Date.now()}`); + + expect(matrixWrapperGlobal.__openclawMatrixWrapperJitiOptions).toMatchObject({ + alias: { + "openclaw/extension-api": path.join(fixtureRoot, "src", "extensionAPI.mts"), + }, + }); +}, 240_000); + it("keeps wrapper plugin-sdk aliases deterministic and ignores unsafe subpaths", async () => { const fixtureRoot = makeFixtureRoot(".tmp-matrix-runtime-alias-order-"); const wrapperSource = fs.readFileSync(