Skip to content

Commit d4268b1

Browse files
committed
fix(plugins): catalog externalized npm installs
1 parent 0fad53a commit d4268b1

17 files changed

Lines changed: 1100 additions & 42 deletions

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Docs: https://docs.openclaw.ai
1212

1313
### Fixes
1414

15+
- Plugins/externalization: add official npm-first catalogs for externalized channel, provider, and generic plugins, keep unpublished ACPX/Google Chat/LINE bundled, and make missing-plugin repair honor npm-first metadata while ClawHub pack files roll out. Thanks @vincentkoc.
1516
- Agents/sessions: preserve terminal lifecycle state when final run metadata persists from a stale in-memory snapshot, preventing `main` sessions from staying stuck as running after completed or timed-out turns.
1617
- Gateway/CLI: make `openclaw gateway start` repair stale managed service definitions that point at old OpenClaw versions, missing binaries, or temporary installer paths before starting.
1718
- Status: show the `openai-codex` OAuth profile for `openai/gpt-*` sessions running through the native Codex runtime instead of reporting auth as unknown. (#76197) Thanks @mbelinky.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
"!dist/.runtime-postbuildstamp",
3232
"!dist/**/*.map",
3333
"!dist/plugin-sdk/.tsbuildinfo",
34-
"!dist/extensions/acpx/**",
3534
"!dist/extensions/node_modules/**",
3635
"!dist/extensions/*/node_modules/**",
3736
"!dist/extensions/bluebubbles/**",
@@ -43,8 +42,6 @@
4342
"!dist/extensions/discord/**",
4443
"!dist/extensions/feishu/**",
4544
"!dist/extensions/google-meet/**",
46-
"!dist/extensions/googlechat/**",
47-
"!dist/extensions/line/**",
4845
"!dist/extensions/lobster/**",
4946
"!dist/extensions/matrix/**",
5047
"!dist/extensions/mattermost/**",
@@ -82,6 +79,9 @@
8279
"skills/",
8380
"scripts/npm-runner.mjs",
8481
"scripts/preinstall-package-manager-warning.mjs",
82+
"scripts/lib/official-external-channel-catalog.json",
83+
"scripts/lib/official-external-plugin-catalog.json",
84+
"scripts/lib/official-external-provider-catalog.json",
8585
"scripts/lib/package-dist-imports.mjs",
8686
"scripts/postinstall-bundled-plugins.mjs",
8787
"scripts/windows-cmd-helpers.mjs"

scripts/lib/official-external-channel-catalog.json

Lines changed: 351 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,357 @@
4747
"expectedIntegrity": "sha512-lYmBrU71ox3v7dzRqaltvzTXPcMjjgYrNqpBj5HIBkXgEFkXRRG8wplXg9Fub41/FjsSPn3WAbYpdTc+k+jsHg=="
4848
}
4949
}
50+
},
51+
{
52+
"name": "@openclaw/bluebubbles",
53+
"description": "OpenClaw BlueBubbles channel plugin",
54+
"source": "official",
55+
"kind": "channel",
56+
"openclaw": {
57+
"channel": {
58+
"id": "bluebubbles",
59+
"label": "BlueBubbles",
60+
"selectionLabel": "BlueBubbles (macOS app)",
61+
"detailLabel": "BlueBubbles",
62+
"docsPath": "/channels/bluebubbles",
63+
"docsLabel": "bluebubbles",
64+
"blurb": "iMessage via the BlueBubbles mac app + REST API.",
65+
"aliases": ["bb"],
66+
"preferOver": ["imessage"],
67+
"systemImage": "bubble.left.and.text.bubble.right",
68+
"order": 75
69+
},
70+
"install": {
71+
"npmSpec": "@openclaw/bluebubbles",
72+
"defaultChoice": "npm",
73+
"minHostVersion": ">=2026.4.10"
74+
}
75+
}
76+
},
77+
{
78+
"name": "@openclaw/discord",
79+
"description": "OpenClaw Discord channel plugin",
80+
"source": "official",
81+
"kind": "channel",
82+
"openclaw": {
83+
"channel": {
84+
"id": "discord",
85+
"label": "Discord",
86+
"selectionLabel": "Discord (Bot API)",
87+
"detailLabel": "Discord Bot",
88+
"docsPath": "/channels/discord",
89+
"docsLabel": "discord",
90+
"blurb": "very well supported right now.",
91+
"systemImage": "bubble.left.and.bubble.right",
92+
"markdownCapable": true,
93+
"preferSessionLookupForAnnounceTarget": true
94+
},
95+
"install": {
96+
"npmSpec": "@openclaw/discord",
97+
"defaultChoice": "npm",
98+
"minHostVersion": ">=2026.4.10"
99+
}
100+
}
101+
},
102+
{
103+
"name": "@openclaw/feishu",
104+
"description": "OpenClaw Feishu/Lark channel plugin",
105+
"source": "official",
106+
"kind": "channel",
107+
"openclaw": {
108+
"channel": {
109+
"id": "feishu",
110+
"label": "Feishu",
111+
"selectionLabel": "Feishu/Lark (飞书)",
112+
"docsPath": "/channels/feishu",
113+
"docsLabel": "feishu",
114+
"blurb": "飞书/Lark enterprise messaging with doc/wiki/drive tools.",
115+
"aliases": ["lark"],
116+
"order": 35,
117+
"quickstartAllowFrom": true
118+
},
119+
"install": {
120+
"npmSpec": "@openclaw/feishu",
121+
"defaultChoice": "npm",
122+
"minHostVersion": ">=2026.4.25"
123+
}
124+
}
125+
},
126+
{
127+
"name": "@openclaw/matrix",
128+
"description": "OpenClaw Matrix channel plugin",
129+
"source": "official",
130+
"kind": "channel",
131+
"openclaw": {
132+
"channel": {
133+
"id": "matrix",
134+
"label": "Matrix",
135+
"selectionLabel": "Matrix (plugin)",
136+
"docsPath": "/channels/matrix",
137+
"docsLabel": "matrix",
138+
"blurb": "open protocol; install the plugin to enable.",
139+
"order": 70,
140+
"quickstartAllowFrom": true
141+
},
142+
"install": {
143+
"npmSpec": "@openclaw/matrix",
144+
"defaultChoice": "npm",
145+
"minHostVersion": ">=2026.4.10",
146+
"allowInvalidConfigRecovery": true
147+
}
148+
}
149+
},
150+
{
151+
"name": "@openclaw/mattermost",
152+
"description": "OpenClaw Mattermost channel plugin",
153+
"source": "official",
154+
"kind": "channel",
155+
"openclaw": {
156+
"channel": {
157+
"id": "mattermost",
158+
"label": "Mattermost",
159+
"selectionLabel": "Mattermost (plugin)",
160+
"docsPath": "/channels/mattermost",
161+
"docsLabel": "mattermost",
162+
"blurb": "self-hosted Slack-style chat; install the plugin to enable.",
163+
"order": 65
164+
},
165+
"install": {
166+
"npmSpec": "@openclaw/mattermost",
167+
"defaultChoice": "npm",
168+
"minHostVersion": ">=2026.4.10"
169+
}
170+
}
171+
},
172+
{
173+
"name": "@openclaw/msteams",
174+
"description": "OpenClaw Microsoft Teams channel plugin",
175+
"source": "official",
176+
"kind": "channel",
177+
"openclaw": {
178+
"channel": {
179+
"id": "msteams",
180+
"label": "Microsoft Teams",
181+
"selectionLabel": "Microsoft Teams (Teams SDK)",
182+
"docsPath": "/channels/msteams",
183+
"docsLabel": "msteams",
184+
"blurb": "Teams SDK; enterprise support.",
185+
"aliases": ["teams"],
186+
"order": 60
187+
},
188+
"install": {
189+
"npmSpec": "@openclaw/msteams",
190+
"defaultChoice": "npm",
191+
"minHostVersion": ">=2026.4.10"
192+
}
193+
}
194+
},
195+
{
196+
"name": "@openclaw/nextcloud-talk",
197+
"description": "OpenClaw Nextcloud Talk channel plugin",
198+
"source": "official",
199+
"kind": "channel",
200+
"openclaw": {
201+
"channel": {
202+
"id": "nextcloud-talk",
203+
"label": "Nextcloud Talk",
204+
"selectionLabel": "Nextcloud Talk (self-hosted)",
205+
"docsPath": "/channels/nextcloud-talk",
206+
"docsLabel": "nextcloud-talk",
207+
"blurb": "Self-hosted chat via Nextcloud Talk webhook bots.",
208+
"aliases": ["nc-talk", "nc"],
209+
"order": 65,
210+
"quickstartAllowFrom": true
211+
},
212+
"install": {
213+
"npmSpec": "@openclaw/nextcloud-talk",
214+
"defaultChoice": "npm",
215+
"minHostVersion": ">=2026.4.10"
216+
}
217+
}
218+
},
219+
{
220+
"name": "@openclaw/nostr",
221+
"description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
222+
"source": "official",
223+
"kind": "channel",
224+
"openclaw": {
225+
"channel": {
226+
"id": "nostr",
227+
"label": "Nostr",
228+
"selectionLabel": "Nostr (NIP-04 DMs)",
229+
"docsPath": "/channels/nostr",
230+
"docsLabel": "nostr",
231+
"blurb": "Decentralized protocol; encrypted DMs via NIP-04.",
232+
"order": 55,
233+
"quickstartAllowFrom": true
234+
},
235+
"install": {
236+
"npmSpec": "@openclaw/nostr",
237+
"defaultChoice": "npm",
238+
"minHostVersion": ">=2026.4.10"
239+
}
240+
}
241+
},
242+
{
243+
"name": "@openclaw/qqbot",
244+
"description": "OpenClaw QQ Bot channel plugin",
245+
"source": "official",
246+
"kind": "channel",
247+
"openclaw": {
248+
"channel": {
249+
"id": "qqbot",
250+
"label": "QQ Bot",
251+
"selectionLabel": "QQ Bot (Official API)",
252+
"detailLabel": "QQ Bot",
253+
"docsPath": "/channels/qqbot",
254+
"docsLabel": "qqbot",
255+
"blurb": "connect to QQ via official QQ Bot API with group chat and direct message support.",
256+
"systemImage": "bubble.left.and.bubble.right"
257+
},
258+
"install": {
259+
"npmSpec": "@openclaw/qqbot",
260+
"defaultChoice": "npm",
261+
"minHostVersion": ">=2026.4.10"
262+
}
263+
}
264+
},
265+
{
266+
"name": "@openclaw/synology-chat",
267+
"description": "Synology Chat channel plugin for OpenClaw",
268+
"source": "official",
269+
"kind": "channel",
270+
"openclaw": {
271+
"channel": {
272+
"id": "synology-chat",
273+
"label": "Synology Chat",
274+
"selectionLabel": "Synology Chat (Webhook)",
275+
"docsPath": "/channels/synology-chat",
276+
"docsLabel": "synology-chat",
277+
"blurb": "Connect your Synology NAS Chat to OpenClaw with full agent capabilities.",
278+
"order": 90
279+
},
280+
"install": {
281+
"npmSpec": "@openclaw/synology-chat",
282+
"defaultChoice": "npm",
283+
"minHostVersion": ">=2026.4.10"
284+
}
285+
}
286+
},
287+
{
288+
"name": "@openclaw/tlon",
289+
"description": "OpenClaw Tlon/Urbit channel plugin",
290+
"source": "official",
291+
"kind": "channel",
292+
"openclaw": {
293+
"channel": {
294+
"id": "tlon",
295+
"label": "Tlon",
296+
"selectionLabel": "Tlon (Urbit)",
297+
"docsPath": "/channels/tlon",
298+
"docsLabel": "tlon",
299+
"blurb": "decentralized messaging on Urbit; install the plugin to enable.",
300+
"order": 90,
301+
"quickstartAllowFrom": true
302+
},
303+
"install": {
304+
"npmSpec": "@openclaw/tlon",
305+
"defaultChoice": "npm",
306+
"minHostVersion": ">=2026.4.10"
307+
}
308+
}
309+
},
310+
{
311+
"name": "@openclaw/twitch",
312+
"description": "OpenClaw Twitch channel plugin",
313+
"source": "official",
314+
"kind": "channel",
315+
"openclaw": {
316+
"channel": {
317+
"id": "twitch",
318+
"label": "Twitch",
319+
"selectionLabel": "Twitch (Chat)",
320+
"docsPath": "/channels/twitch",
321+
"blurb": "Twitch chat integration",
322+
"aliases": ["twitch-chat"]
323+
},
324+
"install": {
325+
"npmSpec": "@openclaw/twitch",
326+
"defaultChoice": "npm",
327+
"minHostVersion": ">=2026.4.10"
328+
}
329+
}
330+
},
331+
{
332+
"name": "@openclaw/whatsapp",
333+
"description": "OpenClaw WhatsApp channel plugin",
334+
"source": "official",
335+
"kind": "channel",
336+
"openclaw": {
337+
"channel": {
338+
"id": "whatsapp",
339+
"label": "WhatsApp",
340+
"selectionLabel": "WhatsApp (QR link)",
341+
"detailLabel": "WhatsApp Web",
342+
"docsPath": "/channels/whatsapp",
343+
"docsLabel": "whatsapp",
344+
"blurb": "works with your own number; recommend a separate phone + eSIM.",
345+
"systemImage": "message"
346+
},
347+
"install": {
348+
"npmSpec": "@openclaw/whatsapp",
349+
"defaultChoice": "npm",
350+
"minHostVersion": ">=2026.4.25"
351+
}
352+
}
353+
},
354+
{
355+
"name": "@openclaw/zalo",
356+
"description": "OpenClaw Zalo channel plugin",
357+
"source": "official",
358+
"kind": "channel",
359+
"openclaw": {
360+
"channel": {
361+
"id": "zalo",
362+
"label": "Zalo",
363+
"selectionLabel": "Zalo (Bot API)",
364+
"docsPath": "/channels/zalo",
365+
"docsLabel": "zalo",
366+
"blurb": "Vietnam-focused messaging platform with Bot API.",
367+
"aliases": ["zl"],
368+
"order": 80,
369+
"quickstartAllowFrom": true
370+
},
371+
"install": {
372+
"npmSpec": "@openclaw/zalo",
373+
"defaultChoice": "npm",
374+
"minHostVersion": ">=2026.4.10"
375+
}
376+
}
377+
},
378+
{
379+
"name": "@openclaw/zalouser",
380+
"description": "OpenClaw Zalo Personal Account plugin via native zca-js integration",
381+
"source": "official",
382+
"kind": "channel",
383+
"openclaw": {
384+
"channel": {
385+
"id": "zalouser",
386+
"label": "Zalo Personal",
387+
"selectionLabel": "Zalo (Personal Account)",
388+
"docsPath": "/channels/zalouser",
389+
"docsLabel": "zalouser",
390+
"blurb": "Zalo personal account via QR code login.",
391+
"aliases": ["zlu"],
392+
"order": 85,
393+
"quickstartAllowFrom": false
394+
},
395+
"install": {
396+
"npmSpec": "@openclaw/zalouser",
397+
"defaultChoice": "npm",
398+
"minHostVersion": ">=2026.4.10"
399+
}
400+
}
50401
}
51402
]
52403
}

0 commit comments

Comments
 (0)