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