@openclaw/clickclack 2026.7.2-beta.5 → 2026.7.2-beta.7
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/api.js +2 -2
- package/dist/{channel-DfcFlLjC.js → channel-CECIpaS0.js} +804 -672
- package/dist/channel-plugin-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{runtime-api-D1H9vheM.js → runtime-api-CZ1rmHjv.js} +2 -2
- package/dist/runtime-api.js +3 -3
- package/dist/{setup-claim-BFU16zoo.js → setup-claim-CP-QZ5bt.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-CD6MUC1g.js → setup-surface-DAy8vDJK.js} +41 -18
- package/openclaw.plugin.json +71 -11
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as clickClackPlugin } from "./channel-
|
|
1
|
+
import { t as clickClackPlugin } from "./channel-CECIpaS0.js";
|
|
2
2
|
export { clickClackPlugin };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as registerClickClackDiscussions } from "./runtime-api-
|
|
1
|
+
import { t as registerClickClackDiscussions } from "./runtime-api-CZ1rmHjv.js";
|
|
2
2
|
import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
3
3
|
//#region extensions/clickclack/index.ts
|
|
4
4
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as createClickClackClient, f as isClickClackChannelNameConflict, u as ClickClackHttpError, x as resolveClickClackAccount, y as listClickClackAccountIds } from "./setup-surface-
|
|
2
|
-
import { C as
|
|
1
|
+
import { d as createClickClackClient, f as isClickClackChannelNameConflict, u as ClickClackHttpError, x as resolveClickClackAccount, y as listClickClackAccountIds } from "./setup-surface-DAy8vDJK.js";
|
|
2
|
+
import { C as truncateDiscussionDisplayTitle, D as reserveDiscussionBindingGeneration, E as recordPendingDiscussionOpen, S as slugifyDiscussionLabel, T as listPendingDiscussionOpens, _ as discussionCredentialFingerprint, b as isDiscussionSessionKey, c as markClickClackDiscussionChannelIdentityRevoked, d as discussionInfoForBinding, f as normalizedServerBaseUrl, g as getClickClackDiscussionBindingStore, h as bindingMatchesSessionIncarnation, l as markClickClackDiscussionChannelRevoked, m as bindingMatchesActiveSessionIncarnation, o as clearClickClackDiscussionChannelRevoked, p as resolveDiscussionBindingAccount, s as isClickClackDiscussionChannelRevoked, u as discussionAccounts, v as discussionExternalRef, w as clearDiscussionBindingGeneration, x as resolveDiscussionLabel, y as fallbackDiscussionLabel } from "./channel-CECIpaS0.js";
|
|
3
3
|
import "./api.js";
|
|
4
4
|
import { resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as createClickClackClient, x as resolveClickClackAccount } from "./setup-surface-
|
|
2
|
-
import {
|
|
3
|
-
import { t as registerClickClackDiscussions } from "./runtime-api-
|
|
1
|
+
import { d as createClickClackClient, x as resolveClickClackAccount } from "./setup-surface-DAy8vDJK.js";
|
|
2
|
+
import { a as setClickClackRuntime, r as parseClickClackTarget } from "./channel-CECIpaS0.js";
|
|
3
|
+
import { t as registerClickClackDiscussions } from "./runtime-api-CZ1rmHjv.js";
|
|
4
4
|
export { createClickClackClient, parseClickClackTarget, registerClickClackDiscussions, resolveClickClackAccount, setClickClackRuntime };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as buildClickClackSetupClaimUrl, o as isClickClackSetupLoopbackHost, s as requireClickClackSetupApiBaseUrl } from "./setup-surface-
|
|
1
|
+
import { a as buildClickClackSetupClaimUrl, o as isClickClackSetupLoopbackHost, s as requireClickClackSetupApiBaseUrl } from "./setup-surface-DAy8vDJK.js";
|
|
2
2
|
import { createProviderOperationDeadline, readProviderJsonResponse, readResponseTextLimited, resolveProviderOperationTimeoutMs } from "openclaw/plugin-sdk/provider-http";
|
|
3
3
|
import { fetchWithSsrFGuard, resolvePinnedHostnameWithPolicy, ssrfPolicyFromHttpBaseUrlAllowedHostname } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
4
4
|
import { withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as clickClackMeta, g as clickClackConfigAdapter, m as clickClackConfigSchema, n as clickClackSetupAdapter, r as clickClackSetupContract, t as clickClackSetupWizard } from "./setup-surface-
|
|
1
|
+
import { _ as clickClackMeta, g as clickClackConfigAdapter, m as clickClackConfigSchema, n as clickClackSetupAdapter, r as clickClackSetupContract, t as clickClackSetupWizard } from "./setup-surface-DAy8vDJK.js";
|
|
2
2
|
//#region extensions/clickclack/src/channel.setup.ts
|
|
3
3
|
const clickClackSetupPlugin = {
|
|
4
4
|
id: "clickclack",
|
|
@@ -14,7 +14,7 @@ import { redactToolPayloadText } from "openclaw/plugin-sdk/logging-core";
|
|
|
14
14
|
import { readProviderJsonResponse, readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
|
|
15
15
|
import { WebSocket } from "ws";
|
|
16
16
|
import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
|
|
17
|
-
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, applyAccountNameToChannelSection, baseUrlTextInput, createSetupTranslator, createStandardChannelSetupStatus, defineTokenCredential, formatDocsLink, hasConfiguredSecretInput,
|
|
17
|
+
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, applyAccountNameToChannelSection, baseUrlTextInput, createSetupTranslator, createStandardChannelSetupStatus, defineTokenCredential, formatDocsLink, hasConfiguredSecretInput, moveSingleAccountChannelSectionToDefaultAccount, patchScopedAccountConfig, prepareScopedSetupConfig, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
18
18
|
import { createSetupInputPresenceValidator } from "openclaw/plugin-sdk/setup-runtime";
|
|
19
19
|
import net from "node:net";
|
|
20
20
|
//#region \0rolldown/runtime.js
|
|
@@ -47,22 +47,39 @@ const { listAccountIds: listClickClackAccountIds, resolveDefaultAccountId: resol
|
|
|
47
47
|
return Boolean(channel?.baseUrl?.trim() && (hasConfiguredAccountValue(channel.token) || Boolean(channel.tokenFile?.trim()) || Boolean(process.env.CLICKCLACK_BOT_TOKEN?.trim())) && channel.workspace?.trim());
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
|
+
function mergeClickClackGroups(...sources) {
|
|
51
|
+
const merged = /* @__PURE__ */ new Map();
|
|
52
|
+
for (const source of sources) for (const [rawKey, value] of Object.entries(source ?? {})) {
|
|
53
|
+
const key = rawKey.trim();
|
|
54
|
+
if (!key) continue;
|
|
55
|
+
merged.set(key, {
|
|
56
|
+
...merged.get(key),
|
|
57
|
+
...value.requireMention !== void 0 ? { requireMention: value.requireMention } : {},
|
|
58
|
+
...value.mentionPatterns !== void 0 ? { mentionPatterns: value.mentionPatterns } : {}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return Object.fromEntries(merged);
|
|
62
|
+
}
|
|
50
63
|
function resolveClickClackAccountConfig(cfg, accountId) {
|
|
51
64
|
const channel = cfg.channels?.clickclack;
|
|
52
65
|
const merged = resolveMergedClickClackAccountConfig(cfg, accountId);
|
|
53
66
|
const account = resolveNormalizedAccountEntry(channel?.accounts, accountId, normalizeAccountId);
|
|
67
|
+
const mergedWithGroups = channel?.groups || account?.groups ? {
|
|
68
|
+
...merged,
|
|
69
|
+
groups: mergeClickClackGroups(channel?.groups, account?.groups)
|
|
70
|
+
} : merged;
|
|
54
71
|
const accountTokenFile = account?.tokenFile?.trim();
|
|
55
72
|
if (accountTokenFile) return {
|
|
56
|
-
...
|
|
73
|
+
...mergedWithGroups,
|
|
57
74
|
token: account?.token,
|
|
58
75
|
tokenFile: accountTokenFile
|
|
59
76
|
};
|
|
60
77
|
if (hasConfiguredAccountValue(account?.token)) return {
|
|
61
|
-
...
|
|
78
|
+
...mergedWithGroups,
|
|
62
79
|
token: account?.token,
|
|
63
80
|
tokenFile: void 0
|
|
64
81
|
};
|
|
65
|
-
return
|
|
82
|
+
return mergedWithGroups;
|
|
66
83
|
}
|
|
67
84
|
function resolveClickClackToken(params) {
|
|
68
85
|
const tokenFile = params.tokenFile?.trim();
|
|
@@ -138,6 +155,9 @@ function resolveClickClackAccount(params) {
|
|
|
138
155
|
...controlUrlBase ? { controlUrlBase } : {},
|
|
139
156
|
section: merged.discussions?.section?.trim() || DEFAULT_DISCUSSIONS_SECTION
|
|
140
157
|
},
|
|
158
|
+
requireMention: merged.requireMention === true,
|
|
159
|
+
mentionPatterns: merged.mentionPatterns ?? [],
|
|
160
|
+
groups: mergeClickClackGroups(merged.groups),
|
|
141
161
|
config: {
|
|
142
162
|
...merged,
|
|
143
163
|
allowFrom: merged.allowFrom ?? ["*"]
|
|
@@ -200,6 +220,12 @@ const ClickClackAccountConfigSchema = z.object({
|
|
|
200
220
|
reconnectMs: z.number().int().min(100).max(6e4).optional(),
|
|
201
221
|
agentActivity: z.boolean().optional(),
|
|
202
222
|
commandMenu: z.boolean().optional(),
|
|
223
|
+
requireMention: z.boolean().optional(),
|
|
224
|
+
mentionPatterns: z.array(z.string()).optional(),
|
|
225
|
+
groups: z.record(z.string(), z.object({
|
|
226
|
+
requireMention: z.boolean().optional(),
|
|
227
|
+
mentionPatterns: z.array(z.string()).optional()
|
|
228
|
+
}).strict()).optional(),
|
|
203
229
|
discussions: z.object({
|
|
204
230
|
enabled: z.boolean().optional(),
|
|
205
231
|
workspace: z.string().optional(),
|
|
@@ -666,23 +692,20 @@ function formatClickClackSetupCodeClaimError(error) {
|
|
|
666
692
|
}
|
|
667
693
|
function applyClickClackSetupConfigPatch(params) {
|
|
668
694
|
const accountId = normalizeAccountId(params.accountId);
|
|
669
|
-
|
|
670
|
-
cfg:
|
|
671
|
-
cfg: params.cfg
|
|
695
|
+
return patchScopedAccountConfig({
|
|
696
|
+
cfg: prepareScopedSetupConfig({
|
|
697
|
+
cfg: accountId === DEFAULT_ACCOUNT_ID ? params.cfg : moveSingleAccountChannelSectionToDefaultAccount({
|
|
698
|
+
cfg: params.cfg,
|
|
699
|
+
channelKey: channel$1,
|
|
700
|
+
setupSurface: clickClackSetupAdapter
|
|
701
|
+
}),
|
|
672
702
|
channelKey: channel$1,
|
|
673
|
-
|
|
703
|
+
accountId,
|
|
704
|
+
name: params.name,
|
|
705
|
+
migrateBaseName: accountId !== DEFAULT_ACCOUNT_ID
|
|
674
706
|
}),
|
|
675
707
|
channelKey: channel$1,
|
|
676
708
|
accountId,
|
|
677
|
-
name: params.name
|
|
678
|
-
});
|
|
679
|
-
return patchScopedAccountConfig({
|
|
680
|
-
cfg: accountId !== DEFAULT_ACCOUNT_ID ? migrateBaseNameToDefaultAccount({
|
|
681
|
-
cfg: namedConfig,
|
|
682
|
-
channelKey: channel$1
|
|
683
|
-
}) : namedConfig,
|
|
684
|
-
channelKey: channel$1,
|
|
685
|
-
accountId,
|
|
686
709
|
patch: params.patch,
|
|
687
710
|
...params.clearFields ? { clearFields: params.clearFields } : {}
|
|
688
711
|
});
|
|
@@ -710,7 +733,7 @@ const clickClackSetupAdapter = {
|
|
|
710
733
|
const claimUrl = setup.exactClaimUrl && !privateApiBaseUrl ? setup.exactClaimUrl : buildClickClackSetupClaimUrl(privateApiBaseUrl ?? setup.baseUrl);
|
|
711
734
|
let claim;
|
|
712
735
|
try {
|
|
713
|
-
const { claimClickClackSetupCode } = await import("./setup-claim-
|
|
736
|
+
const { claimClickClackSetupCode } = await import("./setup-claim-CP-QZ5bt.js");
|
|
714
737
|
claim = await claimClickClackSetupCode({
|
|
715
738
|
claimUrl,
|
|
716
739
|
code: setup.code,
|
package/openclaw.plugin.json
CHANGED
|
@@ -6,16 +6,6 @@
|
|
|
6
6
|
"channels": [
|
|
7
7
|
"clickclack"
|
|
8
8
|
],
|
|
9
|
-
"contracts": {
|
|
10
|
-
"tools": [
|
|
11
|
-
"discussion"
|
|
12
|
-
]
|
|
13
|
-
},
|
|
14
|
-
"configSchema": {
|
|
15
|
-
"type": "object",
|
|
16
|
-
"additionalProperties": false,
|
|
17
|
-
"properties": {}
|
|
18
|
-
},
|
|
19
9
|
"channelConfigs": {
|
|
20
10
|
"clickclack": {
|
|
21
11
|
"schema": {
|
|
@@ -165,6 +155,36 @@
|
|
|
165
155
|
"commandMenu": {
|
|
166
156
|
"type": "boolean"
|
|
167
157
|
},
|
|
158
|
+
"requireMention": {
|
|
159
|
+
"type": "boolean"
|
|
160
|
+
},
|
|
161
|
+
"mentionPatterns": {
|
|
162
|
+
"type": "array",
|
|
163
|
+
"items": {
|
|
164
|
+
"type": "string"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"groups": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"propertyNames": {
|
|
170
|
+
"type": "string"
|
|
171
|
+
},
|
|
172
|
+
"additionalProperties": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"requireMention": {
|
|
176
|
+
"type": "boolean"
|
|
177
|
+
},
|
|
178
|
+
"mentionPatterns": {
|
|
179
|
+
"type": "array",
|
|
180
|
+
"items": {
|
|
181
|
+
"type": "string"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"additionalProperties": false
|
|
186
|
+
}
|
|
187
|
+
},
|
|
168
188
|
"discussions": {
|
|
169
189
|
"type": "object",
|
|
170
190
|
"properties": {
|
|
@@ -335,6 +355,36 @@
|
|
|
335
355
|
"commandMenu": {
|
|
336
356
|
"type": "boolean"
|
|
337
357
|
},
|
|
358
|
+
"requireMention": {
|
|
359
|
+
"type": "boolean"
|
|
360
|
+
},
|
|
361
|
+
"mentionPatterns": {
|
|
362
|
+
"type": "array",
|
|
363
|
+
"items": {
|
|
364
|
+
"type": "string"
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
"groups": {
|
|
368
|
+
"type": "object",
|
|
369
|
+
"propertyNames": {
|
|
370
|
+
"type": "string"
|
|
371
|
+
},
|
|
372
|
+
"additionalProperties": {
|
|
373
|
+
"type": "object",
|
|
374
|
+
"properties": {
|
|
375
|
+
"requireMention": {
|
|
376
|
+
"type": "boolean"
|
|
377
|
+
},
|
|
378
|
+
"mentionPatterns": {
|
|
379
|
+
"type": "array",
|
|
380
|
+
"items": {
|
|
381
|
+
"type": "string"
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"additionalProperties": false
|
|
386
|
+
}
|
|
387
|
+
},
|
|
338
388
|
"discussions": {
|
|
339
389
|
"type": "object",
|
|
340
390
|
"properties": {
|
|
@@ -365,7 +415,17 @@
|
|
|
365
415
|
"additionalProperties": false
|
|
366
416
|
},
|
|
367
417
|
"label": "ClickClack",
|
|
368
|
-
"description": "
|
|
418
|
+
"description": "ClickClack channel accounts and group activation policy."
|
|
369
419
|
}
|
|
420
|
+
},
|
|
421
|
+
"contracts": {
|
|
422
|
+
"tools": [
|
|
423
|
+
"discussion"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"configSchema": {
|
|
427
|
+
"type": "object",
|
|
428
|
+
"additionalProperties": false,
|
|
429
|
+
"properties": {}
|
|
370
430
|
}
|
|
371
431
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/clickclack",
|
|
3
|
-
"version": "2026.7.2-beta.
|
|
3
|
+
"version": "2026.7.2-beta.7",
|
|
4
4
|
"description": "OpenClaw ClickClack channel plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"zod": "4.4.3"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"openclaw": ">=2026.7.2-beta.
|
|
16
|
+
"openclaw": ">=2026.7.2-beta.7"
|
|
17
17
|
},
|
|
18
18
|
"peerDependenciesMeta": {
|
|
19
19
|
"openclaw": {
|
|
@@ -136,10 +136,10 @@
|
|
|
136
136
|
"allowInvalidConfigRecovery": true
|
|
137
137
|
},
|
|
138
138
|
"compat": {
|
|
139
|
-
"pluginApi": ">=2026.7.2-beta.
|
|
139
|
+
"pluginApi": ">=2026.7.2-beta.7"
|
|
140
140
|
},
|
|
141
141
|
"build": {
|
|
142
|
-
"openclawVersion": "2026.7.2-beta.
|
|
142
|
+
"openclawVersion": "2026.7.2-beta.7",
|
|
143
143
|
"bundledDist": false
|
|
144
144
|
},
|
|
145
145
|
"release": {
|