botmux 3.18.1 → 3.18.3

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.
Files changed (76) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/bot-registry.d.ts +6 -0
  3. package/dist/bot-registry.d.ts.map +1 -1
  4. package/dist/bot-registry.js +25 -0
  5. package/dist/bot-registry.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +28 -3
  8. package/dist/cli.js.map +1 -1
  9. package/dist/core/fleet-state-store.d.ts.map +1 -1
  10. package/dist/core/fleet-state-store.js +6 -0
  11. package/dist/core/fleet-state-store.js.map +1 -1
  12. package/dist/core/fleet-supervisor-policy.d.ts +38 -6
  13. package/dist/core/fleet-supervisor-policy.d.ts.map +1 -1
  14. package/dist/core/fleet-supervisor-policy.js +32 -9
  15. package/dist/core/fleet-supervisor-policy.js.map +1 -1
  16. package/dist/core/fleet-supervisor.d.ts +39 -0
  17. package/dist/core/fleet-supervisor.d.ts.map +1 -1
  18. package/dist/core/fleet-supervisor.js +61 -9
  19. package/dist/core/fleet-supervisor.js.map +1 -1
  20. package/dist/core/reply-target.d.ts +27 -0
  21. package/dist/core/reply-target.d.ts.map +1 -1
  22. package/dist/core/reply-target.js +58 -0
  23. package/dist/core/reply-target.js.map +1 -1
  24. package/dist/core/worker-pool.d.ts.map +1 -1
  25. package/dist/core/worker-pool.js +17 -1
  26. package/dist/core/worker-pool.js.map +1 -1
  27. package/dist/daemon.d.ts +3 -0
  28. package/dist/daemon.d.ts.map +1 -1
  29. package/dist/daemon.js +25 -7
  30. package/dist/daemon.js.map +1 -1
  31. package/dist/dashboard.js +102 -7
  32. package/dist/dashboard.js.map +1 -1
  33. package/dist/i18n/en.d.ts.map +1 -1
  34. package/dist/i18n/en.js +6 -0
  35. package/dist/i18n/en.js.map +1 -1
  36. package/dist/i18n/zh.d.ts.map +1 -1
  37. package/dist/i18n/zh.js +6 -0
  38. package/dist/i18n/zh.js.map +1 -1
  39. package/dist/im/lark/event-dispatcher.d.ts +13 -0
  40. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  41. package/dist/im/lark/event-dispatcher.js +32 -7
  42. package/dist/im/lark/event-dispatcher.js.map +1 -1
  43. package/dist/im/lark/issue-command-deps.d.ts.map +1 -1
  44. package/dist/im/lark/issue-command-deps.js +14 -5
  45. package/dist/im/lark/issue-command-deps.js.map +1 -1
  46. package/dist/im/lark/issue-command.d.ts +6 -3
  47. package/dist/im/lark/issue-command.d.ts.map +1 -1
  48. package/dist/im/lark/issue-command.js +23 -10
  49. package/dist/im/lark/issue-command.js.map +1 -1
  50. package/dist/im/lark/mention-mode-command.d.ts +2 -0
  51. package/dist/im/lark/mention-mode-command.d.ts.map +1 -0
  52. package/dist/im/lark/mention-mode-command.js +72 -0
  53. package/dist/im/lark/mention-mode-command.js.map +1 -0
  54. package/dist/platform/tunnel-client.d.ts +27 -0
  55. package/dist/platform/tunnel-client.d.ts.map +1 -1
  56. package/dist/platform/tunnel-client.js +205 -22
  57. package/dist/platform/tunnel-client.js.map +1 -1
  58. package/dist/services/chat-reply-mode-store.d.ts +21 -4
  59. package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
  60. package/dist/services/chat-reply-mode-store.js +68 -1
  61. package/dist/services/chat-reply-mode-store.js.map +1 -1
  62. package/dist/services/send-policy.d.ts +38 -0
  63. package/dist/services/send-policy.d.ts.map +1 -1
  64. package/dist/services/send-policy.js +33 -0
  65. package/dist/services/send-policy.js.map +1 -1
  66. package/dist/services/vc-meeting-listener-output-protocol.d.ts +10 -0
  67. package/dist/services/vc-meeting-listener-output-protocol.d.ts.map +1 -1
  68. package/dist/services/vc-meeting-listener-output-protocol.js +12 -0
  69. package/dist/services/vc-meeting-listener-output-protocol.js.map +1 -1
  70. package/dist/types.d.ts +16 -0
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/utils/child-env.d.ts +41 -0
  73. package/dist/utils/child-env.d.ts.map +1 -1
  74. package/dist/utils/child-env.js +53 -0
  75. package/dist/utils/child-env.js.map +1 -1
  76. package/package.json +7 -7
@@ -5,8 +5,9 @@
5
5
  * bot 注册表都在这里装配。card-handler 与 command-handler 都从这里取。
6
6
  */
7
7
  import { config } from '../../config.js';
8
- import { effectiveBotDisplayName, getBot } from '../../bot-registry.js';
8
+ import { effectiveBotDisplayName, effectiveDefaultWorkingDir, getBot } from '../../bot-registry.js';
9
9
  import { logger } from '../../utils/logger.js';
10
+ import { configuredWorkingDirs } from '../../utils/working-dir.js';
10
11
  import { readPlatformBinding } from '../../platform/binding.js';
11
12
  import { bindIssue, claimIssue, fetchIssues, fetchTeams, findIssueById, writeIssueStatus, } from '../../platform/issue-client.js';
12
13
  import { claimIssueIntoGroup, issueDetailUrl } from '../../services/issue-claim-flow.js';
@@ -60,15 +61,23 @@ export function buildIssueCommandDeps(activate = registeredActivate) {
60
61
  workingDirs: (larkAppId) => {
61
62
  try {
62
63
  const cfg = getBot(larkAppId).config;
63
- return [
64
- ...(cfg.workingDir ? [cfg.workingDir] : []),
65
- ...(cfg.workingDirs ?? []),
66
- ];
64
+ return configuredWorkingDirs({
65
+ workingDir: cfg.workingDir,
66
+ workingDirs: cfg.workingDirs,
67
+ });
67
68
  }
68
69
  catch {
69
70
  return [];
70
71
  }
71
72
  },
73
+ defaultWorkingDir: (larkAppId) => {
74
+ try {
75
+ return effectiveDefaultWorkingDir(getBot(larkAppId).config);
76
+ }
77
+ catch {
78
+ return undefined;
79
+ }
80
+ },
72
81
  runClaim: async ({ issue, teamId, larkAppId, workingDir, invokerOpenId }) => {
73
82
  const binding = readPlatformBinding();
74
83
  if (!binding)
@@ -1 +1 @@
1
- {"version":3,"file":"issue-command-deps.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-command-deps.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command-deps.ts"],"names":[],"mappings":"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"}
@@ -34,8 +34,10 @@ export interface IssueCommandDeps {
34
34
  }>;
35
35
  /** 该 bot 的管理员 open_id 名单(`resolvedAllowedUsers`)。 */
36
36
  allowedUsers: (larkAppId: string) => string[];
37
- /** 该 bot 配置的工作目录(未展开 `~`)。 */
37
+ /** 该 bot 显式配置的仓库扫描根(未展开 `~`)。 */
38
38
  workingDirs: (larkAppId: string) => string[];
39
+ /** 该 bot 的有效固定目录(fixed / default-oncall,未展开 `~`)。 */
40
+ defaultWorkingDir: (larkAppId: string) => string | undefined;
39
41
  /** 跑 [[issue-release]] 的 `releaseIssue`。按锚点释放,锚点由调用方从当前会话推出来。 */
40
42
  runRelease: (anchorId: string) => Promise<TerminalResult>;
41
43
  /** 跑 [[issue-release]] 的 `completeIssue`(验收完成)。与释放同形,只是目标态不同。 */
@@ -95,8 +97,9 @@ export type IssueCardCallbackResult = {
95
97
  /**
96
98
  * 扫出该 bot 可选的仓库。
97
99
  *
98
- * 不能直接用 `workingDirs`:它常常配的是一个工作区父目录(`~/claude-code-workspace`),
99
- * 直接当候选,选中的会是工作区根目录。扫一层才拿得到真正的仓库和 worktree。
100
+ * 显式 `workingDirs` 是工作区父目录,需要递归找出其中的仓库和 worktree。
101
+ * fixed / default-oncall 则钉住一个目录:只有该目录本身是 git 仓库时才直接生成唯一候选,
102
+ * 不能把它当扫描根,否则 `~` 等大目录会同步卡住卡片回调,单仓库也会展开数百个 worktree。
100
103
  */
101
104
  export declare function reposFor(larkAppId: string, deps: IssueCommandDeps): RepoChoice[];
102
105
  /** `/issue`(裸)→ 看板卡片。 */
@@ -1 +1 @@
1
- {"version":3,"file":"issue-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * 未经校验。
17
17
  */
18
18
  import { logger } from '../../utils/logger.js';
19
- import { scanMultipleProjects } from '../../services/project-scanner.js';
19
+ import { describeProjectDir, scanMultipleProjects } from '../../services/project-scanner.js';
20
20
  import { configuredWorkingDirs, expandHomePath } from '../../utils/working-dir.js';
21
21
  import { ISSUE_ACTION_CLAIM_CANCEL, ISSUE_ACTION_CLAIM_CONFIRM, ISSUE_ACTION_CLAIM_DIR, ISSUE_ACTION_CLAIM_OPEN, ISSUE_ACTION_PAGE, ISSUE_ACTION_REFRESH, ISSUE_ACTION_TEAM, buildClaimConfirmCard, buildClaimResultCard, buildIssueBoardCard, claimFailureHint, matchRepo, } from './issue-card.js';
22
22
  function toast(content) {
@@ -41,19 +41,32 @@ function toRow(i) {
41
41
  /**
42
42
  * 扫出该 bot 可选的仓库。
43
43
  *
44
- * 不能直接用 `workingDirs`:它常常配的是一个工作区父目录(`~/claude-code-workspace`),
45
- * 直接当候选,选中的会是工作区根目录。扫一层才拿得到真正的仓库和 worktree。
44
+ * 显式 `workingDirs` 是工作区父目录,需要递归找出其中的仓库和 worktree。
45
+ * fixed / default-oncall 则钉住一个目录:只有该目录本身是 git 仓库时才直接生成唯一候选,
46
+ * 不能把它当扫描根,否则 `~` 等大目录会同步卡住卡片回调,单仓库也会展开数百个 worktree。
46
47
  */
47
48
  export function reposFor(larkAppId, deps) {
48
49
  const dirs = configuredWorkingDirs({ workingDirs: deps.workingDirs(larkAppId) }).map(expandHomePath);
49
- if (!dirs.length)
50
- return [];
51
50
  try {
52
- return scanMultipleProjects(dirs, 3, { includeWorktrees: true }).map((p) => ({
53
- name: p.name,
54
- path: p.path,
55
- ...(p.branch ? { branch: p.branch } : {}),
56
- }));
51
+ if (dirs.length > 0) {
52
+ return scanMultipleProjects(dirs, 3, { includeWorktrees: true }).map((p) => ({
53
+ name: p.name,
54
+ path: p.path,
55
+ ...(p.branch ? { branch: p.branch } : {}),
56
+ }));
57
+ }
58
+ const defaultDir = deps.defaultWorkingDir(larkAppId)?.trim();
59
+ if (!defaultDir)
60
+ return [];
61
+ const path = expandHomePath(defaultDir);
62
+ const project = describeProjectDir(path);
63
+ if (!project)
64
+ return [];
65
+ return [{
66
+ name: project.name,
67
+ path,
68
+ ...(project.branch ? { branch: project.branch } : {}),
69
+ }];
57
70
  }
58
71
  catch (e) {
59
72
  // 扫描失败不该让整个命令挂掉:回落到空候选,确认卡会说明"没扫到仓库"。
@@ -1 +1 @@
1
- {"version":3,"file":"issue-command.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-command.js","sourceRoot":"","sources":["../../../src/im/lark/issue-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function tryHandleMentionModeCommand(larkAppId: string, message: any, senderOpenId: string | undefined, canTalk: boolean): Promise<boolean>;
2
+ //# sourceMappingURL=mention-mode-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-mode-command.d.ts","sourceRoot":"","sources":["../../../src/im/lark/mention-mode-command.ts"],"names":[],"mappings":"AAeA,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CA0DlB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * `/mention-mode` is a sessionless, pre-routing command — same shape as
3
+ * /reply-mode: per-chat @-requirement policy for regular groups, layered over
4
+ * the per-bot `regularGroupMentionMode` default. Status is canTalk while
5
+ * mutations stay canOperate, and toggling the group setting never creates a
6
+ * phantom session.
7
+ */
8
+ import { isBotMentioned, canOperate, extractMessageTextForRouting } from './event-dispatcher.js';
9
+ import { stripLeadingMentions } from './message-parser.js';
10
+ import { getChatMode, replyMessage } from './client.js';
11
+ import { localeForBot, t } from '../../i18n/index.js';
12
+ import { normalizeGroupMentionMode, resolveGroupMentionMode, setChatMentionMode } from '../../services/chat-reply-mode-store.js';
13
+ import { isSessionGroup } from '../../services/session-groups-store.js';
14
+ import { logger } from '../../utils/logger.js';
15
+ export async function tryHandleMentionModeCommand(larkAppId, message, senderOpenId, canTalk) {
16
+ const rawText = extractMessageTextForRouting(message);
17
+ if (!rawText)
18
+ return false;
19
+ const text = stripLeadingMentions(rawText.trim(), message?.mentions ?? []);
20
+ const match = /^\/mention-mode(?:\s+(\S+))?\s*$/i.exec(text);
21
+ if (!match)
22
+ return false;
23
+ const isP2p = message.chat_type === 'p2p';
24
+ // Multi-bot groups: only the explicitly @mentioned bot owns this command.
25
+ // p2p DMs are implicitly addressed to the sole bot — no @ required.
26
+ if (!isP2p && !isBotMentioned(larkAppId, message, senderOpenId))
27
+ return true;
28
+ const chatId = message.chat_id;
29
+ const messageId = message.message_id;
30
+ const loc = localeForBot(larkAppId);
31
+ const reply = (content) => messageId
32
+ ? replyMessage(larkAppId, messageId, content, 'text', false)
33
+ .catch(err => logger.warn(`[mention-mode] reply failed: ${err?.message ?? err}`))
34
+ : Promise.resolve();
35
+ const arg = match[1]?.trim().toLowerCase();
36
+ const isStatus = !arg || arg === 'status';
37
+ // @ 策略只对普通群有意义:私聊天然无需 @,话题群本就是话题形态。
38
+ if (isP2p || !chatId || (await getChatMode(larkAppId, chatId)) !== 'group') {
39
+ await reply(t('cmd.mention_mode.unsupported', undefined, loc));
40
+ return true;
41
+ }
42
+ // 会话群(p2pMode=group 出生)由 bot 自动管理 — 拒绝改动,避免 per-chat
43
+ // 配置挂到一次性群上(与 /reply-mode 一致,见 session-groups-store)。
44
+ if (isSessionGroup(chatId)) {
45
+ await reply(t('sg.cmd_unsupported', { cmd: '/mention-mode' }, loc));
46
+ return true;
47
+ }
48
+ if (isStatus) {
49
+ if (!canTalk)
50
+ return true;
51
+ const mode = resolveGroupMentionMode(larkAppId, chatId);
52
+ await reply(t('cmd.mention_mode.status', { mode }, loc));
53
+ return true;
54
+ }
55
+ const mode = normalizeGroupMentionMode(arg);
56
+ if (!mode) {
57
+ await reply(t('cmd.mention_mode.usage', undefined, loc));
58
+ return true;
59
+ }
60
+ if (!canOperate(larkAppId, chatId, senderOpenId)) {
61
+ await reply(t('cmd.mention_mode.owner_only', undefined, loc));
62
+ return true;
63
+ }
64
+ const res = await setChatMentionMode(larkAppId, chatId, mode);
65
+ if (!res.ok) {
66
+ await reply(t('cmd.mention_mode.failed', { reason: res.reason }, loc));
67
+ return true;
68
+ }
69
+ await reply(t('cmd.mention_mode.updated', { mode }, loc));
70
+ return true;
71
+ }
72
+ //# sourceMappingURL=mention-mode-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-mode-command.js","sourceRoot":"","sources":["../../../src/im/lark/mention-mode-command.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { WebSocket } from 'ws';
1
2
  import { type PlatformBinding } from './binding.js';
2
3
  /** 本机一个 botmux bot 的概要(上报给平台,供团队页「人→机器→bot」展示 + 拉群)。 */
3
4
  export interface PlatformBotInfo {
@@ -44,4 +45,30 @@ export interface TunnelClientHandle {
44
45
  stop(): void;
45
46
  }
46
47
  export declare function startPlatformTunnelClient(opts: TunnelClientOptions): TunnelClientHandle;
48
+ /**
49
+ * 把一条胜出的数据通道 WebSocket 裸桥接到本地 dashboard 的 TCP 端口。
50
+ *
51
+ * 手动事件桥接,不用 `ws` 的 `createWebSocketStream()`:那个 API 在 **Bun 里直接抛
52
+ * `Error("Not supported yet in Bun")`**(实测 bun 1.4.0 抛、node v22.21.1 正常)。
53
+ * 而编译版单文件二进制跑的就是 Bun —— 于是控制通道连上了(`new WebSocket` 在 Bun 下
54
+ * 正常,日志照打「隧道已连接平台」、平台侧显示机器在线),但每次真要转发请求都崩在桥接
55
+ * 那一行,数据通道永远建不起来:平台侧 Dashboard 整站打不开,而本地直连不经隧道故一切
56
+ * 正常。这个「dev 模式能开、二进制不能开」的分裂就是它。
57
+ *
58
+ * ⚠️ 背压信号为什么不用 `bufferedAmount`:**Bun 下它恒为 0**。实测(bun 1.4.0 客户端
59
+ * + 真 Node `ws` 服务端、对端停读):连发 400MB 后 `bufferedAmount` 一直是 0、
60
+ * `pause()` 只打印 `[bun] Warning: ... not implemented in bun` 且暂停期间 400/400 条
61
+ * 照送、`send(data, cb)` 的回调在「交给内部队列」时就结算(对端应用层实收 0.0MB 时
62
+ * 400 个回调已全部回来,所以自计数也恒为 0)、`ws` shim 无 `_socket` 可看
63
+ * `writableLength`、Bun 原生 `globalThis.WebSocket` 的 `bufferedAmount` 同样恒 0。
64
+ * ⟹ **ws 层没有任何可用的已缓冲量信号**。
65
+ *
66
+ * 所以改用**协议层确认**:超水位后 `ping()`,只有收到 `pong` 才继续读 TCP。pong 必须由
67
+ * 对端真的读到我们的字节后才可能回来,因此它是「平台确实在消费」的证据,且在 Node 与
68
+ * Bun 下行为一致(两个运行时都实测:对端停读期间 0 个 pong,恢复后收到)。
69
+ *
70
+ * 导出而非内联在 `openDataStream` 里,是为了让测试能 import 到**生产这一份**——
71
+ * 早先测试自己复制了一份桥接,结果删掉整段背压/改成发文本都不报红。
72
+ */
73
+ export declare function bridgeDataChannel(winner: WebSocket, dashboardPort: number): void;
47
74
  //# sourceMappingURL=tunnel-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../src/platform/tunnel-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0C,KAAK,eAAe,EAAqB,MAAM,cAAc,CAAC;AAE/G,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4DACwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;sCAEkC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC;IAClC;uCACmC;IACnC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B;4CACwC;IACxC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AA4CD,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAkXvF"}
1
+ {"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../src/platform/tunnel-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAC;AAC7C,OAAO,EAA0C,KAAK,eAAe,EAAqB,MAAM,cAAc,CAAC;AAE/G,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4DACwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;sCAEkC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC;IAClC;uCACmC;IACnC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B;4CACwC;IACxC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACxD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AA0DD,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAoWvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAiHhF"}
@@ -3,7 +3,7 @@
3
3
  // 下发 open-stream,本端拨一条数据连接回去、裸桥接到本地 dashboard 端口。
4
4
  import net from 'node:net';
5
5
  import { hostname, networkInterfaces } from 'node:os';
6
- import { WebSocket, createWebSocketStream } from 'ws';
6
+ import { WebSocket } from 'ws';
7
7
  import { setPlatformTeams, clearPlatformBinding } from './binding.js';
8
8
  const HEARTBEAT_MS = 30_000;
9
9
  const BACKOFF_MIN_MS = 1_000;
@@ -21,6 +21,17 @@ const DATA_DIAL_PARALLEL = 3;
21
21
  const DATA_DIAL_MAX_WAVES = 2;
22
22
  const DATA_DIAL_WAVE_BACKOFF_MS = 150;
23
23
  const DATA_DIAL_OVERALL_DEADLINE_MS = 8_000;
24
+ // 桥接的 WebSocket 侧背压水位:本地 dashboard 读得比平台链路发得快时(下载、长日志),
25
+ // 未确认送达的字节超过这个水位就暂停 TCP 读取,等确认后继续。`pipe()` 原来替我们管背压,
26
+ // 手写事件桥接(见 bridgeDataChannel():Bun 不支持 createWebSocketStream)就必须自己管,
27
+ // 否则大响应会在内存里堆帧。
28
+ const WS_BACKPRESSURE_BYTES = 4 * 1024 * 1024;
29
+ // 背压确认用的 ping 间隔:超水位后每隔这么久探一次「平台真的收下了吗」。
30
+ // 取值权衡:太小则空转 ping,太大则恢复迟钝、拉长大响应的总时长。
31
+ const WS_BACKPRESSURE_PROBE_MS = 20;
32
+ // 本地 dashboard FIN 后,等 WebSocket 把已排队的帧刷完并收到对端 close 的上限;
33
+ // 到点仍未收到就硬收尾,别把 socket 永久挂着。
34
+ const WS_CLOSE_FLUSH_TIMEOUT_MS = 30_000;
24
35
  // 控制连接并行拨号(happy-eyeballs):一轮并行拨几条、谁先握手成功用谁,兜住入口 VIP 对新建连接
25
36
  // ~35% 的黑洞。单条超时给足 TLS 握手时间(好连接 ~40ms,黑洞则等满超时判负)。
26
37
  const CONTROL_DIAL_PARALLEL = 3;
@@ -363,27 +374,7 @@ export function startPlatformTunnelClient(opts) {
363
374
  }
364
375
  inflight.clear();
365
376
  // 数据流必须关 permessage-deflate(连接创建时已设),否则大文件帧经网关压缩协商错位 → RSV1 断流。
366
- const dup = createWebSocketStream(winner);
367
- const tcp = net.connect(opts.getDashboardPort(), '127.0.0.1');
368
- // 交互式终端关 Nagle:终端输出常被拆成「回显字符 + 光标/颜色控制序列」这类分帧小包,
369
- // Nagle 会把紧随其后的小包扣到对端 delayed-ACK(~40ms)才发出。网页终端经平台隧道中转时
370
- // 这条桥接 socket 串在链路中间,用户就感到每隔一下卡 ~40ms;本机直连不经隧道故不卡。
371
- tcp.setNoDelay(true);
372
- const kill = () => {
373
- try {
374
- dup.destroy();
375
- }
376
- catch { /* ignore */ }
377
- try {
378
- tcp.destroy();
379
- }
380
- catch { /* ignore */ }
381
- };
382
- dup.on('error', kill);
383
- tcp.on('error', kill);
384
- tcp.on('close', kill);
385
- dup.pipe(tcp);
386
- tcp.pipe(dup);
377
+ bridgeDataChannel(winner, opts.getDashboardPort());
387
378
  };
388
379
  // 每波并行拨 DATA_DIAL_PARALLEL 条,谁先 open 谁胜出;一波全黑洞/失败才进下一波(有界)。
389
380
  const dialWave = () => {
@@ -479,6 +470,184 @@ export function startPlatformTunnelClient(opts) {
479
470
  },
480
471
  };
481
472
  }
473
+ /**
474
+ * 把一条胜出的数据通道 WebSocket 裸桥接到本地 dashboard 的 TCP 端口。
475
+ *
476
+ * 手动事件桥接,不用 `ws` 的 `createWebSocketStream()`:那个 API 在 **Bun 里直接抛
477
+ * `Error("Not supported yet in Bun")`**(实测 bun 1.4.0 抛、node v22.21.1 正常)。
478
+ * 而编译版单文件二进制跑的就是 Bun —— 于是控制通道连上了(`new WebSocket` 在 Bun 下
479
+ * 正常,日志照打「隧道已连接平台」、平台侧显示机器在线),但每次真要转发请求都崩在桥接
480
+ * 那一行,数据通道永远建不起来:平台侧 Dashboard 整站打不开,而本地直连不经隧道故一切
481
+ * 正常。这个「dev 模式能开、二进制不能开」的分裂就是它。
482
+ *
483
+ * ⚠️ 背压信号为什么不用 `bufferedAmount`:**Bun 下它恒为 0**。实测(bun 1.4.0 客户端
484
+ * + 真 Node `ws` 服务端、对端停读):连发 400MB 后 `bufferedAmount` 一直是 0、
485
+ * `pause()` 只打印 `[bun] Warning: ... not implemented in bun` 且暂停期间 400/400 条
486
+ * 照送、`send(data, cb)` 的回调在「交给内部队列」时就结算(对端应用层实收 0.0MB 时
487
+ * 400 个回调已全部回来,所以自计数也恒为 0)、`ws` shim 无 `_socket` 可看
488
+ * `writableLength`、Bun 原生 `globalThis.WebSocket` 的 `bufferedAmount` 同样恒 0。
489
+ * ⟹ **ws 层没有任何可用的已缓冲量信号**。
490
+ *
491
+ * 所以改用**协议层确认**:超水位后 `ping()`,只有收到 `pong` 才继续读 TCP。pong 必须由
492
+ * 对端真的读到我们的字节后才可能回来,因此它是「平台确实在消费」的证据,且在 Node 与
493
+ * Bun 下行为一致(两个运行时都实测:对端停读期间 0 个 pong,恢复后收到)。
494
+ *
495
+ * 导出而非内联在 `openDataStream` 里,是为了让测试能 import 到**生产这一份**——
496
+ * 早先测试自己复制了一份桥接,结果删掉整段背压/改成发文本都不报红。
497
+ */
498
+ export function bridgeDataChannel(winner, dashboardPort) {
499
+ const tcp = net.connect(dashboardPort, '127.0.0.1');
500
+ // 交互式终端关 Nagle:终端输出常被拆成「回显字符 + 光标/颜色控制序列」这类分帧小包,
501
+ // Nagle 会把紧随其后的小包扣到对端 delayed-ACK(~40ms)才发出。网页终端经平台隧道中转时
502
+ // 这条桥接 socket 串在链路中间,用户就感到每隔一下卡 ~40ms;本机直连不经隧道故不卡。
503
+ tcp.setNoDelay(true);
504
+ let killed = false;
505
+ let ending = false;
506
+ // 「已发出但未被 pong 确认的字节数」——反向背压水位,同时是 finish() 判断排空的依据。
507
+ // 声明在 kill/finish 之前:它们会读这个变量,别让顺序变成 TDZ 隐患。
508
+ let unacked = 0;
509
+ let probing = false;
510
+ /**
511
+ * 硬收尾:双向都会触发 close/error,去重避免重复 destroy。
512
+ *
513
+ * 优雅关闭路径不需要在这里额外让路:finish() 已经等到 `unacked` 归零才 `close()`,
514
+ * 到 winner 'close' 回来时队列本就是空的,此时 terminate 无数据可丢。
515
+ * (实测过一个「ending 时跳过 terminate」的额外分支:Bun 下 64MB × 4 次、以及平台永不
516
+ * 回 close 的场景,加与不加逐字同结果 ⟹ 是没有牙的复杂度,删掉。)
517
+ */
518
+ const kill = () => {
519
+ if (killed)
520
+ return;
521
+ killed = true;
522
+ try {
523
+ winner.terminate();
524
+ }
525
+ catch { /* ignore */ }
526
+ try {
527
+ tcp.destroy();
528
+ }
529
+ catch { /* ignore */ }
530
+ };
531
+ /**
532
+ * 本地 dashboard 写完并 FIN 时的收尾:**先等排空、再 `close()`**,绝不 `terminate()`。
533
+ *
534
+ * ⚠️ 这里实测会真丢数据,且踩了两层:
535
+ * 1. `terminate()` 直接掐断 socket,Bun 内部队列里没发出去的帧全丢。64MB 响应 A/B
536
+ * (本地写满 64MB 后 FIN,平台侧统计实收):`terminate()` → 只收到 50.2MB。
537
+ * 2. 光换成 `close()` 也不够:仍有 `unacked > 0`(帧已交给队列但对端未确认)时
538
+ * close 会抢在排空前生效,实测 4 次里 2 次丢 4~5MB。
539
+ * 所以先用 ping/pong 等到 `unacked` 归零(pong 证明对端真读到了我们的字节),再 close。
540
+ * 实测该顺序 64MB × 5 次全部零丢失。原先 `pipe()` 的 `end:true` 免费提供了这个语义。
541
+ *
542
+ * ⚠️⚠️ 别把上面的字节数当成「凑够这个量就能测出来」:丢多少、乃至丢不丢,取决于 FIN 那一
543
+ * 刻 Bun 队列里恰好压着多少字节(灌速 × 平台消费节奏 × 调度的竞态),**不是尺寸阈值**。
544
+ * 两次独立测量就不一致:一处 64MB 丢 14~27MB、24MB 不丢;另一处 64MB 在快/限速平台都零丢。
545
+ * ⟹ 这条不能靠行为断言守,回归防线是测试里那条**源码形态守卫**(别删它)。
546
+ */
547
+ const finish = () => {
548
+ if (killed || ending)
549
+ return;
550
+ ending = true;
551
+ const closeWhenDrained = () => {
552
+ if (killed)
553
+ return;
554
+ if (winner.readyState !== winner.OPEN) {
555
+ kill();
556
+ return;
557
+ }
558
+ if (unacked <= 0) {
559
+ try {
560
+ winner.close();
561
+ }
562
+ catch {
563
+ kill();
564
+ }
565
+ return;
566
+ }
567
+ try {
568
+ winner.ping();
569
+ }
570
+ catch {
571
+ kill();
572
+ return;
573
+ }
574
+ setTimeout(closeWhenDrained, WS_BACKPRESSURE_PROBE_MS);
575
+ };
576
+ closeWhenDrained();
577
+ // 关闭帧发出后对端会回 close,届时 winner 的 'close' 走 kill() 收 tcp。
578
+ // 兜底:对端不回(或迟迟排不空)时别把 socket 永久挂着。
579
+ setTimeout(kill, WS_CLOSE_FLUSH_TIMEOUT_MS);
580
+ };
581
+ // ── 平台 → 本地 ──
582
+ // TCP 侧写不动时暂停 WebSocket 读取,drain 后恢复。
583
+ // ⚠️ `winner.pause()` 在 Bun 下是 no-op(见函数注释),所以**这个方向在编译版里仍然没有
584
+ // 闸门**:平台灌得比本地 dashboard 收得快时,帧会堆在进程里。下面反向那条 ping 闸门只管
585
+ // 「本地 → 平台」,**不解决这一侧**,别把它读成这一侧的兜底。保留 pause/resume 是因为它
586
+ // 在 Node(源码/npm 形态)下真实有效且在 Bun 下无害。编译态这一侧待 follow-up。
587
+ winner.on('message', (data) => {
588
+ const buf = toBuffer(data);
589
+ if (!buf.length)
590
+ return;
591
+ if (!tcp.write(buf)) {
592
+ try {
593
+ winner.pause();
594
+ }
595
+ catch { /* ignore */ }
596
+ }
597
+ });
598
+ tcp.on('drain', () => { try {
599
+ winner.resume();
600
+ }
601
+ catch { /* ignore */ } });
602
+ // ── 本地 → 平台 ──
603
+ // 水位变量见函数开头(unacked/probing)。不用 bufferedAmount:Bun 下恒为 0。
604
+ const onPong = () => {
605
+ unacked = 0; // 对端读到了我们此前写的字节
606
+ if (killed)
607
+ return;
608
+ tcp.resume();
609
+ };
610
+ winner.on('pong', onPong);
611
+ const probeUntilDrained = () => {
612
+ if (killed)
613
+ return;
614
+ if (unacked <= WS_BACKPRESSURE_BYTES) {
615
+ probing = false;
616
+ tcp.resume();
617
+ return;
618
+ }
619
+ try {
620
+ winner.ping();
621
+ }
622
+ catch { /* 连接已废,kill 会收尾 */ }
623
+ setTimeout(probeUntilDrained, WS_BACKPRESSURE_PROBE_MS);
624
+ };
625
+ tcp.on('data', (chunk) => {
626
+ if (winner.readyState !== winner.OPEN)
627
+ return;
628
+ // binary:true 是显式声明,不是必需的保险:实测 ws 对 Buffer 入参本就发二进制帧
629
+ // (不加也是 isBinary=true、字节逐字不变)。写出来是为了让「这是裸字节桥、
630
+ // 不许按文本处理」这件事在代码里可见,避免日后有人换成 string 载荷。
631
+ winner.send(chunk, { binary: true });
632
+ unacked += chunk.length;
633
+ if (unacked > WS_BACKPRESSURE_BYTES && !probing) {
634
+ probing = true;
635
+ tcp.pause(); // 停读本地,直到 pong 证明平台已消费
636
+ setTimeout(probeUntilDrained, WS_BACKPRESSURE_PROBE_MS);
637
+ }
638
+ });
639
+ winner.on('close', kill);
640
+ winner.on('error', kill);
641
+ // ⚠️ 不要在 tcp 'close' 上直接 kill:'end'(对端 FIN)之后紧跟就是 'close',
642
+ // 那会立刻 terminate 掉正在刷出的 WebSocket,把 finish() 的排空又变回截断。
643
+ // 本地 socket 关掉后由 finish()/winner 的 close 事件负责收尾。
644
+ tcp.on('close', () => { if (!ending)
645
+ kill(); });
646
+ tcp.on('error', kill);
647
+ // 本地 dashboard 读完即关:半关会让隧道另一头一直等,所以收尾。走 finish() 而非 kill(),
648
+ // 否则 Bun 内部队列里未发出的尾部会被丢掉(见 finish() 上的实测数据)。
649
+ tcp.on('end', finish);
650
+ }
482
651
  function safeSend(sock, obj) {
483
652
  try {
484
653
  if (sock.readyState === WebSocket.OPEN)
@@ -488,6 +657,20 @@ function safeSend(sock, obj) {
488
657
  /* ignore */
489
658
  }
490
659
  }
660
+ /**
661
+ * 把 `ws` 的 message 负载归一成一个 Buffer。
662
+ *
663
+ * `RawData` 可能是 Buffer、Buffer[](分片未合并)或 ArrayBuffer,取决于 ws 的
664
+ * 配置与运行时;桥接要往 TCP 写的是连续字节,所以三种都得收敛。原先
665
+ * `createWebSocketStream()` 内部替我们做了这件事。
666
+ */
667
+ function toBuffer(data) {
668
+ if (Buffer.isBuffer(data))
669
+ return data;
670
+ if (Array.isArray(data))
671
+ return Buffer.concat(data);
672
+ return Buffer.from(data);
673
+ }
491
674
  function wsBase(platformUrl) {
492
675
  const u = new URL(platformUrl);
493
676
  u.protocol = u.protocol === 'https:' ? 'wss:' : 'ws:';