@napuketto/kernel 0.0.5 → 0.0.7

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/dist/index.d.mts CHANGED
@@ -38,6 +38,14 @@ interface PicElement {
38
38
  fileName?: string;
39
39
  sourcePath?: string;
40
40
  thumbPath?: string;
41
+ md5HexStr?: string;
42
+ fileSize?: string;
43
+ original?: boolean;
44
+ picSubType?: number;
45
+ fileUuid?: string;
46
+ fileSubId?: string;
47
+ thumbFileSize?: number;
48
+ summary?: string;
41
49
  }
42
50
  /** 语音元素(silk)。 */
43
51
  interface PttElement {
@@ -47,6 +55,20 @@ interface PttElement {
47
55
  duration?: number;
48
56
  /** 语音转文字结果(translatePtt2Text 异步写回)。 */
49
57
  text?: string;
58
+ md5HexStr?: string;
59
+ fileSize?: string;
60
+ formatType?: number;
61
+ voiceType?: number;
62
+ voiceChangeType?: number;
63
+ canConvert2Text?: boolean;
64
+ waveAmplitudes?: number[];
65
+ fileSubId?: string;
66
+ playState?: number;
67
+ autoConvertText?: number;
68
+ storeID?: number;
69
+ otherBusinessInfo?: {
70
+ aiVoiceType: number;
71
+ };
50
72
  }
51
73
  /** 表情元素。 */
52
74
  interface FaceElement {
@@ -192,6 +214,8 @@ interface RawMessage {
192
214
  peerName: string;
193
215
  sendNickName: string;
194
216
  sendMemberName?: string;
217
+ /** 发送状态(0=失败 1=发送中 2=成功 3=成功无seq)。onMsgInfoListUpdate 事件填充。 */
218
+ sendStatus?: number;
195
219
  elements: RawElement[];
196
220
  records?: RawMessage[];
197
221
  guildId?: string;
@@ -259,6 +283,20 @@ interface NodeIKernelMsgService {
259
283
  translatePtt2Text(msgId: string, peer: Peer, msgElement: unknown): Promise<GeneralCallResult>;
260
284
  /** 输入状态(set_input_status;eventType=1 输入中,0 停止)。 */
261
285
  sendShowInputStatusReq(chatType: number, eventType: number, toUid: string): Promise<unknown>;
286
+ /**
287
+ * 富媒体文件目标路径(NapCat 式发送图片前置:md5+文件名 → QQ 内部 Ori/Thumb 路径)。
288
+ * 返回纯文件名(相对 QQ 数据根),需配合 NodeQQNTWrapperUtil.copyFile 放置文件。
289
+ */
290
+ getRichMediaFilePathForGuild(req: {
291
+ md5HexStr: string;
292
+ fileName: string;
293
+ elementType: number;
294
+ elementSubType: number;
295
+ thumbSize: number;
296
+ needCreate: boolean;
297
+ downloadType: number;
298
+ file_uuid: string;
299
+ }): string;
262
300
  /** 合并转发组装(send_group/private_forward_msg;返回 MULTI_FORWARD 元素)。 */
263
301
  buildMultiForwardMsg(req: {
264
302
  srcMsgIds: string[];
@@ -597,6 +635,10 @@ type MsgListener = {
597
635
  onRecvMsgReadReport: (reports: MsgReadReportItem[]) => void;
598
636
  /** 消息回执。 */
599
637
  onRecvMsgReceipt: (receipts: MsgReceipt[]) => void;
638
+ /** 消息列表更新(含发送状态变化:sendStatus 0=失败 1=发送中 2=成功 3=成功无seq)。
639
+ * 2026-08-11 补齐:sendMsg 发送结果以此事件为准(NapCat 同款),
640
+ * sendMsg 返回值 result 可能非 0 但实际发送成功(异步确认)。 */
641
+ onMsgInfoListUpdate: (msgs: RawMessage[]) => void;
600
642
  };
601
643
  //#endregion
602
644
  //#region src/types/message-element.d.ts
@@ -1035,6 +1077,8 @@ interface NodeIQQNTWrapperSession {
1035
1077
  getBuddyService(): unknown;
1036
1078
  getTicketService(): unknown;
1037
1079
  getRichMediaService(): unknown;
1080
+ /** 闪传服务(诊断用:调查 rich media transfer failed 时验证初始化触发点)。 */
1081
+ getFlashTransferService(): unknown;
1038
1082
  getProfileService(): unknown;
1039
1083
  getProfileLikeService(): unknown;
1040
1084
  getTipOffService(): unknown;
@@ -1291,13 +1335,99 @@ declare class GroupNotifyApi {
1291
1335
  handleGroupRequest(doubt: boolean, notify: GroupNotify, operateType: NTGroupRequestOperateTypes, reason: string): Promise<void>;
1292
1336
  }
1293
1337
  //#endregion
1338
+ //#region src/event-channel.d.ts
1339
+ /** Listener 接口形状(宽约束;精确签名由实例化时的具体接口保证)。 */
1340
+ type ListenerShape = Record<string, unknown>;
1341
+ /** 事件名:`${Service}/${method}`。 */
1342
+ type EventName<L extends ListenerShape, Name extends string> = `${Name}/${keyof L & string}`;
1343
+ /** 按事件名从 Listener 精确提取 handler 类型(条件类型 infer,泛型安全)。 */
1344
+ type EventHandler<L extends ListenerShape, Name extends string, E extends EventName<L, Name>> = Extract<{ [K in keyof L]: L[K] extends ((...args: infer A) => infer R) ? {
1345
+ name: `${Name}/${K & string}`;
1346
+ fn: (...args: A) => R;
1347
+ } : never; }[keyof L], {
1348
+ name: E;
1349
+ }>["fn"];
1350
+ /** 按事件名从 Listener 精确提取参数类型。 */
1351
+ type EventArgs<L extends ListenerShape, Name extends string, E extends EventName<L, Name>> = Extract<{ [K in keyof L]: L[K] extends ((...args: infer A) => unknown) ? {
1352
+ name: `${Name}/${K & string}`;
1353
+ args: A;
1354
+ } : never; }[keyof L], {
1355
+ name: E;
1356
+ }>["args"];
1357
+ /** 从 Listener 接口推导事件映射(文档/调试用):`{ "Msg/onRecvMsg": fn }`。 */
1358
+ type ListenerEvents<L extends ListenerShape, Name extends string> = { [K in keyof L as `${Name}/${K & string}`]: L[K]; };
1359
+ /**
1360
+ * 类型化事件通道。
1361
+ *
1362
+ * @typeParam L - Listener 接口(探测产物,如 MsgListener)
1363
+ * @typeParam Name - Service 名(事件名前缀,如 "Msg")
1364
+ */
1365
+ declare class NTEventChannel<L extends ListenerShape, Name extends string> {
1366
+ readonly serviceName: Name;
1367
+ private readonly emitter;
1368
+ private readonly errorHandlers;
1369
+ private readonly anyHandlers;
1370
+ constructor(serviceName: Name);
1371
+ /**
1372
+ * 订阅事件:返回 unsubscribe(只注销该 handler,不影响其他订阅者)。
1373
+ * 每个 Service 只注册一次原生监听,缓存维护与协议翻译都订阅这里。
1374
+ */
1375
+ on<E extends EventName<L, Name>>(event: E, handler: EventHandler<L, Name, E>): () => void;
1376
+ /**
1377
+ * 请求-响应桥:注册临时监听 → filter 命中 → resolve;超时自动清理并 reject。
1378
+ * 替代魔法字符串事件名方案。
1379
+ */
1380
+ waitFor<E extends EventName<L, Name>>(event: E, opts?: {
1381
+ filter?: (...args: EventArgs<L, Name, E>) => boolean;
1382
+ timeout?: number;
1383
+ }): Promise<EventArgs<L, Name, E>>;
1384
+ /**
1385
+ * 类型化派发:wrapper-loader 的原生回调经此推入通道。
1386
+ * 2026-08-07 修复:原生 EventEmitter.emit 中一个 listener 抛异常会中断后续
1387
+ * listener 派发(Node 语义)——改为快照数组逐个 try/catch,保证「单个订阅者
1388
+ * 异常不打断派发」(协议翻译层异常不饿死缓存维护等其他订阅者)。
1389
+ */
1390
+ /**
1391
+ * 订阅所有事件(IPC 子进程模式整通道转发用:事件名 `"${service}/${method}"`
1392
+ * 经 handler 首参透出,args 原样透传)。返回退订函数。
1393
+ */
1394
+ onAny(handler: (event: string, ...args: unknown[]) => void): () => void;
1395
+ emit<E extends EventName<L, Name>>(event: E, ...args: EventArgs<L, Name, E>): void;
1396
+ /** 通知所有错误处理器(单个异常不打断其他处理器)。 */
1397
+ private notifyError;
1398
+ /** 订阅错误通知(监听器抛出的异常 / 其他内部错误)。 */
1399
+ onError(handler: (err: unknown) => void): () => void;
1400
+ }
1401
+ //#endregion
1402
+ //#region src/bridge/msg-bridge.d.ts
1403
+ /** 消息事件通道的固定类型(事件名前缀 "Msg")。 */
1404
+ type MsgEventChannel = NTEventChannel<MsgListener, "Msg">;
1405
+ /**
1406
+ * 消息事件桥:注册原生监听 → 回调 emit 到 channel。
1407
+ * 无全局单例(ADR-015 推论)——每进程每 session 实例化一份。
1408
+ */
1409
+ declare class MsgBridge {
1410
+ private readonly service;
1411
+ private readonly channel;
1412
+ private listenerId;
1413
+ constructor(session: NodeIQQNTWrapperSession, channel: MsgEventChannel);
1414
+ /** 注册原生监听(幂等)。 */
1415
+ register(): void;
1416
+ /** 注销原生监听(幂等)。 */
1417
+ unregister(): void;
1418
+ }
1419
+ //#endregion
1294
1420
  //#region src/apis/msg.d.ts
1295
1421
  /** 消息 API:从 session 拿 msg service,包装成语义化方法。 */
1296
1422
  declare class MsgApi {
1297
1423
  private readonly service;
1424
+ /** 消息事件通道(sendMsg 后等 onMsgInfoListUpdate 确认发送结果)。 */
1425
+ private readonly channel;
1426
+ /** NodeQQNTWrapperUtil(富媒体发送 copyFile 用;session 拿不到时可为 null)。 */
1427
+ private readonly util;
1298
1428
  /** 上次生成 msgId 的时间(单调递增,2026-08-07 防同毫秒并发碰撞)。 */
1299
1429
  private lastMsgTime;
1300
- constructor(session: NodeIQQNTWrapperSession);
1430
+ constructor(session: NodeIQQNTWrapperSession, channel?: MsgEventChannel, util?: unknown);
1301
1431
  /**
1302
1432
  * 生成 msgId 时间戳(单调递增)。
1303
1433
  * generateMsgUniqueId(chatType, time) 以 time 区分消息——同毫秒并发发送
@@ -1306,12 +1436,50 @@ declare class MsgApi {
1306
1436
  */
1307
1437
  private nextMsgTime;
1308
1438
  /**
1309
- * 发送消息:canonical 元素 → NT 发送元素 → sendMsg。
1439
+ * 发送消息:canonical 元素 → NT 发送元素 → sendMsg(NapCat 式)。
1310
1440
  * 返回 NT msgId(雪花 ID)。
1441
+ *
1442
+ * 2026-08-11 修复(NapCat 式,实测):
1443
+ * - sendMsg 第一参传 '0'(固定),msgId 塞 peer.guildId —— 传 msgId 作第一参
1444
+ * 时 wrapper 返回 result=5(失败),NapCat 同款调用返回 result=0。
1445
+ * - 发送结果以 onMsgInfoListUpdate 事件确认(sendStatus===2 成功):sendMsg
1446
+ * 返回值 result 可能为 5 但事件仍成功(异步确认),反之亦然。
1447
+ * - ⚠️ 必须先注册事件监听再调 sendMsg(事件可能在 sendMsg 返回前就触发)。
1311
1448
  */
1312
1449
  sendMessage(target: Peer, elements: CanonicalElement[]): Promise<{
1313
1450
  msgId: string;
1314
1451
  }>;
1452
+ /**
1453
+ * canonical 元素 → 发送元素,富媒体(PIC/PTT)做 NapCat 式预处理。
1454
+ * 2026-08-11 修复(实测):图片发送必须 elementType=2(PIC)+ 完整 picElement
1455
+ * (md5HexStr/fileSize/fileName/sourcePath),且文件须经 getRichMediaFilePathForGuild
1456
+ * 计算目标路径 + util.copyFile 放置——缺任一环节 sendMsg 返回 rich media transfer failed。
1457
+ * 2026-08-12(语音):PTT 同理——只给 filePath 触发 wrapper 内部
1458
+ * "Cannot convert undefined or null to object"(缺字段转换失败)。
1459
+ */
1460
+ private prepareSendElements;
1461
+ /** PIC 元素 NapCat 式预处理:md5 → 目标路径 → copyFile → 完整 picElement。 */
1462
+ private prepareImageElement;
1463
+ /**
1464
+ * PTT 元素 NapCat 式预处理:md5 → 目标路径 → copyFile → 完整 pttElement。
1465
+ *
1466
+ * 2026-08-12(实测依据):只给 filePath 时 wrapper 内部抛
1467
+ * "Cannot convert undefined or null to object"(缺 md5HexStr/fileSize 等字段),
1468
+ * 且发送后进程崩溃重启(supervisor 自动拉起)。完整字段(NapCat 同款,
1469
+ * formatType/voiceType/canConvert2Text/waveAmplitudes 等)消除该错误。
1470
+ *
1471
+ * ⚠️ silk 格式:QQ 语音协议为 silk v3。传入非 silk(ogg/mp3 等)时发送器
1472
+ * 可能拒绝上传(待实测)。转换点预留:此处直接放置原文件,后续接入
1473
+ * ogg → PCM → silk 编码器(外部 ffmpeg + silk-wasm,见 docs/design.md)。
1474
+ */
1475
+ private preparePttElement;
1476
+ /**
1477
+ * 富媒体文件放置(PIC/PTT 共用):md5 + 文件名 → QQ 内部目标路径
1478
+ * (getRichMediaFilePathForGuild)→ util.copyFile 放置 → 返回相对数据根路径。
1479
+ */
1480
+ private placeMediaFile;
1481
+ /** 注册 onMsgInfoListUpdate 确认监听(返回 Promise,resolve 时发送成功)。 */
1482
+ private confirmSend;
1315
1483
  /** 撤回消息(群聊管理员 / 私聊 2 分钟内)。 */
1316
1484
  recallMessage(target: Peer, msgIds: string[]): Promise<void>;
1317
1485
  /** 拉取历史消息(msgId 为空从最新拉;count 条,时间倒序)。 */
@@ -1516,70 +1684,6 @@ declare class WebApi {
1516
1684
  private fetchHonorList;
1517
1685
  }
1518
1686
  //#endregion
1519
- //#region src/event-channel.d.ts
1520
- /** Listener 接口形状(宽约束;精确签名由实例化时的具体接口保证)。 */
1521
- type ListenerShape = Record<string, unknown>;
1522
- /** 事件名:`${Service}/${method}`。 */
1523
- type EventName<L extends ListenerShape, Name extends string> = `${Name}/${keyof L & string}`;
1524
- /** 按事件名从 Listener 精确提取 handler 类型(条件类型 infer,泛型安全)。 */
1525
- type EventHandler<L extends ListenerShape, Name extends string, E extends EventName<L, Name>> = Extract<{ [K in keyof L]: L[K] extends ((...args: infer A) => infer R) ? {
1526
- name: `${Name}/${K & string}`;
1527
- fn: (...args: A) => R;
1528
- } : never; }[keyof L], {
1529
- name: E;
1530
- }>["fn"];
1531
- /** 按事件名从 Listener 精确提取参数类型。 */
1532
- type EventArgs<L extends ListenerShape, Name extends string, E extends EventName<L, Name>> = Extract<{ [K in keyof L]: L[K] extends ((...args: infer A) => unknown) ? {
1533
- name: `${Name}/${K & string}`;
1534
- args: A;
1535
- } : never; }[keyof L], {
1536
- name: E;
1537
- }>["args"];
1538
- /** 从 Listener 接口推导事件映射(文档/调试用):`{ "Msg/onRecvMsg": fn }`。 */
1539
- type ListenerEvents<L extends ListenerShape, Name extends string> = { [K in keyof L as `${Name}/${K & string}`]: L[K]; };
1540
- /**
1541
- * 类型化事件通道。
1542
- *
1543
- * @typeParam L - Listener 接口(探测产物,如 MsgListener)
1544
- * @typeParam Name - Service 名(事件名前缀,如 "Msg")
1545
- */
1546
- declare class NTEventChannel<L extends ListenerShape, Name extends string> {
1547
- readonly serviceName: Name;
1548
- private readonly emitter;
1549
- private readonly errorHandlers;
1550
- private readonly anyHandlers;
1551
- constructor(serviceName: Name);
1552
- /**
1553
- * 订阅事件:返回 unsubscribe(只注销该 handler,不影响其他订阅者)。
1554
- * 每个 Service 只注册一次原生监听,缓存维护与协议翻译都订阅这里。
1555
- */
1556
- on<E extends EventName<L, Name>>(event: E, handler: EventHandler<L, Name, E>): () => void;
1557
- /**
1558
- * 请求-响应桥:注册临时监听 → filter 命中 → resolve;超时自动清理并 reject。
1559
- * 替代魔法字符串事件名方案。
1560
- */
1561
- waitFor<E extends EventName<L, Name>>(event: E, opts?: {
1562
- filter?: (...args: EventArgs<L, Name, E>) => boolean;
1563
- timeout?: number;
1564
- }): Promise<EventArgs<L, Name, E>>;
1565
- /**
1566
- * 类型化派发:wrapper-loader 的原生回调经此推入通道。
1567
- * 2026-08-07 修复:原生 EventEmitter.emit 中一个 listener 抛异常会中断后续
1568
- * listener 派发(Node 语义)——改为快照数组逐个 try/catch,保证「单个订阅者
1569
- * 异常不打断派发」(协议翻译层异常不饿死缓存维护等其他订阅者)。
1570
- */
1571
- /**
1572
- * 订阅所有事件(IPC 子进程模式整通道转发用:事件名 `"${service}/${method}"`
1573
- * 经 handler 首参透出,args 原样透传)。返回退订函数。
1574
- */
1575
- onAny(handler: (event: string, ...args: unknown[]) => void): () => void;
1576
- emit<E extends EventName<L, Name>>(event: E, ...args: EventArgs<L, Name, E>): void;
1577
- /** 通知所有错误处理器(单个异常不打断其他处理器)。 */
1578
- private notifyError;
1579
- /** 订阅错误通知(监听器抛出的异常 / 其他内部错误)。 */
1580
- onError(handler: (err: unknown) => void): () => void;
1581
- }
1582
- //#endregion
1583
1687
  //#region src/bridge/group-bridge.d.ts
1584
1688
  /** 群事件通道的固定类型(事件名前缀 "Group")。 */
1585
1689
  type GroupEventChannel = NTEventChannel<GroupListener, "Group">;
@@ -1598,24 +1702,6 @@ declare class GroupBridge {
1598
1702
  unregister(): void;
1599
1703
  }
1600
1704
  //#endregion
1601
- //#region src/bridge/msg-bridge.d.ts
1602
- /** 消息事件通道的固定类型(事件名前缀 "Msg")。 */
1603
- type MsgEventChannel = NTEventChannel<MsgListener, "Msg">;
1604
- /**
1605
- * 消息事件桥:注册原生监听 → 回调 emit 到 channel。
1606
- * 无全局单例(ADR-015 推论)——每进程每 session 实例化一份。
1607
- */
1608
- declare class MsgBridge {
1609
- private readonly service;
1610
- private readonly channel;
1611
- private listenerId;
1612
- constructor(session: NodeIQQNTWrapperSession, channel: MsgEventChannel);
1613
- /** 注册原生监听(幂等)。 */
1614
- register(): void;
1615
- /** 注销原生监听(幂等)。 */
1616
- unregister(): void;
1617
- }
1618
- //#endregion
1619
1705
  //#region src/cache/group-cache.d.ts
1620
1706
  /** GroupCache 构造参数。 */
1621
1707
  interface GroupCacheOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/entities.ts","../src/types/services/msg-service.ts","../src/types/services/group-service.ts","../src/types/listeners/group.ts","../src/types/listeners/msg.ts","../src/types/message-element.ts","../src/types/services/buddy-service.ts","../src/types/services/profile-like-service.ts","../src/types/services/profile-service.ts","../src/types/services/richmedia-service.ts","../src/types/services/ticket-service.ts","../src/types/wrapper.ts","../src/apis/friend.ts","../src/apis/group.ts","../src/apis/group-notify.ts","../src/apis/msg.ts","../src/apis/stranger-info.ts","../src/apis/profile.ts","../src/apis/profile-like.ts","../src/apis/richmedia.ts","../src/apis/ticket.ts","../src/apis/webapi.ts","../src/event-channel.ts","../src/bridge/group-bridge.ts","../src/bridge/msg-bridge.ts","../src/cache/group-cache.ts","../src/infra/config.ts","../src/infra/errors.ts","../src/infra/logger.ts","../src/infra/paths.ts","../src/wrapper/wrapper-loader.ts","../src/login/login-connect.ts","../src/login/lifecycle.ts","../src/login/login.ts","../src/context.ts","../src/core.ts","../src/wrapper/probe/probe.ts","../src/wrapper/qq-data-path.ts","../src/wrapper/session-resolver.ts","../src/wrapper/wrapper-adapters.ts","../src/wrapper/wrapper-config.ts","../src/wrapper/wrapper-version.ts"],"mappings":";;;;;;;;;cAQa;WACT;WACA;WACA;WACA;WACA;;KAEQ,mBAAmB,uBAAuB;;UAGrC;EACb,UAAU;EACV;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;EAEA;;;UAIa;EACb;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;cAIS;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,yBAAyB,6BAA6B;;cAGrD;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,8BAA8B,kCAAkC;;UAG3D;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACI;IACA;IACA;MAAU;MAAc;MAAe;MAAe;;IACtD;MAAW;MAAc;MAAe;MAAe;;;;;UAK9C;EACb,iBAAiB;EACjB,gBAAgB;EAChB,eAAe;EACf,sBAAsB;EACtB;IAAe;IAAiB;IAAkB;;EAClD;IAAuB;IAAiB;;;;UAI3B;EACb;EACA;EACA,cAAc;EACd,aAAa;EACb,aAAa;EACb,cAAc;EACd,eAAe;EACf,eAAe;EACf,cAAc;EACd,iBAAiB;;EAEjB;IACI;IACA;IACA;;;;UAKS;EACb;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,UAAU;EACV;GACC;;;;;UCjLY;EACb;EACA;;;cAIS;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,sBAAsB,0BAA0B;;UAG3C;EACb,aAAa;EACb;EACA,cAAc;EACd,cAAc;EACd,eAAe;EACf,aAAa;EACb,aAAa;;;UAIA;EACb,qBAAqB;EACrB,wBAAwB;EACxB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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/entities.ts","../src/types/services/msg-service.ts","../src/types/services/group-service.ts","../src/types/listeners/group.ts","../src/types/listeners/msg.ts","../src/types/message-element.ts","../src/types/services/buddy-service.ts","../src/types/services/profile-like-service.ts","../src/types/services/profile-service.ts","../src/types/services/richmedia-service.ts","../src/types/services/ticket-service.ts","../src/types/wrapper.ts","../src/apis/friend.ts","../src/apis/group.ts","../src/apis/group-notify.ts","../src/event-channel.ts","../src/bridge/msg-bridge.ts","../src/apis/msg.ts","../src/apis/stranger-info.ts","../src/apis/profile.ts","../src/apis/profile-like.ts","../src/apis/richmedia.ts","../src/apis/ticket.ts","../src/apis/webapi.ts","../src/bridge/group-bridge.ts","../src/cache/group-cache.ts","../src/infra/config.ts","../src/infra/errors.ts","../src/infra/logger.ts","../src/infra/paths.ts","../src/wrapper/wrapper-loader.ts","../src/login/login-connect.ts","../src/login/lifecycle.ts","../src/login/login.ts","../src/context.ts","../src/core.ts","../src/wrapper/probe/probe.ts","../src/wrapper/qq-data-path.ts","../src/wrapper/session-resolver.ts","../src/wrapper/wrapper-adapters.ts","../src/wrapper/wrapper-config.ts","../src/wrapper/wrapper-version.ts"],"mappings":";;;;;;;;;cAQa;WACT;WACA;WACA;WACA;WACA;;KAEQ,mBAAmB,uBAAuB;;UAGrC;EACb,UAAU;EACV;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;EAEA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IAAsB;;;;UAIT;EACb;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;cAIS;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,yBAAyB,6BAA6B;;cAGrD;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,8BAA8B,kCAAkC;;UAG3D;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACI;IACA;IACA;MAAU;MAAc;MAAe;MAAe;;IACtD;MAAW;MAAc;MAAe;MAAe;;;;;UAK9C;EACb,iBAAiB;EACjB,gBAAgB;EAChB,eAAe;EACf,sBAAsB;EACtB;IAAe;IAAiB;IAAkB;;EAClD;IAAuB;IAAiB;;;;UAI3B;EACb;EACA;EACA,cAAc;EACd,aAAa;EACb,aAAa;EACb,cAAc;EACd,eAAe;EACf,eAAe;EACf,cAAc;EACd,iBAAiB;;EAEjB;IACI;IACA;IACA;;;;UAKS;EACb;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA,UAAU;EACV,UAAU;EACV;GACC;;;;;UC1MY;EACb;EACA;;;cAIS;WACT;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAEQ,sBAAsB,0BA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"}
package/dist/index.mjs CHANGED
@@ -1,12 +1,13 @@
1
1
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
2
- import { readFile, rename, writeFile } from "node:fs/promises";
3
- import { dirname, extname, join, resolve } from "node:path";
2
+ import { readFile, rename, stat, writeFile } from "node:fs/promises";
3
+ import { basename, dirname, extname, join, resolve } from "node:path";
4
4
  import { parse, stringify } from "smol-toml";
5
5
  import process from "node:process";
6
6
  import pino from "pino";
7
7
  import pinoPretty from "pino-pretty";
8
8
  import { homedir, hostname } from "node:os";
9
9
  import { fileURLToPath } from "node:url";
10
+ import { createHash } from "node:crypto";
10
11
  import { get } from "node:https";
11
12
  import { EventEmitter } from "node:events";
12
13
  //#region src/infra/errors.ts
@@ -1178,15 +1179,47 @@ function extractMemberList(result) {
1178
1179
  *
1179
1180
  * 方法面(P2-1):发送 / 撤回 / 拉历史 / 标记已读。group/friend 等后续 apis 同构。
1180
1181
  */
1182
+ /** 发送状态(onMsgInfoListUpdate 事件 msg.sendStatus)。 */
1183
+ const SEND_STATUS = {
1184
+ FAILED: 0,
1185
+ SENDING: 1,
1186
+ SUCCESS: 2,
1187
+ SUCCESS_NO_SEQ: 3
1188
+ };
1189
+ /** 发送确认超时(毫秒)。 */
1190
+ const SEND_CONFIRM_TIMEOUT_MS = 15e3;
1191
+ /** 读文件 stat(富媒体发送预处理;文件不存在抛 INVALID_PARAM)。 */
1192
+ async function statFile(path) {
1193
+ try {
1194
+ return await stat(path);
1195
+ } catch {
1196
+ throw kernelError(`图片文件不存在: ${path}`, "INVALID_PARAM");
1197
+ }
1198
+ }
1199
+ /** 计算文件 md5(十六进制小写)。 */
1200
+ async function hashFile(path) {
1201
+ try {
1202
+ const buf = await readFile(path);
1203
+ return createHash("md5").update(buf).digest("hex");
1204
+ } catch {
1205
+ throw kernelError(`图片文件读取失败: ${path}`, "INVALID_PARAM");
1206
+ }
1207
+ }
1181
1208
  /** 消息 API:从 session 拿 msg service,包装成语义化方法。 */
1182
1209
  var MsgApi = class {
1183
1210
  service;
1211
+ /** 消息事件通道(sendMsg 后等 onMsgInfoListUpdate 确认发送结果)。 */
1212
+ channel;
1213
+ /** NodeQQNTWrapperUtil(富媒体发送 copyFile 用;session 拿不到时可为 null)。 */
1214
+ util;
1184
1215
  /** 上次生成 msgId 的时间(单调递增,2026-08-07 防同毫秒并发碰撞)。 */
1185
1216
  lastMsgTime = 0;
1186
- constructor(session) {
1217
+ constructor(session, channel, util) {
1187
1218
  const service = session.getMsgService();
1188
1219
  if (service === null || service === void 0) throw kernelError("getMsgService() 返回空(session 未 init)", "INVALID_STATE");
1189
1220
  this.service = service;
1221
+ this.channel = channel ?? null;
1222
+ this.util = util !== null && util !== void 0 ? util : null;
1190
1223
  }
1191
1224
  /**
1192
1225
  * 生成 msgId 时间戳(单调递增)。
@@ -1201,15 +1234,181 @@ var MsgApi = class {
1201
1234
  return String(this.lastMsgTime);
1202
1235
  }
1203
1236
  /**
1204
- * 发送消息:canonical 元素 → NT 发送元素 → sendMsg。
1237
+ * 发送消息:canonical 元素 → NT 发送元素 → sendMsg(NapCat 式)。
1205
1238
  * 返回 NT msgId(雪花 ID)。
1239
+ *
1240
+ * 2026-08-11 修复(NapCat 式,实测):
1241
+ * - sendMsg 第一参传 '0'(固定),msgId 塞 peer.guildId —— 传 msgId 作第一参
1242
+ * 时 wrapper 返回 result=5(失败),NapCat 同款调用返回 result=0。
1243
+ * - 发送结果以 onMsgInfoListUpdate 事件确认(sendStatus===2 成功):sendMsg
1244
+ * 返回值 result 可能为 5 但事件仍成功(异步确认),反之亦然。
1245
+ * - ⚠️ 必须先注册事件监听再调 sendMsg(事件可能在 sendMsg 返回前就触发)。
1206
1246
  */
1207
1247
  async sendMessage(target, elements) {
1208
- const sendElements = toSendElements(elements);
1248
+ const sendElements = await this.prepareSendElements(elements);
1209
1249
  const msgId = this.service.generateMsgUniqueId(target.chatType, this.nextMsgTime());
1210
- unwrapResult("sendMsg", await this.service.sendMsg(msgId, target, sendElements, /* @__PURE__ */ new Map()));
1250
+ const sendPeer = {
1251
+ ...target,
1252
+ guildId: msgId
1253
+ };
1254
+ if (this.channel === null) {
1255
+ unwrapResult("sendMsg", await this.service.sendMsg("0", sendPeer, sendElements, /* @__PURE__ */ new Map()));
1256
+ return { msgId };
1257
+ }
1258
+ const confirm = this.confirmSend(msgId, target);
1259
+ await this.service.sendMsg("0", sendPeer, sendElements, /* @__PURE__ */ new Map());
1260
+ await confirm;
1211
1261
  return { msgId };
1212
1262
  }
1263
+ /**
1264
+ * canonical 元素 → 发送元素,富媒体(PIC/PTT)做 NapCat 式预处理。
1265
+ * 2026-08-11 修复(实测):图片发送必须 elementType=2(PIC)+ 完整 picElement
1266
+ * (md5HexStr/fileSize/fileName/sourcePath),且文件须经 getRichMediaFilePathForGuild
1267
+ * 计算目标路径 + util.copyFile 放置——缺任一环节 sendMsg 返回 rich media transfer failed。
1268
+ * 2026-08-12(语音):PTT 同理——只给 filePath 触发 wrapper 内部
1269
+ * "Cannot convert undefined or null to object"(缺字段转换失败)。
1270
+ */
1271
+ async prepareSendElements(elements) {
1272
+ const out = [];
1273
+ for (const el of elements) switch (el.type) {
1274
+ case "image":
1275
+ out.push(await this.prepareImageElement(el.path));
1276
+ break;
1277
+ case "voice":
1278
+ out.push(await this.preparePttElement(el.path));
1279
+ break;
1280
+ default: out.push(...toSendElements([el]));
1281
+ }
1282
+ return out;
1283
+ }
1284
+ /** PIC 元素 NapCat 式预处理:md5 → 目标路径 → copyFile → 完整 picElement。 */
1285
+ async prepareImageElement(path) {
1286
+ const file = await statFile(path);
1287
+ const md5 = await hashFile(path);
1288
+ const fileName = basename(path);
1289
+ const relPath = await this.placeMediaFile(path, ElementType.PIC, md5, fileName);
1290
+ return {
1291
+ elementType: ElementType.PIC,
1292
+ elementId: "",
1293
+ picElement: {
1294
+ md5HexStr: md5,
1295
+ fileSize: String(file.size),
1296
+ picWidth: 0,
1297
+ picHeight: 0,
1298
+ fileName,
1299
+ sourcePath: relPath,
1300
+ original: true,
1301
+ picType: 1e3,
1302
+ picSubType: 0,
1303
+ fileUuid: "",
1304
+ fileSubId: "",
1305
+ thumbFileSize: 0,
1306
+ summary: ""
1307
+ }
1308
+ };
1309
+ }
1310
+ /**
1311
+ * PTT 元素 NapCat 式预处理:md5 → 目标路径 → copyFile → 完整 pttElement。
1312
+ *
1313
+ * 2026-08-12(实测依据):只给 filePath 时 wrapper 内部抛
1314
+ * "Cannot convert undefined or null to object"(缺 md5HexStr/fileSize 等字段),
1315
+ * 且发送后进程崩溃重启(supervisor 自动拉起)。完整字段(NapCat 同款,
1316
+ * formatType/voiceType/canConvert2Text/waveAmplitudes 等)消除该错误。
1317
+ *
1318
+ * ⚠️ silk 格式:QQ 语音协议为 silk v3。传入非 silk(ogg/mp3 等)时发送器
1319
+ * 可能拒绝上传(待实测)。转换点预留:此处直接放置原文件,后续接入
1320
+ * ogg → PCM → silk 编码器(外部 ffmpeg + silk-wasm,见 docs/design.md)。
1321
+ */
1322
+ async preparePttElement(path) {
1323
+ const file = await statFile(path);
1324
+ const md5 = await hashFile(path);
1325
+ const fileName = basename(path);
1326
+ const relPath = await this.placeMediaFile(path, ElementType.PTT, md5, fileName);
1327
+ const duration = Math.max(1, Math.floor(file.size / 1024 / 3));
1328
+ return {
1329
+ elementType: ElementType.PTT,
1330
+ elementId: "",
1331
+ pttElement: {
1332
+ fileName,
1333
+ filePath: relPath,
1334
+ md5HexStr: md5,
1335
+ fileSize: String(file.size),
1336
+ duration,
1337
+ formatType: 1,
1338
+ voiceType: 1,
1339
+ voiceChangeType: 0,
1340
+ canConvert2Text: true,
1341
+ waveAmplitudes: [
1342
+ 0,
1343
+ 18,
1344
+ 9,
1345
+ 23,
1346
+ 16,
1347
+ 17,
1348
+ 16,
1349
+ 15,
1350
+ 44,
1351
+ 17,
1352
+ 24,
1353
+ 20,
1354
+ 14,
1355
+ 15,
1356
+ 17
1357
+ ],
1358
+ fileSubId: "",
1359
+ playState: 1,
1360
+ autoConvertText: 0,
1361
+ storeID: 0,
1362
+ otherBusinessInfo: { aiVoiceType: 0 }
1363
+ }
1364
+ };
1365
+ }
1366
+ /**
1367
+ * 富媒体文件放置(PIC/PTT 共用):md5 + 文件名 → QQ 内部目标路径
1368
+ * (getRichMediaFilePathForGuild)→ util.copyFile 放置 → 返回相对数据根路径。
1369
+ */
1370
+ async placeMediaFile(path, elementType, md5, fileName) {
1371
+ const service = this.service;
1372
+ const util = this.util;
1373
+ const relPath = service.getRichMediaFilePathForGuild({
1374
+ md5HexStr: md5,
1375
+ fileName,
1376
+ elementType,
1377
+ elementSubType: 0,
1378
+ thumbSize: 0,
1379
+ needCreate: true,
1380
+ downloadType: 1,
1381
+ file_uuid: ""
1382
+ });
1383
+ if (util !== null) {
1384
+ const instance = typeof util.get === "function" ? util.get() : util;
1385
+ const copy = instance["copyFile"];
1386
+ if (typeof copy === "function") await copy.call(instance, path, relPath);
1387
+ }
1388
+ return relPath;
1389
+ }
1390
+ /** 注册 onMsgInfoListUpdate 确认监听(返回 Promise,resolve 时发送成功)。 */
1391
+ confirmSend(msgId, target) {
1392
+ const channel = this.channel;
1393
+ if (channel === null) return Promise.resolve();
1394
+ return new Promise((resolve, reject) => {
1395
+ const off = channel.on("Msg/onMsgInfoListUpdate", (list) => {
1396
+ const mine = list.find((m) => m.guildId === msgId);
1397
+ if (mine === void 0) return;
1398
+ if (mine.sendStatus === SEND_STATUS.SUCCESS || mine.sendStatus === SEND_STATUS.SUCCESS_NO_SEQ) {
1399
+ off();
1400
+ resolve();
1401
+ } else if (mine.sendStatus === SEND_STATUS.FAILED) {
1402
+ off();
1403
+ reject(kernelError(`sendMsg 失败: sendStatus=${mine.sendStatus}`, "SEND_FAILED"));
1404
+ }
1405
+ });
1406
+ setTimeout(() => {
1407
+ off();
1408
+ reject(kernelError(`sendMsg 等待确认超时(msgId=${msgId}, target=${JSON.stringify(target)})`, "SEND_FAILED"));
1409
+ }, SEND_CONFIRM_TIMEOUT_MS);
1410
+ });
1411
+ }
1213
1412
  /** 撤回消息(群聊管理员 / 私聊 2 分钟内)。 */
1214
1413
  async recallMessage(target, msgIds) {
1215
1414
  if (msgIds.length === 0) throw kernelError("recallMessage 需要至少一个 msgId", "INVALID_PARAM");
@@ -1848,7 +2047,8 @@ var MsgBridge = class {
1848
2047
  const listener = {
1849
2048
  onRecvMsg: (msgs) => this.channel.emit("Msg/onRecvMsg", msgs),
1850
2049
  onRecvMsgReadReport: (reports) => this.channel.emit("Msg/onRecvMsgReadReport", reports),
1851
- onRecvMsgReceipt: (receipts) => this.channel.emit("Msg/onRecvMsgReceipt", receipts)
2050
+ onRecvMsgReceipt: (receipts) => this.channel.emit("Msg/onRecvMsgReceipt", receipts),
2051
+ onMsgInfoListUpdate: (msgs) => this.channel.emit("Msg/onMsgInfoListUpdate", msgs)
1852
2052
  };
1853
2053
  this.listenerId = this.service.addKernelMsgListener(listener);
1854
2054
  }