From d341d68180682ebd5a9653cbe426492990cd0084 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 17 Mar 2026 23:31:28 -0700 Subject: [PATCH] Plugin SDK: trim legacy helper exports --- extensions/copilot-proxy/runtime-api.ts | 2 +- extensions/device-pair/api.ts | 2 +- extensions/diagnostics-otel/api.ts | 2 +- extensions/diffs/api.ts | 2 +- extensions/llm-task/api.ts | 2 +- extensions/memory-lancedb/api.ts | 2 +- extensions/open-prose/runtime-api.ts | 2 +- extensions/phone-control/index.test.ts | 8 ++--- extensions/phone-control/runtime-api.ts | 2 +- extensions/talk-voice/api.ts | 2 +- extensions/thread-ownership/api.ts | 2 +- extensions/voice-call/api.ts | 2 +- package.json | 44 ------------------------- scripts/lib/plugin-sdk-entrypoints.json | 11 ------- src/plugin-sdk/subpaths.test.ts | 20 +++++++++++ src/plugin-sdk/twitch.ts | 5 ++- 16 files changed, 39 insertions(+), 71 deletions(-) diff --git a/extensions/copilot-proxy/runtime-api.ts b/extensions/copilot-proxy/runtime-api.ts index 849136c6efb..9f59e519281 100644 --- a/extensions/copilot-proxy/runtime-api.ts +++ b/extensions/copilot-proxy/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/copilot-proxy"; +export * from "../../src/plugin-sdk/copilot-proxy.js"; diff --git a/extensions/device-pair/api.ts b/extensions/device-pair/api.ts index 299ad90f05d..137cd4b89ba 100644 --- a/extensions/device-pair/api.ts +++ b/extensions/device-pair/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/device-pair"; +export * from "../../src/plugin-sdk/device-pair.js"; diff --git a/extensions/diagnostics-otel/api.ts b/extensions/diagnostics-otel/api.ts index 01d7aed8989..077ad45965f 100644 --- a/extensions/diagnostics-otel/api.ts +++ b/extensions/diagnostics-otel/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/diagnostics-otel"; +export * from "../../src/plugin-sdk/diagnostics-otel.js"; diff --git a/extensions/diffs/api.ts b/extensions/diffs/api.ts index e6fbaf9022a..a200daea1fd 100644 --- a/extensions/diffs/api.ts +++ b/extensions/diffs/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/diffs"; +export * from "../../src/plugin-sdk/diffs.js"; diff --git a/extensions/llm-task/api.ts b/extensions/llm-task/api.ts index 8eebdd06e0b..25e5e13d5ca 100644 --- a/extensions/llm-task/api.ts +++ b/extensions/llm-task/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/llm-task"; +export * from "../../src/plugin-sdk/llm-task.js"; diff --git a/extensions/memory-lancedb/api.ts b/extensions/memory-lancedb/api.ts index c1bd12dd4b7..ce6e02cf02f 100644 --- a/extensions/memory-lancedb/api.ts +++ b/extensions/memory-lancedb/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/memory-lancedb"; +export * from "../../src/plugin-sdk/memory-lancedb.js"; diff --git a/extensions/open-prose/runtime-api.ts b/extensions/open-prose/runtime-api.ts index 1601f81be1f..1a7ce98ffef 100644 --- a/extensions/open-prose/runtime-api.ts +++ b/extensions/open-prose/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/open-prose"; +export * from "../../src/plugin-sdk/open-prose.js"; diff --git a/extensions/phone-control/index.test.ts b/extensions/phone-control/index.test.ts index e5fe260463b..21494a11a38 100644 --- a/extensions/phone-control/index.test.ts +++ b/extensions/phone-control/index.test.ts @@ -1,14 +1,14 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import { describe, expect, it, vi } from "vitest"; +import { createTestPluginApi } from "../../test/helpers/extensions/plugin-api.js"; +import registerPhoneControl from "./index.js"; import type { OpenClawPluginApi, OpenClawPluginCommandDefinition, PluginCommandContext, -} from "openclaw/plugin-sdk/phone-control"; -import { describe, expect, it, vi } from "vitest"; -import { createTestPluginApi } from "../../test/helpers/extensions/plugin-api.js"; -import registerPhoneControl from "./index.js"; +} from "./runtime-api.js"; function createApi(params: { stateDir: string; diff --git a/extensions/phone-control/runtime-api.ts b/extensions/phone-control/runtime-api.ts index 2e9e0adeba2..c113b9802be 100644 --- a/extensions/phone-control/runtime-api.ts +++ b/extensions/phone-control/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/phone-control"; +export * from "../../src/plugin-sdk/phone-control.js"; diff --git a/extensions/talk-voice/api.ts b/extensions/talk-voice/api.ts index a5ae821e944..5f50f1a5247 100644 --- a/extensions/talk-voice/api.ts +++ b/extensions/talk-voice/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/talk-voice"; +export * from "../../src/plugin-sdk/talk-voice.js"; diff --git a/extensions/thread-ownership/api.ts b/extensions/thread-ownership/api.ts index d94a5fd68e1..16e4afef70a 100644 --- a/extensions/thread-ownership/api.ts +++ b/extensions/thread-ownership/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/thread-ownership"; +export * from "../../src/plugin-sdk/thread-ownership.js"; diff --git a/extensions/voice-call/api.ts b/extensions/voice-call/api.ts index ef9f7d7a3c0..d0f69774b5e 100644 --- a/extensions/voice-call/api.ts +++ b/extensions/voice-call/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/voice-call"; +export * from "../../src/plugin-sdk/voice-call.js"; diff --git a/package.json b/package.json index 6da833831a9..c4cdd342df1 100644 --- a/package.json +++ b/package.json @@ -230,22 +230,6 @@ "types": "./dist/plugin-sdk/bluebubbles.d.ts", "default": "./dist/plugin-sdk/bluebubbles.js" }, - "./plugin-sdk/copilot-proxy": { - "types": "./dist/plugin-sdk/copilot-proxy.d.ts", - "default": "./dist/plugin-sdk/copilot-proxy.js" - }, - "./plugin-sdk/device-pair": { - "types": "./dist/plugin-sdk/device-pair.d.ts", - "default": "./dist/plugin-sdk/device-pair.js" - }, - "./plugin-sdk/diagnostics-otel": { - "types": "./dist/plugin-sdk/diagnostics-otel.d.ts", - "default": "./dist/plugin-sdk/diagnostics-otel.js" - }, - "./plugin-sdk/diffs": { - "types": "./dist/plugin-sdk/diffs.d.ts", - "default": "./dist/plugin-sdk/diffs.js" - }, "./plugin-sdk/feishu": { "types": "./dist/plugin-sdk/feishu.d.ts", "default": "./dist/plugin-sdk/feishu.js" @@ -258,10 +242,6 @@ "types": "./dist/plugin-sdk/irc.d.ts", "default": "./dist/plugin-sdk/irc.js" }, - "./plugin-sdk/llm-task": { - "types": "./dist/plugin-sdk/llm-task.d.ts", - "default": "./dist/plugin-sdk/llm-task.js" - }, "./plugin-sdk/lobster": { "types": "./dist/plugin-sdk/lobster.d.ts", "default": "./dist/plugin-sdk/lobster.js" @@ -282,10 +262,6 @@ "types": "./dist/plugin-sdk/memory-core.d.ts", "default": "./dist/plugin-sdk/memory-core.js" }, - "./plugin-sdk/memory-lancedb": { - "types": "./dist/plugin-sdk/memory-lancedb.d.ts", - "default": "./dist/plugin-sdk/memory-lancedb.js" - }, "./plugin-sdk/minimax-portal-auth": { "types": "./dist/plugin-sdk/minimax-portal-auth.d.ts", "default": "./dist/plugin-sdk/minimax-portal-auth.js" @@ -298,14 +274,6 @@ "types": "./dist/plugin-sdk/nostr.d.ts", "default": "./dist/plugin-sdk/nostr.js" }, - "./plugin-sdk/open-prose": { - "types": "./dist/plugin-sdk/open-prose.d.ts", - "default": "./dist/plugin-sdk/open-prose.js" - }, - "./plugin-sdk/phone-control": { - "types": "./dist/plugin-sdk/phone-control.d.ts", - "default": "./dist/plugin-sdk/phone-control.js" - }, "./plugin-sdk/qwen-portal-auth": { "types": "./dist/plugin-sdk/qwen-portal-auth.d.ts", "default": "./dist/plugin-sdk/qwen-portal-auth.js" @@ -314,10 +282,6 @@ "types": "./dist/plugin-sdk/synology-chat.d.ts", "default": "./dist/plugin-sdk/synology-chat.js" }, - "./plugin-sdk/talk-voice": { - "types": "./dist/plugin-sdk/talk-voice.d.ts", - "default": "./dist/plugin-sdk/talk-voice.js" - }, "./plugin-sdk/testing": { "types": "./dist/plugin-sdk/testing.d.ts", "default": "./dist/plugin-sdk/testing.js" @@ -326,10 +290,6 @@ "types": "./dist/plugin-sdk/test-utils.d.ts", "default": "./dist/plugin-sdk/test-utils.js" }, - "./plugin-sdk/thread-ownership": { - "types": "./dist/plugin-sdk/thread-ownership.d.ts", - "default": "./dist/plugin-sdk/thread-ownership.js" - }, "./plugin-sdk/tlon": { "types": "./dist/plugin-sdk/tlon.d.ts", "default": "./dist/plugin-sdk/tlon.js" @@ -338,10 +298,6 @@ "types": "./dist/plugin-sdk/twitch.d.ts", "default": "./dist/plugin-sdk/twitch.js" }, - "./plugin-sdk/voice-call": { - "types": "./dist/plugin-sdk/voice-call.d.ts", - "default": "./dist/plugin-sdk/voice-call.js" - }, "./plugin-sdk/zalo": { "types": "./dist/plugin-sdk/zalo.d.ts", "default": "./dist/plugin-sdk/zalo.js" diff --git a/scripts/lib/plugin-sdk-entrypoints.json b/scripts/lib/plugin-sdk-entrypoints.json index 108199d7772..ba136b70f6d 100644 --- a/scripts/lib/plugin-sdk-entrypoints.json +++ b/scripts/lib/plugin-sdk-entrypoints.json @@ -47,34 +47,23 @@ "msteams", "acpx", "bluebubbles", - "copilot-proxy", - "device-pair", - "diagnostics-otel", - "diffs", "feishu", "googlechat", "irc", - "llm-task", "lobster", "lazy-runtime", "matrix", "mattermost", "memory-core", - "memory-lancedb", "minimax-portal-auth", "nextcloud-talk", "nostr", - "open-prose", - "phone-control", "qwen-portal-auth", "synology-chat", - "talk-voice", "testing", "test-utils", - "thread-ownership", "tlon", "twitch", - "voice-call", "zalo", "zalouser", "account-helpers", diff --git a/src/plugin-sdk/subpaths.test.ts b/src/plugin-sdk/subpaths.test.ts index 313d2d4d263..6a5cec3d57c 100644 --- a/src/plugin-sdk/subpaths.test.ts +++ b/src/plugin-sdk/subpaths.test.ts @@ -42,6 +42,20 @@ const bundledExtensionSubpathLoaders = pluginSdkSubpaths.map((id: string) => ({ load: () => importPluginSdkSubpath(`openclaw/plugin-sdk/${id}`), })); +const trimmedLegacyExtensionSubpaths = [ + "copilot-proxy", + "device-pair", + "diagnostics-otel", + "diffs", + "llm-task", + "memory-lancedb", + "open-prose", + "phone-control", + "talk-voice", + "thread-ownership", + "voice-call", +] as const; + const asExports = (mod: object) => mod as Record; const ircSdk = await import("openclaw/plugin-sdk/irc"); const feishuSdk = await import("openclaw/plugin-sdk/feishu"); @@ -312,6 +326,12 @@ describe("plugin-sdk subpath exports", () => { } }); + it("does not advertise trimmed legacy extension helper seams", () => { + for (const id of trimmedLegacyExtensionSubpaths) { + expect(pluginSdkSubpaths).not.toContain(id); + } + }); + it("keeps the newly added bundled plugin-sdk contracts available", async () => { expect(typeof bluebubblesSdk.parseFiniteNumber).toBe("function"); expect(typeof matrixSdk.matrixSetupWizard).toBe("object"); diff --git a/src/plugin-sdk/twitch.ts b/src/plugin-sdk/twitch.ts index 9b200cf03f7..907cdd171fa 100644 --- a/src/plugin-sdk/twitch.ts +++ b/src/plugin-sdk/twitch.ts @@ -33,4 +33,7 @@ export type { OpenClawPluginApi } from "../plugins/types.js"; export type { RuntimeEnv } from "../runtime.js"; export { formatDocsLink } from "../terminal/links.js"; export type { WizardPrompter } from "../wizard/prompts.js"; -export { twitchSetupAdapter, twitchSetupWizard } from "../../extensions/twitch/api.js"; +export { + twitchSetupAdapter, + twitchSetupWizard, +} from "../../extensions/twitch/src/setup-surface.js";