@mulmobridge/client
v0.1.4
Published
Socket.io client library for MulmoBridge — shared by all bridge implementations
Readme
@mulmobridge/client
Shared socket.io client library for all MulmoBridge bridges. Handles connection setup, bearer-token authentication, and the send/receive wire protocol so each bridge only needs to implement its platform adapter.
Install
npm install @mulmobridge/client
# or
yarn add @mulmobridge/clientExports
| Export | Description |
|---|---|
| createBridgeClient(opts) | Create a connected socket.io client with auth |
| requireBearerToken() | Read the bearer token or exit with a helpful message |
| readBridgeToken() | Read the bearer token (returns null if absent) |
| TOKEN_FILE_PATH | Path to ~/mulmoclaude/.session-token |
| mimeFromExtension(ext) | Map file extension to MIME type |
| isImageMime(mime) | Check if MIME is an image type |
| isPdfMime(mime) | Check if MIME is PDF |
| isSupportedAttachmentMime(mime) | Check if MIME can be sent to Claude |
| parseDataUrl(url) | Parse data:mime;base64,data strings |
| buildDataUrl(mime, b64) | Build a data URL from components |
| MessageAck | Acknowledgement returned by client.send() |
| PushEvent | Server-push event delivered to client.onPush() |
| BridgeClientOptions | Options accepted by createBridgeClient() |
| BridgeClient | Client interface returned by createBridgeClient() |
| ParsedDataUrl | Parsed data URL components |
Usage
import { createBridgeClient } from "@mulmobridge/client";
const client = createBridgeClient({ transportId: "my-bridge" });
const ack = await client.send("chat-123", "Hello!");
if (ack.ok) {
console.log(ack.reply);
}
client.onPush((ev) => {
console.log(`Push from ${ev.chatId}: ${ev.message}`);
});Ecosystem
Part of the @mulmobridge/* package family.
Shared libraries:
@mulmobridge/client— socket.io client library used by every bridge below ← this package@mulmobridge/protocol— wire types and constants@mulmobridge/chat-service— server-side relay + session store@mulmobridge/relay— Cloudflare Workers webhook proxy@mulmobridge/mock-server— mock server for local bridge development
Bridges (one npm package per platform):
@mulmobridge/bluesky— Bluesky DMs over atproto@mulmobridge/chatwork— Chatwork (Japanese business chat)@mulmobridge/cli— interactive terminal bridge@mulmobridge/discord— Discord bot via Gateway@mulmobridge/email— IMAP poll + SMTP reply, threading preserved@mulmobridge/google-chat— Google Chat via MulmoBridge relay@mulmobridge/irc— IRC (Libera, Freenode, custom)@mulmobridge/line— LINE Messaging API via MulmoBridge relay@mulmobridge/line-works— LINE Works (enterprise LINE)@mulmobridge/mastodon— Mastodon DMs + mentions@mulmobridge/matrix— Matrix / Element@mulmobridge/mattermost— Mattermost@mulmobridge/messenger— Facebook Messenger via MulmoBridge relay@mulmobridge/nostr— Nostr NIP-04 encrypted DMs@mulmobridge/rocketchat— Rocket.Chat@mulmobridge/signal— Signal via signal-cli-rest-api@mulmobridge/slack— Slack Socket Mode@mulmobridge/teams— Microsoft Teams via Bot Framework@mulmobridge/telegram— Telegram bot@mulmobridge/twilio-sms— SMS via Twilio Programmable Messaging@mulmobridge/viber— Viber Public Account bots@mulmobridge/webhook— generic HTTP webhook bridge@mulmobridge/whatsapp— WhatsApp Cloud API via MulmoBridge relay@mulmobridge/xmpp— XMPP / Jabber@mulmobridge/zulip— Zulip
License
MIT
