From 0636c6eafa337b0b589599c2b0b073f0b645f742 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 17 Mar 2026 20:51:53 -0700 Subject: [PATCH] Plugins: internalize irc SDK imports --- extensions/irc/src/accounts.ts | 2 +- extensions/irc/src/channel.ts | 20 +++++------ extensions/irc/src/config-schema.ts | 6 ++-- extensions/irc/src/inbound.ts | 20 +++++------ extensions/irc/src/monitor.ts | 2 +- extensions/irc/src/runtime-api.ts | 53 +++++++++++++++++++++++++++++ extensions/irc/src/runtime.ts | 2 +- extensions/irc/src/types.ts | 4 +-- 8 files changed, 81 insertions(+), 28 deletions(-) create mode 100644 extensions/irc/src/runtime-api.ts diff --git a/extensions/irc/src/accounts.ts b/extensions/irc/src/accounts.ts index f1831b02d48..66df8f9d26c 100644 --- a/extensions/irc/src/accounts.ts +++ b/extensions/irc/src/accounts.ts @@ -4,7 +4,7 @@ import { createAccountListHelpers, normalizeResolvedSecretInputString, parseOptionalDelimitedEntries, -} from "openclaw/plugin-sdk/irc"; +} from "./runtime-api.js"; import type { CoreConfig, IrcAccountConfig, IrcNickServConfig } from "./types.js"; const TRUTHY_ENV = new Set(["true", "1", "yes", "on"]); diff --git a/extensions/irc/src/channel.ts b/extensions/irc/src/channel.ts index 18fa8953045..e6a2cf6f11e 100644 --- a/extensions/irc/src/channel.ts +++ b/extensions/irc/src/channel.ts @@ -8,16 +8,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, @@ -35,6 +25,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/irc/src/inbound.ts b/extensions/irc/src/inbound.ts index a3a9e32c06e..8d1995336b4 100644 --- a/extensions/irc/src/inbound.ts +++ b/extensions/irc/src/inbound.ts @@ -1,3 +1,12 @@ +import type { ResolvedIrcAccount } from "./accounts.js"; +import { normalizeIrcAllowlist, resolveIrcAllowlistMatch } from "./normalize.js"; +import { + resolveIrcMentionGate, + resolveIrcGroupAccessGate, + resolveIrcGroupMatch, + resolveIrcGroupSenderAllowed, + resolveIrcRequireMention, +} from "./policy.js"; import { GROUP_POLICY_BLOCKED_LABEL, createScopedPairingAccess, @@ -16,16 +25,7 @@ import { type OutboundReplyPayload, type OpenClawConfig, type RuntimeEnv, -} from "openclaw/plugin-sdk/irc"; -import type { ResolvedIrcAccount } from "./accounts.js"; -import { normalizeIrcAllowlist, resolveIrcAllowlistMatch } from "./normalize.js"; -import { - resolveIrcMentionGate, - resolveIrcGroupAccessGate, - resolveIrcGroupMatch, - resolveIrcGroupSenderAllowed, - resolveIrcRequireMention, -} from "./policy.js"; +} from "./runtime-api.js"; import { getIrcRuntime } from "./runtime.js"; import { sendMessageIrc } from "./send.js"; import type { CoreConfig, IrcInboundMessage } from "./types.js"; diff --git a/extensions/irc/src/monitor.ts b/extensions/irc/src/monitor.ts index 2eec74a73d4..072c5a91081 100644 --- a/extensions/irc/src/monitor.ts +++ b/extensions/irc/src/monitor.ts @@ -1,4 +1,3 @@ -import type { RuntimeEnv } from "openclaw/plugin-sdk/irc"; import { resolveLoggerBackedRuntime } from "../../shared/runtime.js"; import { resolveIrcAccount } from "./accounts.js"; import { connectIrcClient, type IrcClient } from "./client.js"; @@ -6,6 +5,7 @@ import { buildIrcConnectOptions } from "./connect-options.js"; import { handleIrcInbound } from "./inbound.js"; import { isChannelTarget } from "./normalize.js"; import { makeIrcMessageId } from "./protocol.js"; +import type { RuntimeEnv } from "./runtime-api.js"; import { getIrcRuntime } from "./runtime.js"; import type { CoreConfig, IrcInboundMessage } from "./types.js"; diff --git a/extensions/irc/src/runtime-api.ts b/extensions/irc/src/runtime-api.ts new file mode 100644 index 00000000000..eebfe798ede --- /dev/null +++ b/extensions/irc/src/runtime-api.ts @@ -0,0 +1,53 @@ +export { + addWildcardAllowFrom, + buildBaseAccountStatusSnapshot, + buildBaseChannelStatusSummary, + buildChannelConfigSchema, + createAccountListHelpers, + createAccountStatusSink, + createLoggerBackedRuntime, + createNormalizedOutboundDeliverer, + createReplyPrefixOptions, + createScopedPairingAccess, + dispatchInboundReplyWithBase, + emptyPluginConfigSchema, + formatDocsLink, + formatPairingApproveHint, + formatTextWithAttachmentLinks, + getChatChannelMeta, + GROUP_POLICY_BLOCKED_LABEL, + isDangerousNameMatchingEnabled, + issuePairingChallenge, + logInboundDrop, + normalizeResolvedSecretInputString, + parseOptionalDelimitedEntries, + PAIRING_APPROVED_MESSAGE, + patchScopedAccountConfig, + readStoreAllowFromForDmPolicy, + resolveAllowlistProviderRuntimeGroupPolicy, + resolveControlCommandGate, + resolveDefaultGroupPolicy, + resolveEffectiveAllowFromLists, + resolveOutboundMediaUrls, + runPassiveAccountLifecycle, + setAccountEnabledInConfigSection, + setTopLevelChannelAllowFrom, + setTopLevelChannelDmPolicyWithAllowFrom, + ToolPolicySchema, + warnMissingProviderGroupPolicyFallbackOnce, + type BaseProbeResult, + type BlockStreamingCoalesceConfig, + type ChannelPlugin, + type DmConfig, + type DmPolicy, + type GroupPolicy, + type GroupToolPolicyBySenderConfig, + type GroupToolPolicyConfig, + type MarkdownConfig, + type OpenClawConfig, + type OpenClawPluginApi, + type OutboundReplyPayload, + type PluginRuntime, + type RuntimeEnv, + type WizardPrompter, +} from "openclaw/plugin-sdk/irc"; diff --git a/extensions/irc/src/runtime.ts b/extensions/irc/src/runtime.ts index 32d479d13e9..4604fe55c49 100644 --- a/extensions/irc/src/runtime.ts +++ b/extensions/irc/src/runtime.ts @@ -1,5 +1,5 @@ -import type { PluginRuntime } from "openclaw/plugin-sdk/irc"; import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store"; +import type { PluginRuntime } from "./runtime-api.js"; const { setRuntime: setIrcRuntime, getRuntime: getIrcRuntime } = createPluginRuntimeStore("IRC runtime not initialized"); diff --git a/extensions/irc/src/types.ts b/extensions/irc/src/types.ts index 42a3cafc237..a47e38e70bf 100644 --- a/extensions/irc/src/types.ts +++ b/extensions/irc/src/types.ts @@ -1,4 +1,3 @@ -import type { BaseProbeResult } from "openclaw/plugin-sdk/irc"; import type { BlockStreamingCoalesceConfig, DmConfig, @@ -8,7 +7,8 @@ import type { GroupToolPolicyConfig, MarkdownConfig, OpenClawConfig, -} from "openclaw/plugin-sdk/irc"; + BaseProbeResult, +} from "./runtime-api.js"; export type IrcChannelConfig = { requireMention?: boolean;