@openclaw/irc 2026.10.10-beta.3 → 2026.10.10-beta.5
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-BBSRLy1I.mjs → channel-Bi4lj8N2.mjs} +17 -2
- package/dist/.setup/channel-plugin-api-1I8kWfv8.mjs +2 -0
- package/dist/.setup/{channel-runtime-CxEHlDNB.mjs → channel-runtime-B4OMtNnX.mjs} +1 -1
- package/dist/.source-module-urls/4751df78f545ae971ceb22b6e4bff6086f63313240899a1d9884b970424a305e.json +1 -0
- package/dist/api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/setup-entry.js +1 -1
- package/package.json +4 -4
- package/dist/.setup/channel-plugin-api-8bCK12Fl.mjs +0 -2
|
@@ -207,7 +207,7 @@ async function startIrcGatewayAccount(ctx) {
|
|
|
207
207
|
});
|
|
208
208
|
if (!account.configured) throw new Error(`IRC is not configured for account "${account.accountId}" (need host and nick in channels.irc).`);
|
|
209
209
|
ctx.log?.info?.(`[${account.accountId}] starting IRC provider (${account.host}:${account.port}${account.tls ? " tls" : ""})`);
|
|
210
|
-
const { monitorIrcProvider } = await import("./channel-runtime-
|
|
210
|
+
const { monitorIrcProvider } = await import("./channel-runtime-B4OMtNnX.mjs");
|
|
211
211
|
await runPassiveAccountLifecycle({
|
|
212
212
|
abortSignal: ctx.abortSignal,
|
|
213
213
|
start: async () => await monitorIrcProvider({
|
|
@@ -507,6 +507,7 @@ const IRC_MAX_LINE_BYTES = 512;
|
|
|
507
507
|
const IRC_MAX_RELAY_USER_BYTES = 11;
|
|
508
508
|
const IRC_MAX_RELAY_HOST_BYTES = 63;
|
|
509
509
|
const IRC_MAX_INBOUND_LINE_LENGTH = 16384;
|
|
510
|
+
const IRC_LIVENESS_TIMEOUT_MS = 24e4;
|
|
510
511
|
function takeIrcPrivmsgChunk(text, maxChars, maxBytes) {
|
|
511
512
|
let end = 0;
|
|
512
513
|
let bytes = 0;
|
|
@@ -646,9 +647,20 @@ async function connectIrcClient(options) {
|
|
|
646
647
|
throw error;
|
|
647
648
|
});
|
|
648
649
|
};
|
|
650
|
+
let lastReceivedAt = Date.now();
|
|
651
|
+
const livenessTimer = setInterval(() => {
|
|
652
|
+
if (!ready || closed) return;
|
|
653
|
+
const silentMs = Date.now() - lastReceivedAt;
|
|
654
|
+
if (silentMs >= IRC_LIVENESS_TIMEOUT_MS) {
|
|
655
|
+
fail(/* @__PURE__ */ new Error(`IRC server sent nothing for ${Math.round(silentMs / 1e3)}s; reconnecting`));
|
|
656
|
+
socket.destroy();
|
|
657
|
+
} else if (silentMs >= IRC_LIVENESS_TIMEOUT_MS / 2) sendRaw("PING :openclaw");
|
|
658
|
+
}, 3e4);
|
|
659
|
+
livenessTimer.unref();
|
|
649
660
|
const quit = (reason) => {
|
|
650
661
|
if (closed) return;
|
|
651
662
|
closed = true;
|
|
663
|
+
clearInterval(livenessTimer);
|
|
652
664
|
removeAbortListener?.();
|
|
653
665
|
removeAbortListener = null;
|
|
654
666
|
const safeReason = sanitizeIrcOutboundText(reason ?? "bye");
|
|
@@ -661,6 +673,7 @@ async function connectIrcClient(options) {
|
|
|
661
673
|
const close = () => {
|
|
662
674
|
if (closed) return;
|
|
663
675
|
closed = true;
|
|
676
|
+
clearInterval(livenessTimer);
|
|
664
677
|
removeAbortListener?.();
|
|
665
678
|
removeAbortListener = null;
|
|
666
679
|
socket.destroy();
|
|
@@ -675,6 +688,7 @@ async function connectIrcClient(options) {
|
|
|
675
688
|
};
|
|
676
689
|
socket.on("data", (chunk) => {
|
|
677
690
|
if (receiveOverflowed) return;
|
|
691
|
+
lastReceivedAt = Date.now();
|
|
678
692
|
buffer += chunk;
|
|
679
693
|
let idx = buffer.indexOf("\n");
|
|
680
694
|
while (idx !== -1) {
|
|
@@ -763,6 +777,7 @@ async function connectIrcClient(options) {
|
|
|
763
777
|
fail(err);
|
|
764
778
|
});
|
|
765
779
|
socket.once("close", () => {
|
|
780
|
+
clearInterval(livenessTimer);
|
|
766
781
|
if (!closed) {
|
|
767
782
|
closed = true;
|
|
768
783
|
removeAbortListener?.();
|
|
@@ -1775,7 +1790,7 @@ const ircPlugin = createChatChannelPlugin({
|
|
|
1775
1790
|
notify: async ({ cfg, id, message, accountId }) => {
|
|
1776
1791
|
const target = normalizePairingTarget(id);
|
|
1777
1792
|
if (!target) throw new Error(`invalid IRC pairing id: ${id}`);
|
|
1778
|
-
const { sendMessageIrc } = await import("./channel-runtime-
|
|
1793
|
+
const { sendMessageIrc } = await import("./channel-runtime-B4OMtNnX.mjs");
|
|
1779
1794
|
await sendMessageIrc(target, message, {
|
|
1780
1795
|
cfg,
|
|
1781
1796
|
accountId
|
|
@@ -1,4 +1,4 @@
|
|
|
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-
|
|
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
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";
|
|
@@ -0,0 +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"]}
|
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-
|
|
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
2
|
import { r as setIrcRuntime } from "./.setup/runtime-C_V9tmpk.mjs";
|
|
3
3
|
export { ircPlugin, ircSetupAdapter, ircSetupWizard, listEnabledIrcAccounts, listIrcAccountIds, resolveDefaultIrcAccountId, resolveIrcAccount, setIrcRuntime };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as ircPlugin } from "./.setup/channel-
|
|
1
|
+
export { t as ircPlugin } from "./.setup/channel-Bi4lj8N2.mjs";
|
package/dist/setup-entry.js
CHANGED
|
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
|
|
|
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-1I8kWfv8.mjs", import.meta.url).href),
|
|
8
8
|
exportName: "ircPlugin"
|
|
9
9
|
},
|
|
10
10
|
secrets: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/irc",
|
|
3
|
-
"version": "2026.10.10-beta.
|
|
3
|
+
"version": "2026.10.10-beta.5",
|
|
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.
|
|
124
|
+
"pluginApi": ">=2026.10.10-beta.5"
|
|
125
125
|
},
|
|
126
126
|
"build": {
|
|
127
|
-
"openclawVersion": "2026.10.10-beta.
|
|
127
|
+
"openclawVersion": "2026.10.10-beta.5",
|
|
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.
|
|
154
|
+
"openclaw": ">=2026.10.10-beta.5"
|
|
155
155
|
},
|
|
156
156
|
"peerDependenciesMeta": {
|
|
157
157
|
"openclaw": {
|