@openclaw/irc 2026.7.2-beta.7 → 2026.7.33
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/{channel-DoavT7vs.js → .setup/channel-SaGThQQW.mjs} +146 -199
- package/dist/.setup/channel-plugin-api-04wlnIps.mjs +3 -0
- package/dist/{channel-runtime-DsN_0hPp.js → .setup/channel-runtime-DBtfWzX8.mjs} +113 -318
- package/dist/{config-schema-BPoye3--.js → .setup/config-schema-BQXbFpTD.mjs} +43 -24
- package/dist/{runtime-xy-FcjJC.js → .setup/runtime-DZfYm3vY.mjs} +1 -1
- package/dist/.setup/secret-contract-DdKIs_mx.mjs +82 -0
- package/dist/.setup/secret-contract-api-CmA70kMR.mjs +3 -0
- package/dist/api.js +2 -2
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/configured-state.js +6 -0
- package/dist/runtime-api.js +1 -1
- package/dist/secret-contract-api.js +1 -1
- package/dist/setup-entry.js +3 -2
- package/openclaw.plugin.json +62 -72
- package/package.json +13 -91
- package/dist/doctor-contract-api.js +0 -16
- package/dist/secret-contract-D_DC3YWj.js +0 -42
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
|
|
2
2
|
//#region extensions/irc/src/runtime.ts
|
|
3
|
-
const { setRuntime: setIrcRuntime, getRuntime: getIrcRuntime } = createPluginRuntimeStore({
|
|
3
|
+
const { setRuntime: setIrcRuntime, clearRuntime: clearStoredIrcRuntime, getRuntime: getIrcRuntime } = createPluginRuntimeStore({
|
|
4
4
|
pluginId: "irc",
|
|
5
5
|
errorMessage: "IRC runtime not initialized"
|
|
6
6
|
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { collectNestedChannelFieldAssignments, collectSimpleChannelFieldAssignments, getChannelSurface, isBaseFieldActiveForChannelSurface, isEnabledFlag, isRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
|
|
2
|
+
//#region extensions/irc/src/secret-contract.ts
|
|
3
|
+
const secretTargetRegistryEntries = [
|
|
4
|
+
{
|
|
5
|
+
id: "channels.irc.accounts.*.nickserv.password",
|
|
6
|
+
targetType: "channels.irc.accounts.*.nickserv.password",
|
|
7
|
+
configFile: "openclaw.json",
|
|
8
|
+
pathPattern: "channels.irc.accounts.*.nickserv.password",
|
|
9
|
+
secretShape: "secret_input",
|
|
10
|
+
expectedResolvedValue: "string",
|
|
11
|
+
includeInPlan: true,
|
|
12
|
+
includeInConfigure: true,
|
|
13
|
+
includeInAudit: true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "channels.irc.accounts.*.password",
|
|
17
|
+
targetType: "channels.irc.accounts.*.password",
|
|
18
|
+
configFile: "openclaw.json",
|
|
19
|
+
pathPattern: "channels.irc.accounts.*.password",
|
|
20
|
+
secretShape: "secret_input",
|
|
21
|
+
expectedResolvedValue: "string",
|
|
22
|
+
includeInPlan: true,
|
|
23
|
+
includeInConfigure: true,
|
|
24
|
+
includeInAudit: true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "channels.irc.nickserv.password",
|
|
28
|
+
targetType: "channels.irc.nickserv.password",
|
|
29
|
+
configFile: "openclaw.json",
|
|
30
|
+
pathPattern: "channels.irc.nickserv.password",
|
|
31
|
+
secretShape: "secret_input",
|
|
32
|
+
expectedResolvedValue: "string",
|
|
33
|
+
includeInPlan: true,
|
|
34
|
+
includeInConfigure: true,
|
|
35
|
+
includeInAudit: true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "channels.irc.password",
|
|
39
|
+
targetType: "channels.irc.password",
|
|
40
|
+
configFile: "openclaw.json",
|
|
41
|
+
pathPattern: "channels.irc.password",
|
|
42
|
+
secretShape: "secret_input",
|
|
43
|
+
expectedResolvedValue: "string",
|
|
44
|
+
includeInPlan: true,
|
|
45
|
+
includeInConfigure: true,
|
|
46
|
+
includeInAudit: true
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
function collectRuntimeConfigAssignments(params) {
|
|
50
|
+
const resolved = getChannelSurface(params.config, "irc");
|
|
51
|
+
if (!resolved) return;
|
|
52
|
+
const { channel: irc, surface } = resolved;
|
|
53
|
+
collectSimpleChannelFieldAssignments({
|
|
54
|
+
channelKey: "irc",
|
|
55
|
+
field: "password",
|
|
56
|
+
channel: irc,
|
|
57
|
+
surface,
|
|
58
|
+
defaults: params.defaults,
|
|
59
|
+
context: params.context,
|
|
60
|
+
topInactiveReason: "no enabled account inherits this top-level IRC password.",
|
|
61
|
+
accountInactiveReason: "IRC account is disabled."
|
|
62
|
+
});
|
|
63
|
+
collectNestedChannelFieldAssignments({
|
|
64
|
+
channelKey: "irc",
|
|
65
|
+
nestedKey: "nickserv",
|
|
66
|
+
field: "password",
|
|
67
|
+
channel: irc,
|
|
68
|
+
surface,
|
|
69
|
+
defaults: params.defaults,
|
|
70
|
+
context: params.context,
|
|
71
|
+
topLevelActive: isBaseFieldActiveForChannelSurface(surface, "nickserv") && isRecord(irc.nickserv) && isEnabledFlag(irc.nickserv),
|
|
72
|
+
topInactiveReason: "no enabled account inherits this top-level IRC nickserv config or NickServ is disabled.",
|
|
73
|
+
accountActive: ({ account, enabled }) => enabled && isRecord(account.nickserv) && isEnabledFlag(account.nickserv),
|
|
74
|
+
accountInactiveReason: "IRC account is disabled or NickServ is disabled for this account."
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const channelSecrets = {
|
|
78
|
+
secretTargetRegistryEntries,
|
|
79
|
+
collectRuntimeConfigAssignments
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
|
package/dist/api.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as setIrcRuntime } from "
|
|
1
|
+
import { g as resolveIrcAccount, h as resolveDefaultIrcAccountId, m as listIrcAccountIds, n as ircSetupWizard, p as listEnabledIrcAccounts, r as ircSetupAdapter, t as ircPlugin } from "./.setup/channel-SaGThQQW.mjs";
|
|
2
|
+
import { n as setIrcRuntime } from "./.setup/runtime-DZfYm3vY.mjs";
|
|
3
3
|
export { ircPlugin, ircSetupAdapter, ircSetupWizard, listEnabledIrcAccounts, listIrcAccountIds, resolveDefaultIrcAccountId, resolveIrcAccount, setIrcRuntime };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as IrcChannelConfigSchema } from "
|
|
1
|
+
import { t as IrcChannelConfigSchema } from "./.setup/config-schema-BQXbFpTD.mjs";
|
|
2
2
|
export { IrcChannelConfigSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as ircPlugin } from "
|
|
1
|
+
import { t as ircPlugin } from "./.setup/channel-SaGThQQW.mjs";
|
|
2
2
|
export { ircPlugin };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region extensions/irc/configured-state.ts
|
|
2
|
+
function hasIrcConfiguredState(params) {
|
|
3
|
+
return typeof params.env?.IRC_HOST === "string" && params.env.IRC_HOST.trim().length > 0 && typeof params.env?.IRC_NICK === "string" && params.env.IRC_NICK.trim().length > 0;
|
|
4
|
+
}
|
|
5
|
+
//#endregion
|
|
6
|
+
export { hasIrcConfiguredState };
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as setIrcRuntime } from "
|
|
1
|
+
import { n as setIrcRuntime } from "./.setup/runtime-DZfYm3vY.mjs";
|
|
2
2
|
export { setIrcRuntime };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "
|
|
1
|
+
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./.setup/secret-contract-DdKIs_mx.mjs";
|
|
2
2
|
export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
|
package/dist/setup-entry.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
2
3
|
//#region extensions/irc/setup-entry.ts
|
|
3
4
|
var setup_entry_default = defineBundledChannelSetupEntry({
|
|
4
5
|
importMetaUrl: import.meta.url,
|
|
5
6
|
plugin: {
|
|
6
|
-
specifier: "
|
|
7
|
+
specifier: fileURLToPath(new URL(".setup/channel-plugin-api-04wlnIps.mjs", import.meta.url).href),
|
|
7
8
|
exportName: "ircPlugin"
|
|
8
9
|
},
|
|
9
10
|
secrets: {
|
|
10
|
-
specifier: "
|
|
11
|
+
specifier: fileURLToPath(new URL(".setup/secret-contract-api-CmA70kMR.mjs", import.meta.url).href),
|
|
11
12
|
exportName: "channelSecrets"
|
|
12
13
|
}
|
|
13
14
|
});
|
package/openclaw.plugin.json
CHANGED
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
"channels": [
|
|
7
7
|
"irc"
|
|
8
8
|
],
|
|
9
|
+
"channelEnvVars": {
|
|
10
|
+
"irc": [
|
|
11
|
+
"IRC_HOST",
|
|
12
|
+
"IRC_PORT",
|
|
13
|
+
"IRC_TLS",
|
|
14
|
+
"IRC_NICK",
|
|
15
|
+
"IRC_USERNAME",
|
|
16
|
+
"IRC_REALNAME",
|
|
17
|
+
"IRC_PASSWORD",
|
|
18
|
+
"IRC_CHANNELS",
|
|
19
|
+
"IRC_NICKSERV_PASSWORD",
|
|
20
|
+
"IRC_NICKSERV_REGISTER_EMAIL"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
9
23
|
"configSchema": {
|
|
10
24
|
"type": "object",
|
|
11
25
|
"additionalProperties": false,
|
|
@@ -282,45 +296,33 @@
|
|
|
282
296
|
"exclusiveMinimum": 0,
|
|
283
297
|
"maximum": 9007199254740991
|
|
284
298
|
},
|
|
285
|
-
"
|
|
299
|
+
"chunkMode": {
|
|
300
|
+
"type": "string",
|
|
301
|
+
"enum": [
|
|
302
|
+
"length",
|
|
303
|
+
"newline"
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
"blockStreaming": {
|
|
307
|
+
"type": "boolean"
|
|
308
|
+
},
|
|
309
|
+
"blockStreamingCoalesce": {
|
|
286
310
|
"type": "object",
|
|
287
311
|
"properties": {
|
|
288
|
-
"
|
|
289
|
-
"type": "
|
|
290
|
-
"
|
|
291
|
-
|
|
292
|
-
"newline"
|
|
293
|
-
]
|
|
312
|
+
"minChars": {
|
|
313
|
+
"type": "integer",
|
|
314
|
+
"exclusiveMinimum": 0,
|
|
315
|
+
"maximum": 9007199254740991
|
|
294
316
|
},
|
|
295
|
-
"
|
|
296
|
-
"type": "
|
|
297
|
-
"
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
"minChars": {
|
|
305
|
-
"type": "integer",
|
|
306
|
-
"exclusiveMinimum": 0,
|
|
307
|
-
"maximum": 9007199254740991
|
|
308
|
-
},
|
|
309
|
-
"maxChars": {
|
|
310
|
-
"type": "integer",
|
|
311
|
-
"exclusiveMinimum": 0,
|
|
312
|
-
"maximum": 9007199254740991
|
|
313
|
-
},
|
|
314
|
-
"idleMs": {
|
|
315
|
-
"type": "integer",
|
|
316
|
-
"minimum": 0,
|
|
317
|
-
"maximum": 9007199254740991
|
|
318
|
-
}
|
|
319
|
-
},
|
|
320
|
-
"additionalProperties": false
|
|
321
|
-
}
|
|
322
|
-
},
|
|
323
|
-
"additionalProperties": false
|
|
317
|
+
"maxChars": {
|
|
318
|
+
"type": "integer",
|
|
319
|
+
"exclusiveMinimum": 0,
|
|
320
|
+
"maximum": 9007199254740991
|
|
321
|
+
},
|
|
322
|
+
"idleMs": {
|
|
323
|
+
"type": "integer",
|
|
324
|
+
"minimum": 0,
|
|
325
|
+
"maximum": 9007199254740991
|
|
324
326
|
}
|
|
325
327
|
},
|
|
326
328
|
"additionalProperties": false
|
|
@@ -605,45 +607,33 @@
|
|
|
605
607
|
"exclusiveMinimum": 0,
|
|
606
608
|
"maximum": 9007199254740991
|
|
607
609
|
},
|
|
608
|
-
"
|
|
610
|
+
"chunkMode": {
|
|
611
|
+
"type": "string",
|
|
612
|
+
"enum": [
|
|
613
|
+
"length",
|
|
614
|
+
"newline"
|
|
615
|
+
]
|
|
616
|
+
},
|
|
617
|
+
"blockStreaming": {
|
|
618
|
+
"type": "boolean"
|
|
619
|
+
},
|
|
620
|
+
"blockStreamingCoalesce": {
|
|
609
621
|
"type": "object",
|
|
610
622
|
"properties": {
|
|
611
|
-
"
|
|
612
|
-
"type": "
|
|
613
|
-
"
|
|
614
|
-
|
|
615
|
-
"newline"
|
|
616
|
-
]
|
|
623
|
+
"minChars": {
|
|
624
|
+
"type": "integer",
|
|
625
|
+
"exclusiveMinimum": 0,
|
|
626
|
+
"maximum": 9007199254740991
|
|
617
627
|
},
|
|
618
|
-
"
|
|
619
|
-
"type": "
|
|
620
|
-
"
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
"minChars": {
|
|
628
|
-
"type": "integer",
|
|
629
|
-
"exclusiveMinimum": 0,
|
|
630
|
-
"maximum": 9007199254740991
|
|
631
|
-
},
|
|
632
|
-
"maxChars": {
|
|
633
|
-
"type": "integer",
|
|
634
|
-
"exclusiveMinimum": 0,
|
|
635
|
-
"maximum": 9007199254740991
|
|
636
|
-
},
|
|
637
|
-
"idleMs": {
|
|
638
|
-
"type": "integer",
|
|
639
|
-
"minimum": 0,
|
|
640
|
-
"maximum": 9007199254740991
|
|
641
|
-
}
|
|
642
|
-
},
|
|
643
|
-
"additionalProperties": false
|
|
644
|
-
}
|
|
645
|
-
},
|
|
646
|
-
"additionalProperties": false
|
|
628
|
+
"maxChars": {
|
|
629
|
+
"type": "integer",
|
|
630
|
+
"exclusiveMinimum": 0,
|
|
631
|
+
"maximum": 9007199254740991
|
|
632
|
+
},
|
|
633
|
+
"idleMs": {
|
|
634
|
+
"type": "integer",
|
|
635
|
+
"minimum": 0,
|
|
636
|
+
"maximum": 9007199254740991
|
|
647
637
|
}
|
|
648
638
|
},
|
|
649
639
|
"additionalProperties": false
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/irc",
|
|
3
|
-
"version": "2026.7.
|
|
3
|
+
"version": "2026.7.33",
|
|
4
4
|
"description": "OpenClaw IRC channel plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"openclaw": {
|
|
@@ -15,19 +15,8 @@
|
|
|
15
15
|
"allowInvalidConfigRecovery": true
|
|
16
16
|
},
|
|
17
17
|
"setupEntry": "./dist/setup-entry.js",
|
|
18
|
-
"setupFeatures": {
|
|
19
|
-
"configPromotion": true
|
|
20
|
-
},
|
|
21
18
|
"channel": {
|
|
22
19
|
"id": "irc",
|
|
23
|
-
"configuredState": {
|
|
24
|
-
"env": {
|
|
25
|
-
"allOf": [
|
|
26
|
-
"IRC_HOST",
|
|
27
|
-
"IRC_NICK"
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
20
|
"label": "IRC",
|
|
32
21
|
"selectionLabel": "IRC (Server + Nick)",
|
|
33
22
|
"detailLabel": "IRC",
|
|
@@ -38,89 +27,22 @@
|
|
|
38
27
|
"internet-relay-chat"
|
|
39
28
|
],
|
|
40
29
|
"systemImage": "network",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"key": "port",
|
|
53
|
-
"kind": "string",
|
|
54
|
-
"cli": {
|
|
55
|
-
"flags": "--port <port>",
|
|
56
|
-
"description": "IRC server port"
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"key": "tls",
|
|
61
|
-
"kind": "boolean",
|
|
62
|
-
"cli": {
|
|
63
|
-
"flags": "--tls",
|
|
64
|
-
"description": "Use TLS for IRC"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"key": "nick",
|
|
69
|
-
"kind": "string",
|
|
70
|
-
"cli": {
|
|
71
|
-
"flags": "--nick <nick>",
|
|
72
|
-
"description": "IRC nickname"
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"key": "username",
|
|
77
|
-
"kind": "string",
|
|
78
|
-
"cli": {
|
|
79
|
-
"flags": "--username <name>",
|
|
80
|
-
"description": "IRC username"
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"key": "realname",
|
|
85
|
-
"kind": "string",
|
|
86
|
-
"cli": {
|
|
87
|
-
"flags": "--realname <name>",
|
|
88
|
-
"description": "IRC real name"
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"key": "channels",
|
|
93
|
-
"kind": "string-list",
|
|
94
|
-
"cli": {
|
|
95
|
-
"flags": "--channels <names>",
|
|
96
|
-
"description": "IRC channels"
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"key": "password",
|
|
101
|
-
"kind": "string",
|
|
102
|
-
"sensitive": true,
|
|
103
|
-
"cli": {
|
|
104
|
-
"flags": "--password <password>",
|
|
105
|
-
"description": "IRC server password"
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"key": "useEnv",
|
|
110
|
-
"kind": "boolean",
|
|
111
|
-
"cli": {
|
|
112
|
-
"flags": "--use-env",
|
|
113
|
-
"description": "Use IRC environment configuration"
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
]
|
|
30
|
+
"configuredState": {
|
|
31
|
+
"env": {
|
|
32
|
+
"allOf": [
|
|
33
|
+
"IRC_HOST",
|
|
34
|
+
"IRC_NICK"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"specifier": "./dist/configured-state.js",
|
|
38
|
+
"exportName": "hasIrcConfiguredState"
|
|
117
39
|
}
|
|
118
40
|
},
|
|
119
41
|
"compat": {
|
|
120
|
-
"pluginApi": ">=2026.7.
|
|
42
|
+
"pluginApi": ">=2026.7.33"
|
|
121
43
|
},
|
|
122
44
|
"build": {
|
|
123
|
-
"openclawVersion": "2026.7.
|
|
45
|
+
"openclawVersion": "2026.7.33",
|
|
124
46
|
"bundledDist": false
|
|
125
47
|
},
|
|
126
48
|
"release": {
|
|
@@ -145,7 +67,7 @@
|
|
|
145
67
|
"README.md"
|
|
146
68
|
],
|
|
147
69
|
"peerDependencies": {
|
|
148
|
-
"openclaw": ">=2026.7.
|
|
70
|
+
"openclaw": ">=2026.7.33"
|
|
149
71
|
},
|
|
150
72
|
"peerDependenciesMeta": {
|
|
151
73
|
"openclaw": {
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { defineChannelAliasMigration } from "openclaw/plugin-sdk/runtime-doctor";
|
|
2
|
-
//#region extensions/irc/doctor-contract-api.ts
|
|
3
|
-
const streamingAliasMigration = defineChannelAliasMigration({
|
|
4
|
-
channelId: "irc",
|
|
5
|
-
streaming: {
|
|
6
|
-
defaultMode: "partial",
|
|
7
|
-
deliveryOnly: true
|
|
8
|
-
},
|
|
9
|
-
accountStreamingReplacesRoot: true
|
|
10
|
-
});
|
|
11
|
-
const legacyConfigRules = streamingAliasMigration.legacyConfigRules;
|
|
12
|
-
function normalizeCompatibilityConfig({ cfg }) {
|
|
13
|
-
return streamingAliasMigration.normalizeChannelConfig({ cfg });
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { legacyConfigRules, normalizeCompatibilityConfig };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { collectNestedChannelFieldAssignments, collectSimpleChannelFieldAssignments, createChannelSecretTargetRegistryEntries, getChannelSurface, isBaseFieldActiveForChannelSurface, isEnabledFlag, isRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
|
|
2
|
-
//#region extensions/irc/src/secret-contract.ts
|
|
3
|
-
const secretTargetRegistryEntries = createChannelSecretTargetRegistryEntries({
|
|
4
|
-
channelKey: "irc",
|
|
5
|
-
account: ["nickserv.password", "password"],
|
|
6
|
-
channel: ["nickserv.password", "password"]
|
|
7
|
-
});
|
|
8
|
-
function collectRuntimeConfigAssignments(params) {
|
|
9
|
-
const resolved = getChannelSurface(params.config, "irc");
|
|
10
|
-
if (!resolved) return;
|
|
11
|
-
const { channel: irc, surface } = resolved;
|
|
12
|
-
collectSimpleChannelFieldAssignments({
|
|
13
|
-
channelKey: "irc",
|
|
14
|
-
field: "password",
|
|
15
|
-
channel: irc,
|
|
16
|
-
surface,
|
|
17
|
-
defaults: params.defaults,
|
|
18
|
-
context: params.context,
|
|
19
|
-
topInactiveReason: "no enabled account inherits this top-level IRC password.",
|
|
20
|
-
accountInactiveReason: "IRC account is disabled."
|
|
21
|
-
});
|
|
22
|
-
collectNestedChannelFieldAssignments({
|
|
23
|
-
channelKey: "irc",
|
|
24
|
-
nestedKey: "nickserv",
|
|
25
|
-
field: "password",
|
|
26
|
-
channel: irc,
|
|
27
|
-
surface,
|
|
28
|
-
defaults: params.defaults,
|
|
29
|
-
context: params.context,
|
|
30
|
-
topLevelActive: isBaseFieldActiveForChannelSurface(surface, "nickserv") && isRecord(irc.nickserv) && isEnabledFlag(irc.nickserv),
|
|
31
|
-
topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !Object.hasOwn(account, "nickserv") && isEnabledFlag(irc.nickserv),
|
|
32
|
-
topInactiveReason: "no enabled account inherits this top-level IRC nickserv config or NickServ is disabled.",
|
|
33
|
-
accountActive: ({ account, enabled }) => enabled && isRecord(account.nickserv) && isEnabledFlag(account.nickserv),
|
|
34
|
-
accountInactiveReason: "IRC account is disabled or NickServ is disabled for this account."
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
const channelSecrets = {
|
|
38
|
-
secretTargetRegistryEntries,
|
|
39
|
-
collectRuntimeConfigAssignments
|
|
40
|
-
};
|
|
41
|
-
//#endregion
|
|
42
|
-
export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
|