chore(rebrand): finish codewhale release surfaces

This commit is contained in:
Hunter Bown
2026-05-23 13:41:46 -05:00
parent 6de8ba363f
commit ddaabbfed2
50 changed files with 269 additions and 254 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ DEEPSEEK_AUTO_APPROVE=false
DEEPSEEK_CHAT_ALLOWLIST=
DEEPSEEK_ALLOW_UNLISTED=false
FEISHU_THREAD_MAP_PATH=/var/lib/deepseek-feishu-bridge/thread-map.json
FEISHU_THREAD_MAP_PATH=/var/lib/codewhale-feishu-bridge/thread-map.json
FEISHU_ALLOW_GROUPS=false
FEISHU_REQUIRE_PREFIX_IN_GROUP=true
FEISHU_GROUP_PREFIX=/ds
+5 -5
View File
@@ -1,12 +1,12 @@
# Feishu / Lark Bridge
This bridge lets a Feishu or Lark chat control a local `deepseek serve --http`
This bridge lets a Feishu or Lark chat control a local `codewhale serve --http`
runtime from a phone. It uses the official Lark/Feishu Node SDK long-connection
mode, so the first version does not need a public webhook URL.
Security model:
- `deepseek serve --http` stays bound to `127.0.0.1`.
- `codewhale serve --http` stays bound to `127.0.0.1`.
- `/v1/*` runtime calls use `DEEPSEEK_RUNTIME_TOKEN`.
- Feishu/Lark chats must be allowlisted unless `DEEPSEEK_ALLOW_UNLISTED=true`
is set for first pairing.
@@ -17,7 +17,7 @@ Security model:
## Setup
```bash
cd /opt/deepseek/bridge
cd /opt/codewhale/bridge
npm install --omit=dev
cp .env.example /etc/deepseek/feishu-bridge.env
sudoedit /etc/deepseek/feishu-bridge.env
@@ -37,8 +37,8 @@ npm run validate:config -- \
For a Tencent Lighthouse deployment, use:
```bash
sudo systemctl enable --now deepseek-runtime deepseek-feishu-bridge
sudo journalctl -u deepseek-feishu-bridge -f
sudo systemctl enable --now codewhale-runtime codewhale-feishu-bridge
sudo journalctl -u codewhale-feishu-bridge -f
```
## Commands
+2 -2
View File
@@ -1,11 +1,11 @@
{
"name": "@deepseek-tui/feishu-bridge",
"name": "@codewhale/feishu-bridge",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@deepseek-tui/feishu-bridge",
"name": "@codewhale/feishu-bridge",
"version": "0.1.0",
"dependencies": {
"@larksuiteoapi/node-sdk": "^1.52.0"
+2 -2
View File
@@ -1,9 +1,9 @@
{
"name": "@deepseek-tui/feishu-bridge",
"name": "@codewhale/feishu-bridge",
"version": "0.1.0",
"private": true,
"type": "module",
"description": "Feishu/Lark mobile bridge for a local deepseek serve --http runtime.",
"description": "Feishu/Lark mobile bridge for a local codewhale serve --http runtime.",
"main": "src/index.mjs",
"scripts": {
"start": "node src/index.mjs",
+1 -1
View File
@@ -99,7 +99,7 @@ const config = {
allowUnlisted: parseBool(process.env.DEEPSEEK_ALLOW_UNLISTED, false),
threadMapPath:
process.env.FEISHU_THREAD_MAP_PATH ||
"/var/lib/deepseek-feishu-bridge/thread-map.json",
"/var/lib/codewhale-feishu-bridge/thread-map.json",
allowGroups: parseBool(process.env.FEISHU_ALLOW_GROUPS, false),
requirePrefixInGroup: parseBool(process.env.FEISHU_REQUIRE_PREFIX_IN_GROUP, true),
groupPrefix: process.env.FEISHU_GROUP_PREFIX || "/ds",
+2 -2
View File
@@ -160,7 +160,7 @@ test("validateBridgeConfig accepts locked-down whalebro DM config", () => {
DEEPSEEK_WORKSPACE: "/opt/whalebro",
DEEPSEEK_CHAT_ALLOWLIST: "oc_allowed",
DEEPSEEK_ALLOW_UNLISTED: "false",
FEISHU_THREAD_MAP_PATH: "/var/lib/deepseek-feishu-bridge/thread-map.json",
FEISHU_THREAD_MAP_PATH: "/var/lib/codewhale-feishu-bridge/thread-map.json",
FEISHU_ALLOW_GROUPS: "false",
FEISHU_REQUIRE_PREFIX_IN_GROUP: "true"
},
@@ -187,7 +187,7 @@ test("validateBridgeConfig rejects unsafe group pairing and token mismatch", ()
DEEPSEEK_RUNTIME_TOKEN: "bridge-token",
DEEPSEEK_WORKSPACE: "/opt/whalebro",
DEEPSEEK_ALLOW_UNLISTED: "true",
FEISHU_THREAD_MAP_PATH: "/var/lib/deepseek-feishu-bridge/thread-map.json",
FEISHU_THREAD_MAP_PATH: "/var/lib/codewhale-feishu-bridge/thread-map.json",
FEISHU_ALLOW_GROUPS: "true",
FEISHU_REQUIRE_PREFIX_IN_GROUP: "false"
},