Matrix-js: adopt scoped plugin-sdk subpath on plugin branch

This commit is contained in:
Gustavo Madeira Santana
2026-03-04 09:59:07 -05:00
parent 268086ed31
commit ff3ee813b0
49 changed files with 847 additions and 109 deletions

View File

@@ -41,6 +41,55 @@ const exportedNames = exportMatch[1]
const exportSet = new Set(exportedNames);
const requiredSubpathEntries = [
"core",
"compat",
"telegram",
"discord",
"slack",
"signal",
"imessage",
"whatsapp",
"line",
"msteams",
"acpx",
"bluebubbles",
"copilot-proxy",
"device-pair",
"diagnostics-otel",
"diffs",
"feishu",
"google-gemini-cli-auth",
"googlechat",
"irc",
"llm-task",
"lobster",
"matrix",
"matrix-js",
"mattermost",
"memory-core",
"memory-lancedb",
"minimax-portal-auth",
"nextcloud-talk",
"nostr",
"open-prose",
"phone-control",
"qwen-portal-auth",
"synology-chat",
"talk-voice",
"test-utils",
"thread-ownership",
"tlon",
"twitch",
"voice-call",
"zalo",
"zalouser",
"account-id",
"keyed-async-queue",
];
const requiredRuntimeShimEntries = ["root-alias.cjs"];
// Critical functions that channel extension plugins import from openclaw/plugin-sdk.
// If any of these are missing, plugins will fail at runtime with:
// TypeError: (0 , _pluginSdk.<name>) is not a function
@@ -76,10 +125,33 @@ for (const name of requiredExports) {
}
}
for (const entry of requiredSubpathEntries) {
const jsPath = resolve(__dirname, "..", "dist", "plugin-sdk", `${entry}.js`);
const dtsPath = resolve(__dirname, "..", "dist", "plugin-sdk", `${entry}.d.ts`);
if (!existsSync(jsPath)) {
console.error(`MISSING SUBPATH JS: dist/plugin-sdk/${entry}.js`);
missing += 1;
}
if (!existsSync(dtsPath)) {
console.error(`MISSING SUBPATH DTS: dist/plugin-sdk/${entry}.d.ts`);
missing += 1;
}
}
for (const entry of requiredRuntimeShimEntries) {
const shimPath = resolve(__dirname, "..", "dist", "plugin-sdk", entry);
if (!existsSync(shimPath)) {
console.error(`MISSING RUNTIME SHIM: dist/plugin-sdk/${entry}`);
missing += 1;
}
}
if (missing > 0) {
console.error(`\nERROR: ${missing} required export(s) missing from dist/plugin-sdk/index.js.`);
console.error(
`\nERROR: ${missing} required plugin-sdk artifact(s) missing (named exports or subpath files).`,
);
console.error("This will break channel extension plugins at runtime.");
console.error("Check src/plugin-sdk/index.ts and rebuild.");
console.error("Check src/plugin-sdk/index.ts, subpath entries, and rebuild.");
process.exit(1);
}

View File

@@ -14,6 +14,95 @@ const requiredPathGroups = [
["dist/entry.js", "dist/entry.mjs"],
"dist/plugin-sdk/index.js",
"dist/plugin-sdk/index.d.ts",
"dist/plugin-sdk/core.js",
"dist/plugin-sdk/core.d.ts",
"dist/plugin-sdk/root-alias.cjs",
"dist/plugin-sdk/compat.js",
"dist/plugin-sdk/compat.d.ts",
"dist/plugin-sdk/telegram.js",
"dist/plugin-sdk/telegram.d.ts",
"dist/plugin-sdk/discord.js",
"dist/plugin-sdk/discord.d.ts",
"dist/plugin-sdk/slack.js",
"dist/plugin-sdk/slack.d.ts",
"dist/plugin-sdk/signal.js",
"dist/plugin-sdk/signal.d.ts",
"dist/plugin-sdk/imessage.js",
"dist/plugin-sdk/imessage.d.ts",
"dist/plugin-sdk/whatsapp.js",
"dist/plugin-sdk/whatsapp.d.ts",
"dist/plugin-sdk/line.js",
"dist/plugin-sdk/line.d.ts",
"dist/plugin-sdk/msteams.js",
"dist/plugin-sdk/msteams.d.ts",
"dist/plugin-sdk/acpx.js",
"dist/plugin-sdk/acpx.d.ts",
"dist/plugin-sdk/bluebubbles.js",
"dist/plugin-sdk/bluebubbles.d.ts",
"dist/plugin-sdk/copilot-proxy.js",
"dist/plugin-sdk/copilot-proxy.d.ts",
"dist/plugin-sdk/device-pair.js",
"dist/plugin-sdk/device-pair.d.ts",
"dist/plugin-sdk/diagnostics-otel.js",
"dist/plugin-sdk/diagnostics-otel.d.ts",
"dist/plugin-sdk/diffs.js",
"dist/plugin-sdk/diffs.d.ts",
"dist/plugin-sdk/feishu.js",
"dist/plugin-sdk/feishu.d.ts",
"dist/plugin-sdk/google-gemini-cli-auth.js",
"dist/plugin-sdk/google-gemini-cli-auth.d.ts",
"dist/plugin-sdk/googlechat.js",
"dist/plugin-sdk/googlechat.d.ts",
"dist/plugin-sdk/irc.js",
"dist/plugin-sdk/irc.d.ts",
"dist/plugin-sdk/llm-task.js",
"dist/plugin-sdk/llm-task.d.ts",
"dist/plugin-sdk/lobster.js",
"dist/plugin-sdk/lobster.d.ts",
"dist/plugin-sdk/matrix.js",
"dist/plugin-sdk/matrix.d.ts",
"dist/plugin-sdk/matrix-js.js",
"dist/plugin-sdk/matrix-js.d.ts",
"dist/plugin-sdk/mattermost.js",
"dist/plugin-sdk/mattermost.d.ts",
"dist/plugin-sdk/memory-core.js",
"dist/plugin-sdk/memory-core.d.ts",
"dist/plugin-sdk/memory-lancedb.js",
"dist/plugin-sdk/memory-lancedb.d.ts",
"dist/plugin-sdk/minimax-portal-auth.js",
"dist/plugin-sdk/minimax-portal-auth.d.ts",
"dist/plugin-sdk/nextcloud-talk.js",
"dist/plugin-sdk/nextcloud-talk.d.ts",
"dist/plugin-sdk/nostr.js",
"dist/plugin-sdk/nostr.d.ts",
"dist/plugin-sdk/open-prose.js",
"dist/plugin-sdk/open-prose.d.ts",
"dist/plugin-sdk/phone-control.js",
"dist/plugin-sdk/phone-control.d.ts",
"dist/plugin-sdk/qwen-portal-auth.js",
"dist/plugin-sdk/qwen-portal-auth.d.ts",
"dist/plugin-sdk/synology-chat.js",
"dist/plugin-sdk/synology-chat.d.ts",
"dist/plugin-sdk/talk-voice.js",
"dist/plugin-sdk/talk-voice.d.ts",
"dist/plugin-sdk/test-utils.js",
"dist/plugin-sdk/test-utils.d.ts",
"dist/plugin-sdk/thread-ownership.js",
"dist/plugin-sdk/thread-ownership.d.ts",
"dist/plugin-sdk/tlon.js",
"dist/plugin-sdk/tlon.d.ts",
"dist/plugin-sdk/twitch.js",
"dist/plugin-sdk/twitch.d.ts",
"dist/plugin-sdk/voice-call.js",
"dist/plugin-sdk/voice-call.d.ts",
"dist/plugin-sdk/zalo.js",
"dist/plugin-sdk/zalo.d.ts",
"dist/plugin-sdk/zalouser.js",
"dist/plugin-sdk/zalouser.d.ts",
"dist/plugin-sdk/account-id.js",
"dist/plugin-sdk/account-id.d.ts",
"dist/plugin-sdk/keyed-async-queue.js",
"dist/plugin-sdk/keyed-async-queue.d.ts",
"dist/build-info.json",
];
const forbiddenPrefixes = ["dist/OpenClaw.app/"];

View File

@@ -6,7 +6,53 @@ import path from "node:path";
//
// Our package export map points subpath `types` at `dist/plugin-sdk/<entry>.d.ts`, so we
// generate stable entry d.ts files that re-export the real declarations.
const entrypoints = ["index", "account-id"] as const;
const entrypoints = [
"index",
"core",
"compat",
"telegram",
"discord",
"slack",
"signal",
"imessage",
"whatsapp",
"line",
"msteams",
"acpx",
"bluebubbles",
"copilot-proxy",
"device-pair",
"diagnostics-otel",
"diffs",
"feishu",
"google-gemini-cli-auth",
"googlechat",
"irc",
"llm-task",
"lobster",
"matrix",
"matrix-js",
"mattermost",
"memory-core",
"memory-lancedb",
"minimax-portal-auth",
"nextcloud-talk",
"nostr",
"open-prose",
"phone-control",
"qwen-portal-auth",
"synology-chat",
"talk-voice",
"test-utils",
"thread-ownership",
"tlon",
"twitch",
"voice-call",
"zalo",
"zalouser",
"account-id",
"keyed-async-queue",
] as const;
for (const entry of entrypoints) {
const out = path.join(process.cwd(), `dist/plugin-sdk/${entry}.d.ts`);
fs.mkdirSync(path.dirname(out), { recursive: true });