mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 23:56:07 +00:00
chore(channels): remove bluebubbles hangover
This commit is contained in:
@@ -16,7 +16,6 @@ enum GatewayAgentChannel: String, Codable, CaseIterable {
|
||||
case signal
|
||||
case imessage
|
||||
case msteams
|
||||
case bluebubbles
|
||||
case webchat
|
||||
|
||||
init(raw: String?) {
|
||||
|
||||
@@ -12,7 +12,7 @@ struct GatewayAgentChannelTests {
|
||||
#expect(GatewayAgentChannel.whatsapp.shouldDeliver(true) == true)
|
||||
#expect(GatewayAgentChannel.telegram.shouldDeliver(true) == true)
|
||||
#expect(GatewayAgentChannel.googlechat.shouldDeliver(true) == true)
|
||||
#expect(GatewayAgentChannel.bluebubbles.shouldDeliver(true) == true)
|
||||
#expect(GatewayAgentChannel.imessage.shouldDeliver(true) == true)
|
||||
#expect(GatewayAgentChannel.last.shouldDeliver(false) == false)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ struct GatewayAgentChannelTests {
|
||||
#expect(GatewayAgentChannel(raw: " ") == .last)
|
||||
#expect(GatewayAgentChannel(raw: "WEBCHAT") == .webchat)
|
||||
#expect(GatewayAgentChannel(raw: "googlechat") == .googlechat)
|
||||
#expect(GatewayAgentChannel(raw: "BLUEBUBBLES") == .bluebubbles)
|
||||
#expect(GatewayAgentChannel(raw: "IMESSAGE") == .imessage)
|
||||
#expect(GatewayAgentChannel(raw: "unknown") == .last)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ enum ChatMarkdownPreprocessor {
|
||||
"Matrix",
|
||||
"Zalo",
|
||||
"Zalo Personal",
|
||||
"BlueBubbles",
|
||||
]
|
||||
|
||||
private static let markdownImagePattern = #"!\[([^\]]*)\]\(([^)]+)\)"#
|
||||
|
||||
@@ -125,7 +125,7 @@ Access groups are available in shared message-channel authorization paths, inclu
|
||||
- channel-specific per-room sender allowlists that use the same sender matching rules
|
||||
- command authorization paths that reuse message-channel sender allowlists
|
||||
|
||||
Channel support depends on whether that channel is wired through the shared OpenClaw sender-authorization helpers. Current bundled support includes BlueBubbles, Discord, Feishu, Google Chat, iMessage, LINE, Mattermost, Microsoft Teams, Nextcloud Talk, Nostr, QQBot, Signal, WhatsApp, Zalo, and Zalo Personal. Static `message.senders` groups are designed to be channel-agnostic, so new message channels should support them by using the shared plugin SDK helpers instead of custom allowlist expansion.
|
||||
Channel support depends on whether that channel is wired through the shared OpenClaw sender-authorization helpers. Current bundled support includes Discord, Feishu, Google Chat, iMessage, LINE, Mattermost, Microsoft Teams, Nextcloud Talk, Nostr, QQBot, Signal, WhatsApp, Zalo, and Zalo Personal. Static `message.senders` groups are designed to be channel-agnostic, so new message channels should support them by using the shared plugin SDK helpers instead of custom allowlist expansion.
|
||||
|
||||
## Plugin diagnostics
|
||||
|
||||
|
||||
@@ -9,12 +9,10 @@ import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/temp-path";
|
||||
// anything that landed in chat.db while the bridge was disconnected.
|
||||
// Without a recovery pass, those messages are permanently lost.
|
||||
//
|
||||
// This module mirrors the design of the retired BlueBubbles catchup
|
||||
// (`extensions/bluebubbles/src/catchup.ts` in commit 07bf572f35^), adapted
|
||||
// for the imsg JSON-RPC `messages.history` fetch path. The replay loop is
|
||||
// pluggable via the `dispatch` callback so the same `evaluateIMessageInbound`
|
||||
// + `dispatchInboundMessage` path used by the live `imsg watch` loop runs
|
||||
// unchanged on replayed rows.
|
||||
// This module keeps catchup on the same inbound evaluation and dispatch path
|
||||
// as live `imsg watch` notifications. The replay loop is pluggable via the
|
||||
// `dispatch` callback so `evaluateIMessageInbound` + `dispatchInboundMessage`
|
||||
// runs unchanged on replayed rows.
|
||||
//
|
||||
// See https://github.com/openclaw/openclaw/issues/78649 for design discussion.
|
||||
|
||||
|
||||
@@ -869,9 +869,8 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
|
||||
// Catchup bypasses the inbound debouncer so each row is awaited
|
||||
// serially and dispatch failure can hold the cursor. Split-sends
|
||||
// from before the gateway gap therefore arrive as separate turns
|
||||
// rather than coalesced — same behavior the retired BlueBubbles
|
||||
// catchup had. Live notifications continue to flow through the
|
||||
// debouncer.
|
||||
// rather than coalesced. Live notifications continue to flow through
|
||||
// the debouncer.
|
||||
dispatchPayload: (message) => handleMessageNow(message),
|
||||
runtime,
|
||||
});
|
||||
|
||||
@@ -4072,7 +4072,7 @@ rules:
|
||||
detector-bucket: precise
|
||||
source-run: 2026-04-17T07-37-10Z
|
||||
source-rule-id: unresolved-discovery-routing-from-txt-hints
|
||||
- id: ghsa-rwj8-p9vq-25gv.bluebubbles-media-read-without-root-allowlist
|
||||
- id: ghsa-rwj8-p9vq-25gv.local-media-read-without-root-allowlist
|
||||
languages:
|
||||
- typescript
|
||||
- javascript
|
||||
@@ -4086,7 +4086,7 @@ rules:
|
||||
advisory-url: https://github.com/openclaw/openclaw/security/advisories/GHSA-RWJ8-P9VQ-25GV
|
||||
detector-bucket: precise
|
||||
source-run: 2026-04-17T07-37-10Z
|
||||
source-rule-id: bluebubbles-media-read-without-root-allowlist
|
||||
source-rule-id: local-media-read-without-root-allowlist
|
||||
patterns:
|
||||
- pattern: |
|
||||
const $LOCAL = resolveLocalMediaPath(...);
|
||||
|
||||
Reference in New Issue
Block a user