@oatelauser/crosschat 1.5.3 → 1.5.5

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.
@@ -11,6 +11,7 @@ import { WebSocket, WebSocketServer } from 'ws';
11
11
  import { ERR, MAX_PAYLOAD_BYTES, PROTOCOL_VERSION, encodeFrame, parseFrame, } from './protocol.js';
12
12
  import { readRegistry, sanitizeName, writeRegistry } from './registry.js';
13
13
  import { FILE_MAX_BYTES } from './file-channel.js';
14
+ import { normalizeMid } from '../platform/machine-id.js';
14
15
  /**
15
16
  * 默认端口 7260。IANA service-names-port-numbers 核对(2026-10-10 实查):
16
17
  * 7260 未分配;顺延候选 7261/7262 亦未分配(留作将来冲突时顺延)。
@@ -34,6 +35,8 @@ export class Broker {
34
35
  d;
35
36
  wss;
36
37
  port;
38
+ /** E0 星名(start 时定格;status-broker.json 化妆用)。 */
39
+ starName;
37
40
  startedAt;
38
41
  stopped = false;
39
42
  sessions = new Set();
@@ -56,6 +59,7 @@ export class Broker {
56
59
  /** 监听并返回实际端口(deps.port=0 时为随机端口)。 */
57
60
  async start() {
58
61
  const registry = readRegistry(this.d.registryFile);
62
+ this.starName = registry.name;
59
63
  const wantPort = this.d.port ?? registry.port ?? DEFAULT_PORT;
60
64
  const wss = new WebSocketServer({ host: '0.0.0.0', port: wantPort, maxPayload: MAX_PAYLOAD_BYTES });
61
65
  try {
@@ -122,14 +126,15 @@ export class Broker {
122
126
  ws.on('message', (data) => {
123
127
  void this.onMessage(session, data.toString());
124
128
  });
125
- // B0:注册表带 starId 则随 info 下发(缺省不发——additive,旧节点无感)
126
- const starId = readRegistry(this.d.registryFile).starId;
129
+ // B0:注册表带 starId / E0:带星名 则随 info 下发(缺省不发——additive,旧节点无感)
130
+ const { starId, name } = readRegistry(this.d.registryFile);
127
131
  this.send(ws, {
128
132
  op: 'info',
129
133
  proto: PROTOCOL_VERSION,
130
134
  server: `crosschat/${this.d.version}`,
131
135
  caps: [],
132
136
  ...(starId === undefined ? {} : { starId }),
137
+ ...(name === undefined ? {} : { name }),
133
138
  });
134
139
  session.connectTimer = setTimeout(() => {
135
140
  this.log('connect-timeout 关闭未握手连接');
@@ -145,10 +150,14 @@ export class Broker {
145
150
  this.sessions.delete(session);
146
151
  if (session.connectTimer !== undefined)
147
152
  clearTimeout(session.connectTimer);
148
- if (session.machineId !== undefined && this.online.get(session.machineId) === session) {
149
- this.online.delete(session.machineId);
150
- this.log(`node-down ${session.machineName ?? ''}(${session.machineId.slice(0, 8)})`);
151
- this.writeStatus('running');
153
+ // F0:online 键=归一 mid(onConnect 写入侧同款),下线按同键回收
154
+ if (session.machineId !== undefined) {
155
+ const midNorm = normalizeMid(session.machineId);
156
+ if (this.online.get(midNorm) === session) {
157
+ this.online.delete(midNorm);
158
+ this.log(`node-down ${session.machineName ?? ''}(${session.machineId.slice(0, 8)})`);
159
+ this.writeStatus('running');
160
+ }
152
161
  }
153
162
  for (const [id, entry] of this.pending) {
154
163
  if (entry.targetWs === session.ws) {
@@ -209,6 +218,19 @@ export class Broker {
209
218
  this.send(session.ws, this.buildRoster());
210
219
  return;
211
220
  }
221
+ if (frame.op === 'status-query') {
222
+ await this.routeStatusQuery(session, frame);
223
+ return;
224
+ }
225
+ if (frame.op === 'status-result') {
226
+ const entry = this.pending.get(frame.id);
227
+ if (entry !== undefined && entry.targetWs === session.ws) {
228
+ clearTimeout(entry.timer);
229
+ this.pending.delete(frame.id);
230
+ entry.resolve({ kind: 'status', frame });
231
+ }
232
+ return;
233
+ }
212
234
  // 其余帧型(info/receipt/deliver)服务端无行为
213
235
  }
214
236
  async onConnect(session, frame) {
@@ -235,15 +257,18 @@ export class Broker {
235
257
  await this.authFail(session, 'node 角色必须携带 machineId');
236
258
  return;
237
259
  }
260
+ // F0:绑定比对双侧归一(带杠旧条目 vs 纯 hex 新帧同值放行,防升级窗口断连);
261
+ // 注册表存储仍写帧原值,mid8 碰撞检测取归一形态(跨形态同机不漏报)。
262
+ const midNorm = normalizeMid(mid);
238
263
  if (entry.machineId === undefined || entry.machineId === '') {
239
264
  entry.machineId = mid;
240
265
  // B2.1:注册时 mid 前 8 位碰撞检测——前缀寻址在此长度歧义,记日志警告
241
- const clash = registry.nodes.find((n) => n !== entry && n.machineId !== undefined && n.machineId.slice(0, 8) === mid.slice(0, 8));
266
+ const clash = registry.nodes.find((n) => n !== entry && n.machineId !== undefined && normalizeMid(n.machineId).slice(0, 8) === midNorm.slice(0, 8));
242
267
  if (clash !== undefined) {
243
- this.log(`warn mid8 碰撞:${mid.slice(0, 8)} 同时登记于 ${clash.label} 与 ${entry.label}——前缀寻址需 ≥9 位消歧`);
268
+ this.log(`warn mid8 碰撞:${midNorm.slice(0, 8)} 同时登记于 ${clash.label} 与 ${entry.label}——前缀寻址需 ≥9 位消歧`);
244
269
  }
245
270
  }
246
- else if (entry.machineId !== mid) {
271
+ else if (normalizeMid(entry.machineId) !== midNorm) {
247
272
  await this.authFail(session, 'machineId 与该钥匙登记的不一致');
248
273
  return;
249
274
  }
@@ -255,7 +280,8 @@ export class Broker {
255
280
  writeRegistry(this.d.registryFile, registry);
256
281
  session.machineId = mid;
257
282
  session.machineName = entry.machineName;
258
- const old = this.online.get(mid);
283
+ // F0:online 键取归一 mid——两形态互指的同机仍是同一台(顶换语义不变)
284
+ const old = this.online.get(midNorm);
259
285
  if (old !== undefined && old !== session) {
260
286
  this.log(`replace ${entry.machineName}(${mid.slice(0, 8)}) 顶掉旧连接`);
261
287
  try {
@@ -265,7 +291,7 @@ export class Broker {
265
291
  // 竞态关闭忽略
266
292
  }
267
293
  }
268
- this.online.set(mid, session);
294
+ this.online.set(midNorm, session);
269
295
  this.log(`node-up ${entry.machineName}(${mid.slice(0, 8)})`);
270
296
  }
271
297
  // B2:sender 角色也带出注册表里的 machineName(send 路由的 fromMachine 展示)
@@ -341,6 +367,8 @@ export class Broker {
341
367
  });
342
368
  if (outcome.kind === 'error')
343
369
  return fail(outcome.code, outcome.message);
370
+ if (outcome.kind === 'status')
371
+ return fail('INTERNAL', 'send 路由收到 status 回程(id 串扰)'); // 防御:send/status 的 id 各自随机,不应互串
344
372
  const result = outcome.frame;
345
373
  this.send(sender.ws, {
346
374
  op: 'receipt',
@@ -352,6 +380,43 @@ export class Broker {
352
380
  });
353
381
  this.log(`route ${from}→${target} ${result.status}`);
354
382
  }
383
+ /**
384
+ * E1 远程会话枚举(票012):resolveTarget 同款路由——目标是节点则转发
385
+ * status-query 并复用 send/result 的 pending 机制等 status-result 回程
386
+ * (超时/断线同款回 error);目标是本机则直接扫描应答。
387
+ */
388
+ async routeStatusQuery(sender, frame) {
389
+ const target = frame.targetMachine;
390
+ const from = sender.machineName ?? 'unknown';
391
+ const fail = (code, message) => {
392
+ this.send(sender.ws, { op: 'error', code, message, id: frame.id });
393
+ this.log(`status-route ${from}→${target} ${code}`);
394
+ };
395
+ const resolved = this.resolveTarget(target);
396
+ if (resolved.kind === 'error')
397
+ return fail(resolved.code, resolved.message);
398
+ if (resolved.kind === 'local') {
399
+ if (this.d.scanStatus === undefined) {
400
+ return fail(ERR.NOT_READY, '本机会话扫描器未接线(升级 broker 机 crosschat)');
401
+ }
402
+ const payload = await this.d.scanStatus();
403
+ this.send(sender.ws, { op: 'status-result', id: frame.id, ok: true, payload });
404
+ this.log(`status-route ${from}→${target}(local) ok`);
405
+ return;
406
+ }
407
+ this.send(resolved.ws, frame);
408
+ const outcome = await new Promise((resolve) => {
409
+ const timer = setTimeout(() => {
410
+ this.pending.delete(frame.id);
411
+ resolve({ kind: 'error', code: ERR.PEER_OFFLINE, message: `节点 ${target} 未在 ${this.d.resultTimeoutMs}ms 内回应 status-result` });
412
+ }, this.d.resultTimeoutMs);
413
+ this.pending.set(frame.id, { targetWs: resolved.ws, timer, resolve });
414
+ });
415
+ if (outcome.kind === 'error')
416
+ return fail(outcome.code, outcome.message);
417
+ this.send(sender.ws, outcome.frame);
418
+ this.log(`status-route ${from}→${target} ok`);
419
+ }
355
420
  /** B2:file-begin 尺寸预拒 + 按 targetMachine 路由(本机则 fileInbox 落盘)。 */
356
421
  async routeFileBegin(sender, frame) {
357
422
  const fail = (code, message) => {
@@ -409,18 +474,20 @@ export class Broker {
409
474
  this.log(`file-result ${frame.id} ${frame.ok ? 'ok' : `失败: ${frame.error ?? '?'}`}`);
410
475
  }
411
476
  }
412
- /** B2.1:roster 应答——注册表全部已激活机器(mid 去重)+ 在线态;broker 自身恒在线。 */
477
+ /** B2.1:roster 应答——注册表全部已激活机器(mid 去重)+ 在线态;broker 自身恒在线。
478
+ * F0:mid8 与去重键取归一形态(带杠条目与纯 hex 条目同机合一)。 */
413
479
  buildRoster() {
414
480
  const registry = readRegistry(this.d.registryFile);
415
- const ownMid = this.d.machineId();
481
+ const ownNorm = normalizeMid(this.d.machineId() ?? '');
416
482
  const machines = new Map();
417
483
  for (const node of registry.nodes) {
418
- if (node.machineId === undefined || node.machineId === '')
484
+ const nm = normalizeMid(node.machineId ?? '');
485
+ if (nm === '')
419
486
  continue;
420
- machines.set(node.machineId, {
487
+ machines.set(nm, {
421
488
  ...(node.machineName === undefined ? {} : { name: node.machineName }),
422
- mid8: node.machineId.slice(0, 8),
423
- online: node.machineId === ownMid || this.online.has(node.machineId),
489
+ mid8: nm.slice(0, 8),
490
+ online: (ownNorm !== '' && nm === ownNorm) || this.online.has(nm),
424
491
  });
425
492
  }
426
493
  return { op: 'roster-result', machines: [...machines.values()] };
@@ -429,24 +496,31 @@ export class Broker {
429
496
  * send/file 共用的目标解析(B2.1 双轨):hex spec = machine-id 前缀(git
430
497
  * 短哈希式最短无歧义解析,寻址权威);非 hex = name/label(人读显示用)。
431
498
  * local=broker 本机(按 machineId 判定,不再比对 hostname 字符串)。
499
+ * F0:spec 与注册表条目 mid 均在读取侧归一后比对——带杠 UUID(Windows
500
+ * MachineGuid)与纯 hex 两形态互投同轨;存储与帧携带值保持历史形态。
432
501
  */
433
502
  resolveTarget(spec) {
434
503
  const registry = readRegistry(this.d.registryFile);
435
- const ownMid = this.d.machineId();
504
+ const ownNorm = normalizeMid(this.d.machineId() ?? '');
436
505
  const pick = (resolved) => {
437
- if (ownMid !== undefined && resolved.machineId === ownMid)
506
+ const midNorm = normalizeMid(resolved.machineId ?? '');
507
+ if (ownNorm !== '' && midNorm === ownNorm)
438
508
  return { kind: 'local' };
439
- if (resolved.machineId === undefined || !this.online.has(resolved.machineId)) {
509
+ const target = midNorm === '' ? undefined : this.online.get(midNorm);
510
+ if (target === undefined) {
440
511
  return { kind: 'error', code: ERR.PEER_OFFLINE, message: `机器 ${spec} 已注册但当前不在线` };
441
512
  }
442
- return { kind: 'node', ws: this.online.get(resolved.machineId).ws };
513
+ return { kind: 'node', ws: target.ws };
443
514
  };
444
- // 轨一:hex spec = mid 前缀(最短无歧义;多命中教加长)
445
- if (/^[0-9a-fA-F]+$/.test(spec)) {
446
- const lower = spec.toLowerCase();
447
- const hits = registry.nodes.filter((node) => node.machineId !== undefined && node.machineId.toLowerCase().startsWith(lower));
515
+ // 轨一:hex spec(F0:含带杠 UUID 形态)= mid 前缀(最短无歧义;多命中教加长)
516
+ const specNorm = normalizeMid(spec);
517
+ if (specNorm !== '' && /^[0-9a-fA-F-]+$/.test(spec)) {
518
+ const hits = registry.nodes.filter((node) => {
519
+ const nm = normalizeMid(node.machineId ?? '');
520
+ return nm !== '' && nm.startsWith(specNorm); // 归一后为空的条目跳过(空串 startsWith 假命中守卫)
521
+ });
448
522
  if (hits.length === 0) {
449
- return { kind: 'error', code: ERR.UNKNOWN_MACHINE, message: `注册表没有 machine-id 前缀 ${spec} 的机器(crosschat serve --list 可查 mid8)` };
523
+ return { kind: 'error', code: ERR.UNKNOWN_MACHINE, message: this.unknownMachine(spec, `注册表没有 machine-id 前缀 ${spec} 的机器(crosschat serve --list 可查 mid8)`) };
450
524
  }
451
525
  if (hits.length > 1) {
452
526
  const ids = hits.map((node) => node.machineId?.slice(0, 12)).join(', ');
@@ -457,7 +531,7 @@ export class Broker {
457
531
  // 轨二:name/label(人读;冲突列 mid 教消歧)
458
532
  const candidates = registry.nodes.filter((node) => node.machineName === spec || node.label === spec);
459
533
  if (candidates.length === 0) {
460
- return { kind: 'error', code: ERR.UNKNOWN_MACHINE, message: `注册表没有机器名 ${spec}(crosschat serve --list 可查名字与 mid8)` };
534
+ return { kind: 'error', code: ERR.UNKNOWN_MACHINE, message: this.unknownMachine(spec, `注册表没有机器名 ${spec}(crosschat serve --list 可查名字与 mid8)`) };
461
535
  }
462
536
  if (candidates.length > 1) {
463
537
  const ids = candidates.map((node) => node.machineId?.slice(0, 12) ?? `${node.label}(未激活)`).join(', ');
@@ -465,6 +539,28 @@ export class Broker {
465
539
  }
466
540
  return pick(candidates[0]);
467
541
  }
542
+ /**
543
+ * F0:UNKNOWN_MACHINE did-you-mean——自动列注册表候选(label/name(mid8),
544
+ * ≤10 条封顶);归一 spec 恰为某条目 mid 前缀时明示该机器(名字轨落进来的
545
+ * mid 形态教学)。归一后为空的条目不参与匹配。
546
+ */
547
+ unknownMachine(spec, reason) {
548
+ const registry = readRegistry(this.d.registryFile);
549
+ const specNorm = normalizeMid(spec);
550
+ const lines = [];
551
+ let suggest = '';
552
+ for (const node of registry.nodes) {
553
+ const nm = normalizeMid(node.machineId ?? '');
554
+ if (nm === '')
555
+ continue;
556
+ const shown = `${node.label}${node.machineName === undefined ? '' : `/${node.machineName}`}(${nm.slice(0, 8)})`;
557
+ if (lines.length < 10)
558
+ lines.push(shown);
559
+ if (suggest === '' && specNorm !== '' && nm.startsWith(specNorm))
560
+ suggest = shown;
561
+ }
562
+ return `${reason}${suggest === '' ? '' : `;${spec} 是 ${suggest} 的 machine-id 前缀,可用 mid 前缀寻址`}${lines.length === 0 ? '' : `;已注册:${lines.join('、')}`}`;
563
+ }
468
564
  heartbeat() {
469
565
  const now = this.d.now();
470
566
  for (const session of this.sessions) {
@@ -483,6 +579,7 @@ export class Broker {
483
579
  writeFileSync(this.d.statusFile, `${JSON.stringify({
484
580
  state,
485
581
  port: this.port,
582
+ ...(this.starName === undefined ? {} : { name: this.starName }),
486
583
  startedAt: this.startedAt !== undefined ? new Date(this.startedAt).toISOString() : undefined,
487
584
  lastUpdated: new Date(this.d.now()).toISOString(),
488
585
  onlineNodes,
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/serve/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/serve/broker.ts"],"names":[],"mappings":"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"}