{"_id":"@bajoseek/openclaw-bajoseek","_rev":"5-026fc6f20ee90861970451b08f59d19d","name":"@bajoseek/openclaw-bajoseek","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@bajoseek/openclaw-bajoseek","version":"0.1.0","keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"license":"MIT","_id":"@bajoseek/openclaw-bajoseek@0.1.0","maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"dist":{"shasum":"a304d7de606fdf8da1e0cac0efb5f76440495146","tarball":"https://registry.npmjs.org/@bajoseek/openclaw-bajoseek/-/openclaw-bajoseek-0.1.0.tgz","fileCount":12,"integrity":"sha512-Cp5D6C7j9KoKYSX6/UtT1NfWd+zP6FzHFe+o2poeWIPwZrSQWNRpQKWpTl1+E0Fel5ERSylnFzouW4kA4ESKmA==","signatures":[{"sig":"MEQCIAffvHyX6qW8eibVQrQThoiXhvFYgsE0Uo/gNJFg4uY6AiB29WpP5xhHfJ9zJ4GBWrQLaXqlUfj8ulD+X3joBQFmsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58238},"main":"dist/index.js","type":"module","_from":"file:bajoseek-openclaw-bajoseek-0.1.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc || true"},"_npmUser":{"name":"xuhualun","email":"xuhualun945@gmail.com"},"openclaw":{"id":"bajoseek","extensions":["./index.ts"]},"_resolved":"/private/var/folders/n_/4jhdls4n3q10thh2yw79w7dh0000gn/T/6aa9a32f11a5d0a231cd15cc8f326090/bajoseek-openclaw-bajoseek-0.1.0.tgz","_integrity":"sha512-Cp5D6C7j9KoKYSX6/UtT1NfWd+zP6FzHFe+o2poeWIPwZrSQWNRpQKWpTl1+E0Fel5ERSylnFzouW4kA4ESKmA==","repository":{"url":"git+https://github.com/bajoseek/openclaw-bajoseek.git","type":"git"},"_npmVersion":"10.9.4","description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.9.3","@types/node":"^20.0.0"},"peerDependencies":{"openclaw":"*"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-bajoseek_0.1.0_1774258281398_0.9604621609180131","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bajoseek/openclaw-bajoseek","version":"0.1.1","keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"license":"MIT","_id":"@bajoseek/openclaw-bajoseek@0.1.1","maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"dist":{"shasum":"3ad286e6b356494a2d67f23f45a4ada6602cdf8f","tarball":"https://registry.npmjs.org/@bajoseek/openclaw-bajoseek/-/openclaw-bajoseek-0.1.1.tgz","fileCount":17,"integrity":"sha512-E3l88RaijDfI68nKRJiSdQYDYiccEXkY0x9MG/Z3F8RvCyWq1SnECgSn5pn49CzRwV/Abj3j1sMy0xLN/CrPIw==","signatures":[{"sig":"MEQCIGu9Pl4x1UqYnTUnEZW0Y81A94t/AOJPuL+sIF3rukB7AiBZwHu1UMi1/6h+2Gf3w1qxhlZ8MF6wbU5XhXX/H+PFGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96543},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f6d5c28929c1ec0df25310f639d6de9f156e0aa5","scripts":{"dev":"tsc --watch","build":"tsc || true","prepublishOnly":"npm run build"},"_npmUser":{"name":"xuhualun","email":"xuhualun945@gmail.com"},"openclaw":{"id":"bajoseek","channel":{"id":"bajoseek","blurb":"Connect to Bajoseek App via WebSocket","label":"Bajoseek","order":60,"docsPath":"/docs/channels/bajoseek","selectionLabel":"Bajoseek"},"extensions":["./index.ts"],"setupEntry":"./setup-entry.ts"},"repository":{"url":"git+https://github.com/bajoseek/openclaw-bajoseek.git","type":"git"},"_npmVersion":"10.9.4","description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.9.3","@types/node":"^20.0.0"},"peerDependencies":{"openclaw":"*"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-bajoseek_0.1.1_1774691224699_0.8216943492978057","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bajoseek/openclaw-bajoseek","version":"0.1.2","keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"license":"MIT","_id":"@bajoseek/openclaw-bajoseek@0.1.2","maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"dist":{"shasum":"38fcc3b6e022fe2829e77f6ee73187daa226e929","tarball":"https://registry.npmjs.org/@bajoseek/openclaw-bajoseek/-/openclaw-bajoseek-0.1.2.tgz","fileCount":17,"integrity":"sha512-k8KqKZLYnsnce7SHbVb29SeR5JZAPvwap1iZ04bVn6Fi4OdUJOa7CyKTYgJWutgzEXeDxqMrdxZ/dPaR8Ub/EA==","signatures":[{"sig":"MEUCIAbqMDRU52vD84mrlkyMltMkHJs8nPXIqnJ7UbmSeES8AiEAmbBrKunMubUi0J8PmuivC084VnCvuYsNICLK8of4tww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94073},"main":"dist/index.js","type":"module","_from":"file:bajoseek-openclaw-bajoseek-0.1.2.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc || true"},"_npmUser":{"name":"xuhualun","email":"xuhualun945@gmail.com"},"openclaw":{"id":"bajoseek","build":{"openclawVersion":"2026.4.11"},"compat":{"pluginApi":">=2026.4.11"},"channel":{"id":"bajoseek","blurb":"Connect to Bajoseek App via WebSocket","label":"Bajoseek","order":60,"docsPath":"/docs/channels/bajoseek","selectionLabel":"Bajoseek"},"extensions":["./index.ts"],"setupEntry":"./setup-entry.ts"},"_resolved":"/private/var/folders/1q/qkycv5991kd522l6yffb9r3m0000gn/T/3cba2f019ef5f641b14fa82d20712170/bajoseek-openclaw-bajoseek-0.1.2.tgz","_integrity":"sha512-k8KqKZLYnsnce7SHbVb29SeR5JZAPvwap1iZ04bVn6Fi4OdUJOa7CyKTYgJWutgzEXeDxqMrdxZ/dPaR8Ub/EA==","repository":{"url":"git+https://github.com/bajoseek/openclaw-bajoseek.git","type":"git"},"_npmVersion":"10.9.7","description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.9.3","@types/node":"^20.0.0"},"peerDependencies":{"openclaw":"*"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-bajoseek_0.1.2_1776326700065_0.5747010390920526","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bajoseek/openclaw-bajoseek","version":"0.1.3","keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"license":"MIT","_id":"@bajoseek/openclaw-bajoseek@0.1.3","maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"dist":{"shasum":"5b3655a5b6e76c61d6293775f89daa20b9d4d355","tarball":"https://registry.npmjs.org/@bajoseek/openclaw-bajoseek/-/openclaw-bajoseek-0.1.3.tgz","fileCount":17,"integrity":"sha512-+Aj68DHNuJlTblM3Y9e+7reTtqPZ5xoK/F2gBSTGs+nKu642h/XiqH38dJetRE2/XMWff1dD9h6vA5rKKDwsuA==","signatures":[{"sig":"MEUCIFtoMgHU2/pn34BRAJ3OGZQXmI+us2MD6wlQxRa8UOm1AiEAoeVmIblhy3aXITHC/yjfX7p/1x+tGoq9UsU4vyrsx6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94049},"main":"dist/index.js","type":"module","_from":"file:bajoseek-openclaw-bajoseek-0.1.3.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","build":"tsc || true"},"_npmUser":{"name":"xuhualun","email":"xuhualun945@gmail.com"},"openclaw":{"id":"bajoseek","build":{"openclawVersion":"2026.4.11"},"compat":{"pluginApi":">=2026.4.11"},"channel":{"id":"bajoseek","blurb":"Connect to Bajoseek App via WebSocket","label":"Bajoseek","order":60,"docsPath":"/docs/channels/bajoseek","selectionLabel":"Bajoseek"},"extensions":["./index.ts"],"setupEntry":"./setup-entry.ts"},"_resolved":"/private/var/folders/1q/qkycv5991kd522l6yffb9r3m0000gn/T/aa7ffe1cd318f4b0a032352b03f09b26/bajoseek-openclaw-bajoseek-0.1.3.tgz","_integrity":"sha512-+Aj68DHNuJlTblM3Y9e+7reTtqPZ5xoK/F2gBSTGs+nKu642h/XiqH38dJetRE2/XMWff1dD9h6vA5rKKDwsuA==","repository":{"url":"git+https://github.com/bajoseek/openclaw-bajoseek.git","type":"git"},"_npmVersion":"10.9.7","description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.9.3","@types/node":"^20.0.0"},"peerDependencies":{"openclaw":"*"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-bajoseek_0.1.3_1776418532107_0.17480489392244913","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bajoseek/openclaw-bajoseek","version":"0.1.4","description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","type":"module","main":"dist/index.js","types":"dist/index.d.ts","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bajoseek/openclaw-bajoseek.git"},"keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"openclaw":{"id":"bajoseek","extensions":["./index.ts"],"runtimeExtensions":["./dist/index.js"],"setupEntry":"./setup-entry.ts","runtimeSetupEntry":"./dist/setup-entry.js","channel":{"id":"bajoseek","label":"Bajoseek","selectionLabel":"Bajoseek","docsPath":"/docs/channels/bajoseek","blurb":"Connect to Bajoseek App via WebSocket","order":60},"compat":{"pluginApi":">=2026.4.11"},"build":{"openclawVersion":"2026.4.11"}},"dependencies":{"ws":"^8.18.0"},"devDependencies":{"@types/node":"^20.0.0","@types/ws":"^8.5.0","typescript":"^5.9.3"},"peerDependencies":{"openclaw":"*"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","dev":"tsc --watch"},"_id":"@bajoseek/openclaw-bajoseek@0.1.4","bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","_integrity":"sha512-VpKUoZzwO20EeskdZzg/AE4SrviSj32NFEseIHAKZvEYj9nSo3DfCbSyqa2/8NYv1IPdPCBMHclC7LnQXyf/XA==","_resolved":"/private/var/folders/1q/qkycv5991kd522l6yffb9r3m0000gn/T/241d9f4ccf23a730868c3a1213274508/bajoseek-openclaw-bajoseek-0.1.4.tgz","_from":"file:bajoseek-openclaw-bajoseek-0.1.4.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-VpKUoZzwO20EeskdZzg/AE4SrviSj32NFEseIHAKZvEYj9nSo3DfCbSyqa2/8NYv1IPdPCBMHclC7LnQXyf/XA==","shasum":"a66c9957692cce4eb71026965de3afc941d4c8b3","tarball":"https://registry.npmjs.org/@bajoseek/openclaw-bajoseek/-/openclaw-bajoseek-0.1.4.tgz","fileCount":41,"unpackedSize":188500,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDc1BcwO+OEIUTnbk6UrMxw09UoANlHeindL6BhJ3U2gQIgSV2nOFFuwdRNqjpIONL/uJlpN3wl+kbeLzYIAqsNwlI="}]},"_npmUser":{"name":"xuhualun","email":"xuhualun945@gmail.com"},"directories":{},"maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-bajoseek_0.1.4_1779334904026_0.4528245315277091"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T09:31:21.237Z","modified":"2026-05-21T03:41:44.311Z","0.1.0":"2026-03-23T09:31:21.553Z","0.1.1":"2026-03-28T09:47:04.837Z","0.1.2":"2026-04-16T08:05:00.192Z","0.1.3":"2026-04-17T09:35:32.245Z","0.1.4":"2026-05-21T03:41:44.173Z"},"bugs":{"url":"https://github.com/bajoseek/openclaw-bajoseek/issues"},"license":"MIT","homepage":"https://github.com/bajoseek/openclaw-bajoseek#readme","keywords":["openclaw","bajoseek","channel-plugin","websocket","ai","chatbot"],"repository":{"type":"git","url":"git+https://github.com/bajoseek/openclaw-bajoseek.git"},"description":"Bajoseek channel plugin for OpenClaw — connect AI assistants to Bajoseek via WebSocket","maintainers":[{"name":"xuhualun","email":"xuhualun945@gmail.com"},{"name":"marzs","email":"4huaa1@bajoseek.com"}],"readme":"# Bajoseek OpenClaw Plugin\n\n[中文文档](./README_zh.md)\n\nA channel plugin for [OpenClaw](https://github.com/openclaw/openclaw) that connects AI assistants to the Bajoseek App via WebSocket.\n\n## Compatibility\n\n| OpenClaw Version | Support |\n|---|---|\n| 3.24+ (new Plugin SDK) | Fully supported — uses `ChannelSetupWizard` |\n| 3.13 (legacy Plugin SDK) | Fully supported — uses `ChannelOnboardingAdapter` |\n\nThe plugin detects the OpenClaw version at runtime and automatically loads the appropriate setup adapter.\n\n## Features\n\n- **Real-time WebSocket Communication** — Bidirectional messaging between OpenClaw AI agents and Bajoseek users\n- **Block Streaming** — Progressive chunked response delivery for better responsiveness on long replies\n- **Auto-Reconnect** — Exponential backoff reconnection (1s -> 2s -> 5s -> 10s -> 30s -> 60s)\n- **Per-User Message Queue** — Isolated queues per user (max 20 messages/user, 10 concurrent users)\n- **Heartbeat** — Periodic ping every 30 seconds to keep connections alive\n- **Multi-Account** — Run multiple Bajoseek bot accounts from a single OpenClaw instance\n- **3-Level Token Fallback** — Config file -> token file -> environment variable\n- **Connection Validation** — Setup wizard verifies botId and token against the server before saving\n- **Inbound Message Limit** — Messages exceeding 100,000 characters are automatically truncated\n\n## Quick Start\n\n### Install\n\n```bash\npnpm add @bajoseek/openclaw-bajoseek\n```\n\n### Configure\n\nSet environment variables:\n\n```bash\nexport BAJOSEEK_BOT_ID=\"your-bot-id\"\nexport BAJOSEEK_TOKEN=\"your-token\"\n```\n\nOr add to your OpenClaw config file:\n\n```yaml\nchannels:\n  bajoseek:\n    enabled: true\n    botId: \"your-bot-id\"\n    token: \"your-token\"\n```\n\n### Interactive Setup\n\nRun the OpenClaw onboard wizard — it will guide you through:\n\n1. **BotID** — enter manually or use `BAJOSEEK_BOT_ID` env var\n2. **Token** — enter manually or use `BAJOSEEK_TOKEN` env var\n3. **WebSocket URL** — optional custom URL (default: `wss://ws.bajoseek.com`)\n4. **Block Streaming** — enable/disable chunked replies\n5. **Connection Validation** — automatically tests credentials against the server\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Description |\n|---|---|\n| `BAJOSEEK_BOT_ID` | Bot ID (default account only) |\n| `BAJOSEEK_TOKEN` | Auth token (default account only) |\n\n### Config Fields\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `enabled` | boolean | `true` | Enable/disable channel |\n| `botId` | string | — | Bajoseek bot ID |\n| `token` | string | — | Auth token |\n| `tokenFile` | string | — | Path to file containing token |\n| `wsUrl` | string | `wss://ws.bajoseek.com` | WebSocket server URL |\n| `allowFrom` | string[] | `[\"*\"]` | Message source allowlist |\n| `blockStreaming` | boolean | `true` | Enable chunked streaming |\n| `name` | string | — | Account display name |\n\n### Multi-Account\n\n```yaml\nchannels:\n  bajoseek:\n    enabled: true\n    botId: \"default-bot-id\"\n    token: \"default-token\"\n    accounts:\n      staging:\n        botId: \"staging-bot-id\"\n        token: \"staging-token\"\n        wsUrl: \"wss://staging.bajoseek.com\"\n      production:\n        botId: \"prod-bot-id\"\n        tokenFile: \"/secrets/bajoseek-token\"\n```\n\n## WebSocket Protocol\n\n### Inbound (Server -> Plugin)\n\n| Type | Fields | Description |\n|---|---|---|\n| `message` | `messageId`, `userId`, `conversationId`, `text`, `timestamp` | User message |\n| `pong` | — | Heartbeat response |\n| `error` | `code`, `message` | Server error |\n\n### Outbound (Plugin -> Server)\n\n| Type | Fields | Description |\n|---|---|---|\n| `stream_chunk` | `conversationId`, `text` | Partial response (non-final) |\n| `stream_end` | `conversationId`, `text` | Final response block |\n| `reply` | `to`, `text`, `replyToId?` | Direct reply message |\n| `ping` | — | Heartbeat |\n\n### Authentication\n\nWebSocket upgrade headers:\n- `X-Bot-Id: <botId>`\n- `Authorization: Bearer <token>`\n\n### Target Address Format\n\n```\nbajoseek:user:<userId>\n```\n\nAccepted inputs: `bajoseek:user:alice`, `user:alice`, or `alice`.\n\n## Channel Capabilities\n\n| Capability | Support |\n|---|---|\n| Direct Messages | Yes |\n| Group Chat | No |\n| Media | No |\n| Reactions | No |\n| Threads | No |\n| Block Streaming | Yes |\n\n## Development\n\n### Build\n\n```bash\npnpm install     # Install dependencies\npnpm run build   # Compile TypeScript\npnpm run dev     # Watch mode\n```\n\n> **Note:** `openclaw/plugin-sdk` is a peer dependency. Type errors from the SDK are expected during local builds without OpenClaw installed — `tsc || true` ensures JS output is still generated.\n\n### Project Structure\n\n```\nindex.ts              # Plugin entry point (register pattern, compatible with both versions)\nsetup-entry.ts        # Setup-only entry point\nsrc/\n  channel.ts          # ChannelPlugin implementation (dynamically loads setupWizard / onboarding)\n  gateway.ts          # WebSocket connection & message dispatch\n  outbound.ts         # Message sending utilities\n  config.ts           # Account config resolution (3-level token fallback) & connection validation\n  runtime.ts          # Plugin runtime singleton\n  onboarding.ts       # Legacy ChannelOnboardingAdapter (OpenClaw 3.13)\n  setup-surface.ts    # Interactive ChannelSetupWizard (OpenClaw 3.24+)\n  setup-core.ts       # CLI setup adapter (OpenClaw 3.24+)\n  sdk-compat.ts       # SDK compatibility layer (local config helpers)\n  types.ts            # TypeScript interfaces\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}