@openclaw/irc 2026.10.10-beta.5 → 2026.10.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export { t as ircPlugin } from "./channel-t-k-A5n4.mjs";
2
+ import "../channel-plugin-api.js";
@@ -1,5 +1,5 @@
1
- import { a as resolveIrcGroupRequireMention, c as connectIrcClient, d as sanitizeIrcAssistantText, f as createIrcIngressSubject, h as normalizeIrcAllowEntry, i as resolveIrcGroupMatch, l as parseIrcLine, m as isChannelTarget, o as sendMessageIrc, p as ircIngressIdentity, s as buildIrcConnectOptions, u as parseIrcPrefix, y as resolveIrcAccount } from "./channel-Bi4lj8N2.mjs";
2
- import { t as getIrcRuntime } from "./runtime-C_V9tmpk.mjs";
1
+ import { a as resolveIrcGroupRequireMention, c as connectIrcClient, d as sanitizeIrcAssistantText, f as createIrcIngressSubject, h as normalizeIrcAllowEntry, i as resolveIrcGroupMatch, l as parseIrcLine, m as isChannelTarget, o as sendMessageIrc, p as ircIngressIdentity, s as buildIrcConnectOptions, u as parseIrcPrefix, y as resolveIrcAccount } from "./channel-t-k-A5n4.mjs";
2
+ import { t as getIrcRuntime } from "./runtime-CsdAoZex.mjs";
3
3
  import { channelIngressRoutes } from "openclaw/plugin-sdk/channel-ingress-runtime";
4
4
  import { computeBackoff } from "openclaw/plugin-sdk/runtime-env";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -14,7 +14,7 @@ import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-na
14
14
  import { deliverFormattedTextWithAttachments } from "openclaw/plugin-sdk/reply-payload";
15
15
  import { GROUP_POLICY_BLOCKED_LABEL, resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
16
16
  import { escapeRegExp } from "openclaw/plugin-sdk/text-utility-runtime";
17
- //#region extensions/irc/src/inbound.ts
17
+ // extensions/irc/src/inbound.ts
18
18
  const CHANNEL_ID = "irc";
19
19
  const IRC_NICK_CHARACTER = String.raw`[A-Za-z0-9_\-\[\]\\\x60^{}|~]`;
20
20
  const IRC_RFC1459_CASE_EQUIVALENTS = /* @__PURE__ */ new Map([
@@ -335,8 +335,7 @@ async function handleIrcInbound(params) {
335
335
  }
336
336
  return ingressState.handoff === "deferred" || ingressState.handoff === "abandoned" ? { kind: "deferred" } : { kind: "completed" };
337
337
  }
338
- //#endregion
339
- //#region extensions/irc/src/irc-ingress.ts
338
+ // extensions/irc/src/irc-ingress.ts
340
339
  const IRC_INGRESS_PAYLOAD_VERSION = 1;
341
340
  const IRC_INGRESS_POLL_INTERVAL_MS = 1e3;
342
341
  const IrcIngressPayloadError = createChannelIngressError("IrcIngressPayloadError");
@@ -469,8 +468,7 @@ function createIrcIngressMonitor(options) {
469
468
  waitForIdle: monitor.waitForIdle
470
469
  };
471
470
  }
472
- //#endregion
473
- //#region extensions/irc/src/reconnect-backoff.ts
471
+ // extensions/irc/src/reconnect-backoff.ts
474
472
  const IRC_RECONNECT_BACKOFF = {
475
473
  initialMs: 1e3,
476
474
  maxMs: 3e4,
@@ -493,8 +491,7 @@ function createIrcReconnectBackoff(now = Date.now) {
493
491
  }
494
492
  };
495
493
  }
496
- //#endregion
497
- //#region extensions/irc/src/monitor.ts
494
+ // extensions/irc/src/monitor.ts
498
495
  async function monitorIrcProvider(opts) {
499
496
  const core = getIrcRuntime();
500
497
  const cfg = opts.config ?? core.config.current();
@@ -648,5 +645,4 @@ async function monitorIrcProvider(opts) {
648
645
  return stopTask;
649
646
  } };
650
647
  }
651
- //#endregion
652
648
  export { monitorIrcProvider, sendMessageIrc };
@@ -1,6 +1,6 @@
1
- import { t as IrcChannelConfigSchema } from "./config-schema-Cy9tItsu.mjs";
2
- import { n as getOptionalIrcRuntime } from "./runtime-C_V9tmpk.mjs";
3
- import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-C5i-29Hz.mjs";
1
+ import { t as IrcChannelConfigSchema } from "./config-schema-DFqPW9AB.mjs";
2
+ import { n as getOptionalIrcRuntime } from "./runtime-CsdAoZex.mjs";
3
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-0Ccz8X9F.mjs";
4
4
  import { createAccountListHelpers, describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
5
5
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
6
6
  import { formatNormalizedAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
@@ -34,7 +34,7 @@ import { assertSecretOwnerAvailable } from "openclaw/plugin-sdk/channel-secret-o
34
34
  import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
35
35
  import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/routing";
36
36
  import { applyAccountNameToChannelSection, createAllowFromSection, createPromptParsedAllowFromForAccount, createSetupInputPresenceValidator, createSetupTranslator, createStandardChannelSetupStatus, createTopLevelChannelAllowFromSetter, createTopLevelChannelDmPolicySetter, formatDocsLink, patchScopedAccountConfig, setSetupChannelEnabled, splitSetupEntries } from "openclaw/plugin-sdk/setup";
37
- //#region extensions/irc/src/accounts.ts
37
+ // extensions/irc/src/accounts.ts
38
38
  const { listAccountIds: listIrcAccountIds, resolveDefaultAccountId: resolveDefaultIrcAccountId, resolveAccountConfig: mergeIrcAccountConfig } = createAccountListHelpers("irc", {
39
39
  normalizeAccountId,
40
40
  omitKeys: ["defaultAccount"],
@@ -186,8 +186,7 @@ function listEnabledIrcAccounts(cfg) {
186
186
  accountId
187
187
  })).filter((account) => account.enabled);
188
188
  }
189
- //#endregion
190
- //#region extensions/irc/src/doctor.ts
189
+ // extensions/irc/src/doctor.ts
191
190
  const isIrcMutableAllowEntry = buildMutableAllowEntryDetector({ stableIdPattern: /^(?:(?:irc|user):)*[^@]*@/i });
192
191
  const collectIrcMutableAllowlistWarnings = createDangerousNameMatchingMutableAllowlistWarningCollector({
193
192
  channel: "irc",
@@ -197,8 +196,7 @@ const collectIrcMutableAllowlistWarnings = createDangerousNameMatchingMutableAll
197
196
  groupField: "allowFrom"
198
197
  })
199
198
  });
200
- //#endregion
201
- //#region extensions/irc/src/gateway.ts
199
+ // extensions/irc/src/gateway.ts
202
200
  async function startIrcGatewayAccount(ctx) {
203
201
  const account = ctx.account;
204
202
  const statusSink = createAccountStatusSink({
@@ -207,7 +205,7 @@ async function startIrcGatewayAccount(ctx) {
207
205
  });
208
206
  if (!account.configured) throw new Error(`IRC is not configured for account "${account.accountId}" (need host and nick in channels.irc).`);
209
207
  ctx.log?.info?.(`[${account.accountId}] starting IRC provider (${account.host}:${account.port}${account.tls ? " tls" : ""})`);
210
- const { monitorIrcProvider } = await import("./channel-runtime-B4OMtNnX.mjs");
208
+ const { monitorIrcProvider } = await import("./channel-runtime-exb5AWhn.mjs");
211
209
  await runPassiveAccountLifecycle({
212
210
  abortSignal: ctx.abortSignal,
213
211
  start: async () => await monitorIrcProvider({
@@ -222,8 +220,7 @@ async function startIrcGatewayAccount(ctx) {
222
220
  }
223
221
  });
224
222
  }
225
- //#endregion
226
- //#region extensions/irc/src/control-chars.ts
223
+ // extensions/irc/src/control-chars.ts
227
224
  function isIrcControlChar(charCode) {
228
225
  return charCode <= 31 || charCode === 127;
229
226
  }
@@ -232,8 +229,7 @@ function stripIrcControlChars(value) {
232
229
  for (const char of value) if (!isIrcControlChar(char.charCodeAt(0))) out += char;
233
230
  return out;
234
231
  }
235
- //#endregion
236
- //#region extensions/irc/src/normalize.ts
232
+ // extensions/irc/src/normalize.ts
237
233
  const IRC_TARGET_PATTERN$1 = /^[^\s:]+$/u;
238
234
  function isChannelTarget(target) {
239
235
  return target.startsWith("#") || target.startsWith("&");
@@ -370,8 +366,7 @@ function createIrcIngressSubject(message) {
370
366
  }
371
367
  };
372
368
  }
373
- //#endregion
374
- //#region extensions/irc/src/outbound-base.ts
369
+ // extensions/irc/src/outbound-base.ts
375
370
  function sanitizeIrcAssistantText(text) {
376
371
  return sanitizeForPlainText(sanitizeAssistantVisibleText(text));
377
372
  }
@@ -382,8 +377,7 @@ const ircOutboundBaseAdapter = {
382
377
  textChunkLimit: 350,
383
378
  sanitizeText: ({ text }) => sanitizeIrcAssistantText(text)
384
379
  };
385
- //#endregion
386
- //#region packages/normalization-core/src/utf16-slice.ts
380
+ // packages/normalization-core/src/utf16-slice.ts
387
381
  function isHighSurrogate(codeUnit) {
388
382
  return codeUnit >= 55296 && codeUnit <= 56319;
389
383
  }
@@ -396,8 +390,7 @@ function avoidTrailingHighSurrogateBreak(text, start, end) {
396
390
  const adjusted = end - 1;
397
391
  return adjusted > start ? adjusted : end + 1;
398
392
  }
399
- //#endregion
400
- //#region packages/normalization-core/src/grapheme.ts
393
+ // packages/normalization-core/src/grapheme.ts
401
394
  let graphemeSegmenter;
402
395
  function getGraphemeSegmenter() {
403
396
  graphemeSegmenter ??= new Intl.Segmenter(void 0, { granularity: "grapheme" });
@@ -421,8 +414,7 @@ function findGraphemeChunkEnd(text, start, maxEnd, preferredEnd = maxEnd, allowP
421
414
  if (end <= start && preferred < hardEnd) end = hardEnd === text.length ? hardEnd : segments.containing(hardEnd)?.index ?? hardEnd;
422
415
  return end > start ? end : allowPartial ? avoidTrailingHighSurrogateBreak(text, start, hardEnd) : start;
423
416
  }
424
- //#endregion
425
- //#region extensions/irc/src/protocol.ts
417
+ // extensions/irc/src/protocol.ts
426
418
  const IRC_TARGET_PATTERN = /^[^\s:]+$/u;
427
419
  function parseIrcLine(line) {
428
420
  const raw = line.replace(/[\r\n]+/g, "").trim();
@@ -495,8 +487,7 @@ function sanitizeIrcTarget(raw) {
495
487
  if (raw !== raw.trim() || hasIrcControlChars(raw) || !IRC_TARGET_PATTERN.test(raw)) throw new Error(`Invalid IRC target: ${raw}`);
496
488
  return raw;
497
489
  }
498
- //#endregion
499
- //#region extensions/irc/src/client.ts
490
+ // extensions/irc/src/client.ts
500
491
  const IRC_ERROR_CODES = /* @__PURE__ */ new Set([
501
492
  "432",
502
493
  "464",
@@ -818,8 +809,7 @@ async function connectIrcClient(options) {
818
809
  close
819
810
  };
820
811
  }
821
- //#endregion
822
- //#region extensions/irc/src/connect-options.ts
812
+ // extensions/irc/src/connect-options.ts
823
813
  function buildIrcConnectOptions(account, overrides = {}) {
824
814
  assertSecretOwnerAvailable("account", `irc:${account.accountId}`);
825
815
  if (account.tokenStatus === "configured_unavailable") throw new Error(`IRC credentials for account "${account.accountId}" are configured but unavailable.`);
@@ -841,8 +831,7 @@ function buildIrcConnectOptions(account, overrides = {}) {
841
831
  ...overrides
842
832
  };
843
833
  }
844
- //#endregion
845
- //#region extensions/irc/src/send.ts
834
+ // extensions/irc/src/send.ts
846
835
  async function sendIrcMessages(to, text, opts, planMessages = (preparedText) => [{
847
836
  text: preparedText,
848
837
  replyTo: opts.replyTo
@@ -939,8 +928,7 @@ async function sendMessageIrc(to, text, opts) {
939
928
  if (!result) throw new Error("Message must be non-empty for IRC sends");
940
929
  return result;
941
930
  }
942
- //#endregion
943
- //#region extensions/irc/src/message-adapter.ts
931
+ // extensions/irc/src/message-adapter.ts
944
932
  function toIrcMessageResult({ target, ...result }) {
945
933
  return {
946
934
  ...result,
@@ -989,8 +977,7 @@ const ircMessageAdapter = defineChannelMessageAdapter({
989
977
  media: (ctx) => sendIrcMessage(ctx, ctx.mediaUrl ? `${ctx.text}\n\nAttachment: ${ctx.mediaUrl}` : ctx.text)
990
978
  }
991
979
  });
992
- //#endregion
993
- //#region extensions/irc/src/policy.ts
980
+ // extensions/irc/src/policy.ts
994
981
  function resolveIrcGroupScope(params) {
995
982
  const { "*": wildcard, ...groups } = params.groups ?? {};
996
983
  const project = (entry) => ({
@@ -1033,8 +1020,7 @@ function resolveIrcGroupToolPolicy(params) {
1033
1020
  path
1034
1021
  });
1035
1022
  }
1036
- //#endregion
1037
- //#region extensions/irc/src/probe.ts
1023
+ // extensions/irc/src/probe.ts
1038
1024
  function formatError(err) {
1039
1025
  if (err instanceof Error) return err.message;
1040
1026
  return typeof err === "string" ? err : JSON.stringify(err);
@@ -1072,8 +1058,7 @@ async function probeIrc(cfg, opts) {
1072
1058
  };
1073
1059
  }
1074
1060
  }
1075
- //#endregion
1076
- //#region extensions/irc/src/setup-core.ts
1061
+ // extensions/irc/src/setup-core.ts
1077
1062
  const channel$1 = "irc";
1078
1063
  const setIrcDmPolicy = createTopLevelChannelDmPolicySetter({ channel: channel$1 });
1079
1064
  const setIrcAllowFrom = createTopLevelChannelAllowFromSetter({ channel: channel$1 });
@@ -1222,8 +1207,7 @@ const ircSetupContract = defineChannelSetupContract({
1222
1207
  },
1223
1208
  legacyAdapter: ircSetupAdapter
1224
1209
  });
1225
- //#endregion
1226
- //#region extensions/irc/src/setup-surface.ts
1210
+ // extensions/irc/src/setup-surface.ts
1227
1211
  const t = createSetupTranslator();
1228
1212
  const channel = "irc";
1229
1213
  const USE_ENV_FLAG = "__ircUseEnv";
@@ -1541,8 +1525,7 @@ const ircSetupWizard = {
1541
1525
  dmPolicy: ircDmPolicy,
1542
1526
  disable: (cfg) => setSetupChannelEnabled(cfg, channel, false)
1543
1527
  };
1544
- //#endregion
1545
- //#region extensions/irc/src/channel.ts
1528
+ // extensions/irc/src/channel.ts
1546
1529
  const meta = {
1547
1530
  id: "irc",
1548
1531
  label: "IRC",
@@ -1790,7 +1773,7 @@ const ircPlugin = createChatChannelPlugin({
1790
1773
  notify: async ({ cfg, id, message, accountId }) => {
1791
1774
  const target = normalizePairingTarget(id);
1792
1775
  if (!target) throw new Error(`invalid IRC pairing id: ${id}`);
1793
- const { sendMessageIrc } = await import("./channel-runtime-B4OMtNnX.mjs");
1776
+ const { sendMessageIrc } = await import("./channel-runtime-exb5AWhn.mjs");
1794
1777
  await sendMessageIrc(target, message, {
1795
1778
  cfg,
1796
1779
  accountId
@@ -1816,5 +1799,4 @@ const ircPlugin = createChatChannelPlugin({
1816
1799
  }
1817
1800
  }
1818
1801
  });
1819
- //#endregion
1820
1802
  export { listIrcAccountIds as _, resolveIrcGroupRequireMention as a, connectIrcClient as c, sanitizeIrcAssistantText as d, createIrcIngressSubject as f, listEnabledIrcAccounts as g, normalizeIrcAllowEntry as h, resolveIrcGroupMatch as i, parseIrcLine as l, isChannelTarget as m, ircSetupWizard as n, sendMessageIrc as o, ircIngressIdentity as p, ircSetupAdapter as r, buildIrcConnectOptions as s, ircPlugin as t, parseIrcPrefix as u, resolveDefaultIrcAccountId as v, resolveIrcAccount as y };
@@ -1,7 +1,7 @@
1
1
  import { createChannelConfigUiHints } from "openclaw/plugin-sdk/channel-core";
2
2
  import { ChannelGroupEntrySchema, DmPolicySchema, GroupPolicySchema, MarkdownConfigSchema, ReplyRuntimeConfigSchemaShape, ReplyToModeSchema, buildChannelConfigSchema, buildMultiAccountChannelSchema, requireOpenAllowFrom } from "openclaw/plugin-sdk/channel-config-schema";
3
3
  import { z } from "zod";
4
- //#region extensions/irc/src/config-ui-hints.ts
4
+ // extensions/irc/src/config-ui-hints.ts
5
5
  const ircChannelConfigUiHints = {
6
6
  "": {
7
7
  label: "IRC",
@@ -40,8 +40,7 @@ const ircChannelConfigUiHints = {
40
40
  configWrites: true
41
41
  })
42
42
  };
43
- //#endregion
44
- //#region extensions/irc/src/config-schema.ts
43
+ // extensions/irc/src/config-schema.ts
45
44
  const IrcNickServSchema = z.object({
46
45
  enabled: z.boolean().optional(),
47
46
  service: z.string().optional(),
@@ -95,5 +94,4 @@ const IrcConfigSchema = buildMultiAccountChannelSchema(IrcAccountSchemaBase, {
95
94
  }
96
95
  });
97
96
  const IrcChannelConfigSchema = buildChannelConfigSchema(IrcConfigSchema, { uiHints: ircChannelConfigUiHints });
98
- //#endregion
99
97
  export { IrcChannelConfigSchema as t };
@@ -1,8 +1,7 @@
1
1
  import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
2
- //#region extensions/irc/src/runtime.ts
2
+ // extensions/irc/src/runtime.ts
3
3
  const { setRuntime: setIrcRuntime, getRuntime: getIrcRuntime, tryGetRuntime: getOptionalIrcRuntime } = createPluginRuntimeStore({
4
4
  pluginId: "irc",
5
5
  errorMessage: "IRC runtime not initialized"
6
6
  });
7
- //#endregion
8
7
  export { getOptionalIrcRuntime as n, setIrcRuntime as r, getIrcRuntime as t };
@@ -1,5 +1,5 @@
1
1
  import { collectNestedChannelFieldAssignments, collectSimpleChannelFieldAssignments, createChannelSecretContract, isBaseFieldActiveForChannelSurface, isEnabledFlag, isRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
2
- //#region extensions/irc/src/secret-contract.ts
2
+ // extensions/irc/src/secret-contract.ts
3
3
  const channelSecrets = createChannelSecretContract({
4
4
  channelKey: "irc",
5
5
  account: ["nickserv.password", "password"],
@@ -25,5 +25,4 @@ const channelSecrets = createChannelSecretContract({
25
25
  }
26
26
  });
27
27
  const { secretTargetRegistryEntries, collectRuntimeConfigAssignments } = channelSecrets;
28
- //#endregion
29
28
  export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
@@ -1,2 +1,2 @@
1
- export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-C5i-29Hz.mjs";
1
+ export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-0Ccz8X9F.mjs";
2
2
  import "../secret-contract-api.js";
@@ -1 +1 @@
1
- {"version":3,"entries":[{"output":"api.js","source":"extensions/irc/api.ts"},{"output":"channel-config-api.js","source":"extensions/irc/channel-config-api.ts"},{"output":"channel-plugin-api.js","source":"extensions/irc/channel-plugin-api.ts"},{"output":"doctor-contract-api.js","source":"extensions/irc/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/irc/index.ts"},{"output":"runtime-api.js","source":"extensions/irc/runtime-api.ts"},{"output":"secret-contract-api.js","source":"extensions/irc/secret-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/irc/setup-entry.ts"}],"chunks":[{"output":".setup/channel-Bi4lj8N2.mjs","sha256":"d903c2aedb1d0f0d9431401fe002fa3b1ff025ed566eac44bebce48dfb082ac1","facadeSource":null,"sources":["extensions/irc/src/accounts.ts","extensions/irc/src/channel.ts","extensions/irc/src/client.ts","extensions/irc/src/connect-options.ts","extensions/irc/src/control-chars.ts","extensions/irc/src/doctor.ts","extensions/irc/src/gateway.ts","extensions/irc/src/ingress-identity.ts","extensions/irc/src/message-adapter.ts","extensions/irc/src/normalize.ts","extensions/irc/src/outbound-base.ts","extensions/irc/src/policy.ts","extensions/irc/src/probe.ts","extensions/irc/src/protocol.ts","extensions/irc/src/send.ts","extensions/irc/src/setup-core.ts","extensions/irc/src/setup-surface.ts","packages/normalization-core/src/grapheme.ts","packages/normalization-core/src/utf16-slice.ts"]},{"output":".setup/channel-plugin-api-1I8kWfv8.mjs","sha256":"1bcc3a6fc15d466011c3a9b76038b1bfe424ecbd24cb9560d9879a4812d1d8b8","facadeSource":"extensions/irc/channel-plugin-api.ts","sources":[]},{"output":".setup/channel-runtime-B4OMtNnX.mjs","sha256":"7b59600c948833eef4005e4e45fdddf50a094700be3ac4076c73c22c3f5e6e11","facadeSource":"extensions/irc/src/channel-runtime.ts","sources":["extensions/irc/src/inbound.ts","extensions/irc/src/irc-ingress.ts","extensions/irc/src/monitor.ts","extensions/irc/src/reconnect-backoff.ts"]},{"output":".setup/config-schema-Cy9tItsu.mjs","sha256":"add8978c6443fac3c442d7d66449010bad9142b38ad2d4f127e048a27379424d","facadeSource":null,"sources":["extensions/irc/src/config-schema.ts","extensions/irc/src/config-ui-hints.ts"]},{"output":".setup/runtime-C_V9tmpk.mjs","sha256":"3f1f1b4d7ee63152a339b6a4614a28f57972bf655c73e0e7083c837370bc094c","facadeSource":null,"sources":["extensions/irc/src/runtime.ts"]},{"output":".setup/secret-contract-api-4IT9_EK6.mjs","sha256":"8d9275ff824f6c76b94e80dc043be8a12df9c8b3dc7203faa58bd2fc1bf3c244","facadeSource":"extensions/irc/secret-contract-api.ts","sources":[]},{"output":".setup/secret-contract-C5i-29Hz.mjs","sha256":"2eb99571f8fac572bc6d2a7cafe7bf7f2d864101256eb7b5aa6876fd031ee914","facadeSource":null,"sources":["extensions/irc/src/secret-contract.ts"]},{"output":"api.js","sha256":"e39b0d10e678b0912ca1196b3b4df0993ba195f73e5ac5bd9e2569c06b91dcc8","facadeSource":"extensions/irc/api.ts","sources":[]},{"output":"channel-config-api.js","sha256":"0992ef0872e2bb3dd21649d22af2bb491279f6f01d80466db2d38fed0c69f534","facadeSource":"extensions/irc/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.js","sha256":"ebeefd0b6ec09b436ad8cca5df7aa3e194e436356d7c77c39529f86e866b650f","facadeSource":"extensions/irc/channel-plugin-api.ts","sources":[]},{"output":"doctor-contract-api.js","sha256":"de1a30eb327e6de2799b8b84a8b4bd0f607d90051a2ab67f6a08ed3d29a54505","facadeSource":"extensions/irc/doctor-contract-api.ts","sources":["extensions/irc/config-doctor-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":"index.js","sha256":"26465ab4a608138b3cec93e4593f91f076be42b0fea9edad110953d71ec2e78c","facadeSource":"extensions/irc/index.ts","sources":["extensions/irc/index.ts"]},{"output":"runtime-api.js","sha256":"52b1074caae3be2b4f35e6ab34f26576c94d3a970587212b24eb8d9ac501720c","facadeSource":"extensions/irc/runtime-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"ba5440395ed290e6115b9fa94429ffd9302dad0a9077f89307928fdc106fa4f0","facadeSource":"extensions/irc/secret-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"bcd384958367c5d4a1805150fedb16ce1ffa687c29756609f199e35670d6d7d4","facadeSource":"extensions/irc/setup-entry.ts","sources":["extensions/irc/setup-entry.ts"]}],"unrenderedSources":["extensions/irc/api.ts","extensions/irc/channel-config-api.ts","extensions/irc/channel-plugin-api.ts","extensions/irc/doctor-contract-api.ts","extensions/irc/runtime-api.ts","extensions/irc/secret-contract-api.ts","extensions/irc/src/channel-runtime.ts","src/plugin-sdk/text-grapheme.ts"]}
1
+ {"version":3,"entries":[{"output":"api.js","source":"extensions/irc/api.ts"},{"output":"channel-config-api.js","source":"extensions/irc/channel-config-api.ts"},{"output":"channel-plugin-api.js","source":"extensions/irc/channel-plugin-api.ts"},{"output":"doctor-contract-api.js","source":"extensions/irc/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/irc/index.ts"},{"output":"runtime-api.js","source":"extensions/irc/runtime-api.ts"},{"output":"secret-contract-api.js","source":"extensions/irc/secret-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/irc/setup-entry.ts"}],"chunks":[{"output":".setup/channel-plugin-api-DRR9Fg5C.mjs","sha256":"595f8cb5fadb89d6916c3b2ee4461442252a6bcc3e734c0f20afb0e5476b1f12","facadeSource":"extensions/irc/channel-plugin-api.ts","sources":[]},{"output":".setup/channel-runtime-exb5AWhn.mjs","sha256":"481aebc6ffcb9c6ac70f148f7c8e8087633f5a2ed47a35512e9ba1296354b867","facadeSource":"extensions/irc/src/channel-runtime.ts","sources":["extensions/irc/src/inbound.ts","extensions/irc/src/irc-ingress.ts","extensions/irc/src/monitor.ts","extensions/irc/src/reconnect-backoff.ts"]},{"output":".setup/channel-t-k-A5n4.mjs","sha256":"235bad2d1ca030fec268f94da263a398f8045a2e15648e5065e7dbfcf84f57ce","facadeSource":null,"sources":["extensions/irc/src/accounts.ts","extensions/irc/src/channel.ts","extensions/irc/src/client.ts","extensions/irc/src/connect-options.ts","extensions/irc/src/control-chars.ts","extensions/irc/src/doctor.ts","extensions/irc/src/gateway.ts","extensions/irc/src/ingress-identity.ts","extensions/irc/src/message-adapter.ts","extensions/irc/src/normalize.ts","extensions/irc/src/outbound-base.ts","extensions/irc/src/policy.ts","extensions/irc/src/probe.ts","extensions/irc/src/protocol.ts","extensions/irc/src/send.ts","extensions/irc/src/setup-core.ts","extensions/irc/src/setup-surface.ts","packages/normalization-core/src/grapheme.ts","packages/normalization-core/src/utf16-slice.ts"]},{"output":".setup/config-schema-DFqPW9AB.mjs","sha256":"6d746ae292f6e0eb8f2955d4f0420e2b7e7ae1d38b70f0be5ca9bc58a58a3abc","facadeSource":null,"sources":["extensions/irc/src/config-schema.ts","extensions/irc/src/config-ui-hints.ts"]},{"output":".setup/runtime-CsdAoZex.mjs","sha256":"b482d973b5d4bf23cc5ec66bdc228ee7151794a36eec497e57ad9e9e27aa48b0","facadeSource":null,"sources":["extensions/irc/src/runtime.ts"]},{"output":".setup/secret-contract-0Ccz8X9F.mjs","sha256":"a2107dd2d2a2f07298fa31d9228fba57db3af18a0cf3f2e8039db0f6cbe9de15","facadeSource":null,"sources":["extensions/irc/src/secret-contract.ts"]},{"output":".setup/secret-contract-api-BabNUhhB.mjs","sha256":"f6810408d2a21938d4e2b0e823f443859ca71d84723d877f9497b6a7221c5c0d","facadeSource":"extensions/irc/secret-contract-api.ts","sources":[]},{"output":"api.js","sha256":"c1b630eb59bd96e7beac2dc42b7248139950c923e47d0f2975d82df84aa26b63","facadeSource":"extensions/irc/api.ts","sources":[]},{"output":"channel-config-api.js","sha256":"32df3451c98b492d9a4c77d3617b5511e3f21b938bb3e1e5cc3e7742fffcebd6","facadeSource":"extensions/irc/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.js","sha256":"814b49bb90e10a19f0c585e6bab086f98eb3de619e86a8ef140628e702b69c2a","facadeSource":"extensions/irc/channel-plugin-api.ts","sources":[]},{"output":"doctor-contract-api.js","sha256":"8b0484eda902108365f4548d42566303c6dcbb3ccfc89ba0e06a8633a6864819","facadeSource":"extensions/irc/doctor-contract-api.ts","sources":["extensions/irc/config-doctor-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":"index.js","sha256":"c399885749c923bf11c27c34eb67cc4f07def79ee3610b899d92db1a75e944f6","facadeSource":"extensions/irc/index.ts","sources":["extensions/irc/index.ts"]},{"output":"runtime-api.js","sha256":"71a18976cee49bc28f82b6e930e758f6efe6ea5527dff725f7cac5a823600190","facadeSource":"extensions/irc/runtime-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"01ed5e83bd4b44f756a0591ab306fb1f569fe95d78d19671a9c41e48a0a4857d","facadeSource":"extensions/irc/secret-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"6c7a77c5764106ad3b98d108a762e1026bd5def3ae83b43a2013a3c8e0d084de","facadeSource":"extensions/irc/setup-entry.ts","sources":["extensions/irc/setup-entry.ts"]}],"unrenderedSources":["extensions/irc/api.ts","extensions/irc/channel-config-api.ts","extensions/irc/channel-plugin-api.ts","extensions/irc/doctor-contract-api.ts","extensions/irc/runtime-api.ts","extensions/irc/secret-contract-api.ts","extensions/irc/src/channel-runtime.ts","src/plugin-sdk/text-grapheme.ts"]}
package/dist/api.js CHANGED
@@ -1,3 +1,3 @@
1
- import { _ as listIrcAccountIds, g as listEnabledIrcAccounts, n as ircSetupWizard, r as ircSetupAdapter, t as ircPlugin, v as resolveDefaultIrcAccountId, y as resolveIrcAccount } from "./.setup/channel-Bi4lj8N2.mjs";
2
- import { r as setIrcRuntime } from "./.setup/runtime-C_V9tmpk.mjs";
1
+ import { _ as listIrcAccountIds, g as listEnabledIrcAccounts, n as ircSetupWizard, r as ircSetupAdapter, t as ircPlugin, v as resolveDefaultIrcAccountId, y as resolveIrcAccount } from "./.setup/channel-t-k-A5n4.mjs";
2
+ import { r as setIrcRuntime } from "./.setup/runtime-CsdAoZex.mjs";
3
3
  export { ircPlugin, ircSetupAdapter, ircSetupWizard, listEnabledIrcAccounts, listIrcAccountIds, resolveDefaultIrcAccountId, resolveIrcAccount, setIrcRuntime };
@@ -1 +1 @@
1
- export { t as IrcChannelConfigSchema } from "./.setup/config-schema-Cy9tItsu.mjs";
1
+ export { t as IrcChannelConfigSchema } from "./.setup/config-schema-DFqPW9AB.mjs";
@@ -1 +1 @@
1
- export { t as ircPlugin } from "./.setup/channel-Bi4lj8N2.mjs";
1
+ export { t as ircPlugin } from "./.setup/channel-t-k-A5n4.mjs";
@@ -1,4 +1,4 @@
1
- //#region \0rolldown/runtime.js
1
+ // \0rolldown/runtime.js
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -23,8 +23,7 @@ var __copyProps = (to, from, except, desc) => {
23
23
  return to;
24
24
  };
25
25
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
26
- //#endregion
27
- //#region packages/normalization-core/src/record-coerce.ts
26
+ // packages/normalization-core/src/record-coerce.ts
28
27
  /** Type guard for non-array object records at browser-safe boundaries. */
29
28
  function isRecord(value) {
30
29
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -33,8 +32,7 @@ function isRecord(value) {
33
32
  function asNullableRecord(value) {
34
33
  return isRecord(value) ? value : null;
35
34
  }
36
- //#endregion
37
- //#region src/config/channel-config-normalization.ts
35
+ // src/config/channel-config-normalization.ts
38
36
  /** Applies one channel-specific doctor migration to every object-shaped account. */
39
37
  function normalizeChannelAccounts(params) {
40
38
  const rawAccounts = asNullableRecord(params.entry.accounts);
@@ -110,8 +108,7 @@ function normalizeChannelConfigEntries(params) {
110
108
  changes
111
109
  };
112
110
  }
113
- //#endregion
114
- //#region src/plugin-sdk/legacy-webhook-listener-migration.ts
111
+ // src/plugin-sdk/legacy-webhook-listener-migration.ts
115
112
  /** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
116
113
  function createLegacyWebhookListenerDoctorContract(params) {
117
114
  const portKey = params.portKey ?? "webhookPort";
@@ -181,13 +178,11 @@ function createLegacyWebhookListenerDoctorContract(params) {
181
178
  }
182
179
  };
183
180
  }
184
- //#endregion
185
- //#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
181
+ // \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
186
182
  var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
187
183
  import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
188
184
  __reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
189
- //#endregion
190
- //#region extensions/irc/config-doctor-api.ts
185
+ // extensions/irc/config-doctor-api.ts
191
186
  const streamingAliasMigration = (0, runtime_doctor_migrations_exports.defineChannelAliasMigration)({
192
187
  channelId: "irc",
193
188
  streaming: {
@@ -230,5 +225,4 @@ function normalizeCompatibilityConfig({ cfg }) {
230
225
  changes
231
226
  };
232
227
  }
233
- //#endregion
234
228
  export { legacyConfigRules, normalizeCompatibilityConfig };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
- //#region extensions/irc/index.ts
2
+ // extensions/irc/index.ts
3
3
  var irc_default = defineBundledChannelEntry({
4
4
  id: "irc",
5
5
  name: "IRC",
@@ -18,5 +18,4 @@ var irc_default = defineBundledChannelEntry({
18
18
  exportName: "setIrcRuntime"
19
19
  }
20
20
  });
21
- //#endregion
22
21
  export { irc_default as default };
@@ -1 +1 @@
1
- export { r as setIrcRuntime } from "./.setup/runtime-C_V9tmpk.mjs";
1
+ export { r as setIrcRuntime } from "./.setup/runtime-CsdAoZex.mjs";
@@ -1 +1 @@
1
- export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./.setup/secret-contract-C5i-29Hz.mjs";
1
+ export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./.setup/secret-contract-0Ccz8X9F.mjs";
@@ -1,16 +1,15 @@
1
1
  import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
2
  import { fileURLToPath } from "node:url";
3
- //#region extensions/irc/setup-entry.ts
3
+ // extensions/irc/setup-entry.ts
4
4
  var setup_entry_default = defineBundledChannelSetupEntry({
5
5
  importMetaUrl: import.meta.url,
6
6
  plugin: {
7
- specifier: fileURLToPath(new URL(".setup/channel-plugin-api-1I8kWfv8.mjs", import.meta.url).href),
7
+ specifier: fileURLToPath(new URL(".setup/channel-plugin-api-DRR9Fg5C.mjs", import.meta.url).href),
8
8
  exportName: "ircPlugin"
9
9
  },
10
10
  secrets: {
11
- specifier: fileURLToPath(new URL(".setup/secret-contract-api-4IT9_EK6.mjs", import.meta.url).href),
11
+ specifier: fileURLToPath(new URL(".setup/secret-contract-api-BabNUhhB.mjs", import.meta.url).href),
12
12
  exportName: "channelSecrets"
13
13
  }
14
14
  });
15
- //#endregion
16
15
  export { setup_entry_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/irc",
3
- "version": "2026.10.10-beta.5",
3
+ "version": "2026.10.10",
4
4
  "description": "OpenClaw IRC channel plugin",
5
5
  "type": "module",
6
6
  "openclaw": {
@@ -121,10 +121,10 @@
121
121
  }
122
122
  },
123
123
  "compat": {
124
- "pluginApi": ">=2026.10.10-beta.5"
124
+ "pluginApi": ">=2026.10.10"
125
125
  },
126
126
  "build": {
127
- "openclawVersion": "2026.10.10-beta.5",
127
+ "openclawVersion": "2026.10.10",
128
128
  "bundledDist": false
129
129
  },
130
130
  "release": {
@@ -151,7 +151,7 @@
151
151
  "assets/activity.svg"
152
152
  ],
153
153
  "peerDependencies": {
154
- "openclaw": ">=2026.10.10-beta.5"
154
+ "openclaw": ">=2026.10.10"
155
155
  },
156
156
  "peerDependenciesMeta": {
157
157
  "openclaw": {
@@ -1,2 +0,0 @@
1
- export { t as ircPlugin } from "./channel-Bi4lj8N2.mjs";
2
- import "../channel-plugin-api.js";