From 6e723dfd6928772f5da0146ffdd60860981963e2 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 17 Mar 2026 23:07:58 -0700 Subject: [PATCH] Plugins: internalize medium extension SDK imports --- extensions/bluebubbles/src/group-policy.ts | 2 +- extensions/discord/src/group-policy.ts | 2 +- .../google/media-understanding-provider.ts | 2 +- extensions/google/runtime-api.ts | 1 + extensions/irc/src/channel.ts | 20 +++++++++---------- extensions/irc/src/config-schema.ts | 6 +++--- extensions/line/runtime-api.ts | 1 + extensions/line/src/group-policy.ts | 2 +- extensions/line/src/setup-core.ts | 4 ++-- extensions/line/src/setup-surface.ts | 4 ++-- extensions/nostr/runtime-api.ts | 1 + extensions/nostr/src/channel.ts | 10 +++++----- extensions/nostr/src/config-schema.ts | 2 +- 13 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 extensions/google/runtime-api.ts create mode 100644 extensions/line/runtime-api.ts create mode 100644 extensions/nostr/runtime-api.ts diff --git a/extensions/bluebubbles/src/group-policy.ts b/extensions/bluebubbles/src/group-policy.ts index 656bb867a4c..d3b42cd45b4 100644 --- a/extensions/bluebubbles/src/group-policy.ts +++ b/extensions/bluebubbles/src/group-policy.ts @@ -1,9 +1,9 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/bluebubbles"; import { resolveChannelGroupRequireMention, resolveChannelGroupToolsPolicy, type GroupToolPolicyConfig, } from "openclaw/plugin-sdk/channel-policy"; +import type { OpenClawConfig } from "./runtime-api.js"; type BlueBubblesGroupContext = { cfg: OpenClawConfig; diff --git a/extensions/discord/src/group-policy.ts b/extensions/discord/src/group-policy.ts index f327a761ea0..a5a8ebac5eb 100644 --- a/extensions/discord/src/group-policy.ts +++ b/extensions/discord/src/group-policy.ts @@ -5,7 +5,7 @@ import { } from "openclaw/plugin-sdk/channel-policy"; import { type ChannelGroupContext } from "openclaw/plugin-sdk/channel-runtime"; import { normalizeAtHashSlug } from "openclaw/plugin-sdk/core"; -import type { DiscordConfig } from "openclaw/plugin-sdk/discord"; +import type { DiscordConfig } from "./runtime-api.js"; function normalizeDiscordSlug(value?: string | null) { return normalizeAtHashSlug(value); diff --git a/extensions/google/media-understanding-provider.ts b/extensions/google/media-understanding-provider.ts index 97b008ee578..73561b73ea3 100644 --- a/extensions/google/media-understanding-provider.ts +++ b/extensions/google/media-understanding-provider.ts @@ -1,4 +1,3 @@ -import { normalizeGoogleModelId, parseGeminiAuth } from "openclaw/plugin-sdk/google"; import { assertOkOrThrowHttpError, describeImageWithModel, @@ -11,6 +10,7 @@ import { type VideoDescriptionRequest, type VideoDescriptionResult, } from "openclaw/plugin-sdk/media-understanding"; +import { normalizeGoogleModelId, parseGeminiAuth } from "../runtime-api.js"; export const DEFAULT_GOOGLE_AUDIO_BASE_URL = "https://generativelanguage.googleapis.com/v1beta"; export const DEFAULT_GOOGLE_VIDEO_BASE_URL = "https://generativelanguage.googleapis.com/v1beta"; diff --git a/extensions/google/runtime-api.ts b/extensions/google/runtime-api.ts new file mode 100644 index 00000000000..3eaab2b0faf --- /dev/null +++ b/extensions/google/runtime-api.ts @@ -0,0 +1 @@ +export { normalizeGoogleModelId, parseGeminiAuth } from "openclaw/plugin-sdk/google"; diff --git a/extensions/irc/src/channel.ts b/extensions/irc/src/channel.ts index 554a01699ad..a0f6c9a5bc8 100644 --- a/extensions/irc/src/channel.ts +++ b/extensions/irc/src/channel.ts @@ -7,16 +7,6 @@ import { buildOpenGroupPolicyWarning, collectAllowlistProviderGroupPolicyWarnings, } from "openclaw/plugin-sdk/channel-policy"; -import { - buildBaseAccountStatusSnapshot, - buildBaseChannelStatusSummary, - buildChannelConfigSchema, - createAccountStatusSink, - DEFAULT_ACCOUNT_ID, - getChatChannelMeta, - PAIRING_APPROVED_MESSAGE, - type ChannelPlugin, -} from "openclaw/plugin-sdk/irc"; import { runStoppablePassiveMonitor } from "../../shared/passive-monitor.js"; import { listIrcAccountIds, @@ -34,6 +24,16 @@ import { } from "./normalize.js"; import { resolveIrcGroupMatch, resolveIrcRequireMention } from "./policy.js"; import { probeIrc } from "./probe.js"; +import { + buildBaseAccountStatusSnapshot, + buildBaseChannelStatusSummary, + buildChannelConfigSchema, + createAccountStatusSink, + DEFAULT_ACCOUNT_ID, + getChatChannelMeta, + PAIRING_APPROVED_MESSAGE, + type ChannelPlugin, +} from "./runtime-api.js"; import { getIrcRuntime } from "./runtime.js"; import { sendMessageIrc } from "./send.js"; import { ircSetupAdapter } from "./setup-core.js"; diff --git a/extensions/irc/src/config-schema.ts b/extensions/irc/src/config-schema.ts index 8b9625b5bc4..d1af189484b 100644 --- a/extensions/irc/src/config-schema.ts +++ b/extensions/irc/src/config-schema.ts @@ -1,3 +1,5 @@ +import { z } from "zod"; +import { requireChannelOpenAllowFrom } from "../../shared/config-schema-helpers.js"; import { BlockStreamingCoalesceSchema, DmConfigSchema, @@ -7,9 +9,7 @@ import { ReplyRuntimeConfigSchemaShape, ToolPolicySchema, requireOpenAllowFrom, -} from "openclaw/plugin-sdk/irc"; -import { z } from "zod"; -import { requireChannelOpenAllowFrom } from "../../shared/config-schema-helpers.js"; +} from "./runtime-api.js"; const IrcGroupSchema = z .object({ diff --git a/extensions/line/runtime-api.ts b/extensions/line/runtime-api.ts new file mode 100644 index 00000000000..af6082ba155 --- /dev/null +++ b/extensions/line/runtime-api.ts @@ -0,0 +1 @@ +export * from "openclaw/plugin-sdk/line-core"; diff --git a/extensions/line/src/group-policy.ts b/extensions/line/src/group-policy.ts index e6b4fa0ba95..eaf30e04cf7 100644 --- a/extensions/line/src/group-policy.ts +++ b/extensions/line/src/group-policy.ts @@ -1,5 +1,5 @@ import { resolveChannelGroupRequireMention } from "openclaw/plugin-sdk/channel-policy"; -import { resolveExactLineGroupConfigKey, type OpenClawConfig } from "openclaw/plugin-sdk/line-core"; +import { resolveExactLineGroupConfigKey, type OpenClawConfig } from "../runtime-api.js"; type LineGroupContext = { cfg: OpenClawConfig; diff --git a/extensions/line/src/setup-core.ts b/extensions/line/src/setup-core.ts index 363b4dcb2a1..7e894d2b87a 100644 --- a/extensions/line/src/setup-core.ts +++ b/extensions/line/src/setup-core.ts @@ -1,11 +1,11 @@ +import type { ChannelSetupAdapter, OpenClawConfig } from "openclaw/plugin-sdk/setup"; import { DEFAULT_ACCOUNT_ID, listLineAccountIds, normalizeAccountId, resolveLineAccount, type LineConfig, -} from "openclaw/plugin-sdk/line-core"; -import type { ChannelSetupAdapter, OpenClawConfig } from "openclaw/plugin-sdk/setup"; +} from "../runtime-api.js"; const channel = "line" as const; diff --git a/extensions/line/src/setup-surface.ts b/extensions/line/src/setup-surface.ts index 640ad3812b8..6f46cc92217 100644 --- a/extensions/line/src/setup-surface.ts +++ b/extensions/line/src/setup-surface.ts @@ -1,3 +1,4 @@ +import { createAllowFromSection, createTopLevelChannelDmPolicy } from "openclaw/plugin-sdk/setup"; import { DEFAULT_ACCOUNT_ID, formatDocsLink, @@ -6,8 +7,7 @@ import { splitSetupEntries, type ChannelSetupDmPolicy, type ChannelSetupWizard, -} from "openclaw/plugin-sdk/line-core"; -import { createAllowFromSection, createTopLevelChannelDmPolicy } from "openclaw/plugin-sdk/setup"; +} from "../runtime-api.js"; import { isLineConfigured, listLineAccountIds, diff --git a/extensions/nostr/runtime-api.ts b/extensions/nostr/runtime-api.ts new file mode 100644 index 00000000000..3f3d64cc3bf --- /dev/null +++ b/extensions/nostr/runtime-api.ts @@ -0,0 +1 @@ +export * from "openclaw/plugin-sdk/nostr"; diff --git a/extensions/nostr/src/channel.ts b/extensions/nostr/src/channel.ts index 63ea3436dab..3db834e8ad6 100644 --- a/extensions/nostr/src/channel.ts +++ b/extensions/nostr/src/channel.ts @@ -2,6 +2,10 @@ import { createScopedDmSecurityResolver, createTopLevelChannelConfigAdapter, } from "openclaw/plugin-sdk/channel-config-helpers"; +import { + buildPassiveChannelStatusSummary, + buildTrafficStatusSummary, +} from "../../shared/channel-status-summary.js"; import { buildChannelConfigSchema, collectStatusIssuesFromLastError, @@ -9,11 +13,7 @@ import { DEFAULT_ACCOUNT_ID, formatPairingApproveHint, type ChannelPlugin, -} from "openclaw/plugin-sdk/nostr"; -import { - buildPassiveChannelStatusSummary, - buildTrafficStatusSummary, -} from "../../shared/channel-status-summary.js"; +} from "../runtime-api.js"; import type { NostrProfile } from "./config-schema.js"; import { NostrConfigSchema } from "./config-schema.js"; import type { MetricEvent, MetricsSnapshot } from "./metrics.js"; diff --git a/extensions/nostr/src/config-schema.ts b/extensions/nostr/src/config-schema.ts index 53346b0789d..0a741d3ac6b 100644 --- a/extensions/nostr/src/config-schema.ts +++ b/extensions/nostr/src/config-schema.ts @@ -1,6 +1,6 @@ import { AllowFromListSchema, DmPolicySchema } from "openclaw/plugin-sdk/channel-config-schema"; -import { MarkdownConfigSchema, buildChannelConfigSchema } from "openclaw/plugin-sdk/nostr"; import { z } from "zod"; +import { MarkdownConfigSchema, buildChannelConfigSchema } from "../runtime-api.js"; /** * Validates https:// URLs only (no javascript:, data:, file:, etc.)