@mu-cabin/muc-cli 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -13
- package/REFERENCE.md +779 -0
- package/dist/muc.mjs +302 -47
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -141,7 +141,7 @@ npx skills add <everything-cli 仓库地址>/packages/muc/skills -y -g
|
|
|
141
141
|
|
|
142
142
|
### Skill 的行为规则
|
|
143
143
|
|
|
144
|
-
-
|
|
144
|
+
- **首次直连 TCP 命令前**:Skill 只提醒“同账号 iPad 可能被踢”,不再等待槽位确认,随后直接执行。
|
|
145
145
|
- **不确定发给谁**:先用 `muc search` 缩小候选名单,通过 `AskUserQuestion` 让你选,不会猜。
|
|
146
146
|
- **非自身目标**:必须经过你显式确认,不会偷偷给真实联系人发消息。
|
|
147
147
|
- **token 过期**:自动用 `--token-pwd` 静默续登,续登失败才要求你手动 `muc login`。
|
|
@@ -232,25 +232,23 @@ muc withdraw --mid <mid> --to-self # 撤回自己发出的消
|
|
|
232
232
|
|
|
233
233
|
---
|
|
234
234
|
|
|
235
|
-
## 和桌面端 /
|
|
235
|
+
## 和桌面端 / 手机端 / iPad 共存
|
|
236
236
|
|
|
237
237
|
REST 命令(`search`、`history`、`whois`、`groups` 等)**永远可以共存**,与桌面端、手机端同时在线互不影响。
|
|
238
238
|
|
|
239
|
-
聊天通道命令(`send*`、`withdraw`、`sync`、`search-team`、`team-members
|
|
239
|
+
聊天通道命令(`send*`、`withdraw`、`sync`、`search-team`、`team-members`)进入 MUC 实时通道。每个账号有 **PC、Mobile、iPad 三个独立槽位**;同槽后登录会把前一个挤下线。CLI 继续沿用 `--os` 选槽位,其中 `iPad` 是逻辑值:线上报文实际发送 `os:"iOS"` 和 `browser:"iPad"`。
|
|
240
240
|
|
|
241
241
|
| 算作哪端 | 对应的 `--os` 取值 |
|
|
242
242
|
|---|---|
|
|
243
243
|
| PC 端 | `Windows` / `OS X` / `Mac`(Mac 桌面端登录时上报的是 `OS X`) |
|
|
244
|
-
| 移动端 | `iOS
|
|
244
|
+
| 移动端 | `iOS` / `Android` |
|
|
245
|
+
| iPad 端 | `iPad`(CLI 默认;线上报文为 `os:iOS + browser:iPad`) |
|
|
245
246
|
|
|
246
|
-
> ⚠️
|
|
247
|
-
> 只要跑了 `send` / `withdraw` 等聊天通道命令,**正在登录 MUC 的 iPhone 会被立刻挤下线**
|
|
248
|
-
> (`accessToken` 不失效,但要重新打开 App 才能继续收实时消息)。
|
|
247
|
+
> ⚠️ CLI 默认使用 **iPad 槽位**。PC 桌面端和手机端可以继续在线;如果同账号正登录 iPad,iPad 可能被挤下线,重新打开 App 即可恢复,`accessToken` 不失效。
|
|
249
248
|
>
|
|
250
249
|
> - 测试或跑通流程时,先用 `muc send --to-self ...` 发给自己。
|
|
251
|
-
> -
|
|
252
|
-
> -
|
|
253
|
-
> - **不要**显式传 `--os Windows / OS X / Mac`——那会把 Mac 桌面端 MUC 也顶下去。
|
|
250
|
+
> - `--os iOS/Android` 会改占 Mobile 槽位,可能踢手机;`--os Windows/OS X/Mac` 会改占 PC 槽位,可能踢桌面端。
|
|
251
|
+
> - Skill 对默认 iPad 风险只做非阻塞提醒,不再要求预先确认槽位;发送给真实联系人、撤回等业务确认仍保留。
|
|
254
252
|
|
|
255
253
|
`muc tcp-ping` 只做 TCP 连接和 NEGOTIATE,**不发登录帧**,不占任何在线名额,纯连通性测试,可以随时跑。
|
|
256
254
|
|
|
@@ -280,7 +278,8 @@ packages/muc/ (everything-cli 工作区中的一个包)
|
|
|
280
278
|
├── scripts/build.mjs esbuild 打包脚本(→ dist/muc.mjs)
|
|
281
279
|
├── bin/muc tsx 入口(零构建直接跑 src/)
|
|
282
280
|
├── README.md 本文件
|
|
283
|
-
|
|
281
|
+
├── REFERENCE.md 完整命令 / 协议参考
|
|
282
|
+
└── NATIVE_API.md MUC 原生协议全景 / CLI 实现状态
|
|
284
283
|
```
|
|
285
284
|
|
|
286
285
|
> 协议研究文档与抓包脚本保留在内部源码研究仓库,未随本包导入;下文"协议抓包 /
|
|
@@ -311,7 +310,7 @@ python3 analyze_api.py flows.ndjson --host muc.example.com
|
|
|
311
310
|
### 改动后测试流程
|
|
312
311
|
|
|
313
312
|
1. `pnpm run typecheck`(在 `packages/muc` 下)— 先过类型检查。
|
|
314
|
-
2. 按内部 `TEST_CASES.md`
|
|
313
|
+
2. 按内部 `TEST_CASES.md` 从头到尾跑一遍;实时命令默认走 iPad 槽位,实机验证前确认没有需要保持在线的同账号 iPad。
|
|
315
314
|
3. 任何一项失败:把 `--json` 原始信封贴给用户,停下来,不要"修一修再跑"。
|
|
316
315
|
|
|
317
316
|
### 协议层参考(内部文档)
|
|
@@ -323,6 +322,6 @@ python3 analyze_api.py flows.ndjson --host muc.example.com
|
|
|
323
322
|
### 红线
|
|
324
323
|
|
|
325
324
|
- **绝不入库** `accessToken`、`tokenPwd`、明文密码、`clientSecret`、`pfxPass`、`bsSecretKey`、`encrypt_key`,以及租户密钥(`APP_KEY` / `sign secrets`)。
|
|
326
|
-
- **CLI
|
|
325
|
+
- **CLI 默认占用同账号的 iPad 槽位**(`--os iPad` → `os:iOS + browser:iPad`),可能顶掉真实 iPad;显式传 Mobile/PC 类 `--os` 才会影响手机/桌面端。
|
|
327
326
|
- **CLI 发的消息所有参与方都可见。** 非自身目标必须带 `--yes-not-self`,先用 `--to-self` 测。
|
|
328
327
|
- **不要擅自改 Surge 配置文件**(`~/Library/Application Support/Surge/Profiles/*.conf`)。要加 MITM hostname 让用户在 Surge UI 里加。
|