@napuketto/adapter 0.8.4 → 0.9.0

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.
@@ -0,0 +1,240 @@
1
+ import { ConfigBase, ConfigFormat, KernelErrorCode } from "@napuketto/kernel";
2
+ import { ZodType } from "zod";
3
+ import { EventBroadcaster } from "@napuketto/network";
4
+ //#region src/core/base-action.d.ts
5
+ /** 动作执行结果(含 retcode,协议错误码由协议层映射表提供)。 */
6
+ interface ActionResult<T> {
7
+ retcode: number;
8
+ status: string;
9
+ data: T | null;
10
+ message: string;
11
+ echo?: unknown;
12
+ }
13
+ /** 协议错误码映射表:KernelErrorCode → 协议错误码(各协议各自实现,ADR-017)。 */
14
+ type ErrorCodeMap = Record<KernelErrorCode, number>;
15
+ /** 动作基类:校验失败 retcode=400(HTTP)/1400(WS)。 */
16
+ declare abstract class BaseAction<TPayload, TReturn> {
17
+ abstract readonly name: string;
18
+ abstract readonly schema: ZodType<TPayload>;
19
+ protected abstract readonly errorCodeMap: ErrorCodeMap;
20
+ /** 校验并执行(HTTP 入口)。 */
21
+ handle(payload: unknown): Promise<ActionResult<TReturn>>;
22
+ /** 校验并执行(WS 入口,echo 透传)。 */
23
+ websocketHandle(payload: unknown, echo?: unknown): Promise<ActionResult<TReturn>>;
24
+ private run;
25
+ protected abstract _handle(payload: TPayload): Promise<TReturn>;
26
+ private mapError;
27
+ private fail;
28
+ }
29
+ //#endregion
30
+ //#region src/core/action-registry.d.ts
31
+ declare class ActionRegistry<TAction extends {
32
+ name: string;
33
+ } = BaseAction<unknown, unknown>> {
34
+ private readonly actions;
35
+ register(action: TAction): void;
36
+ get(name: string): TAction | undefined;
37
+ has(name: string): boolean;
38
+ get names(): string[];
39
+ }
40
+ //#endregion
41
+ //#region src/core/adapter-registry.d.ts
42
+ /**
43
+ * 适配器注册表:cli 按 enabledProtocols 装配用。
44
+ */
45
+ /** 协议适配器基类类型(避免 core 与具体协议循环依赖的轻量接口)。 */
46
+ interface ProtocolAdapterLike {
47
+ readonly protocol: string;
48
+ start: () => Promise<void>;
49
+ stop: () => Promise<void>;
50
+ }
51
+ declare class AdapterRegistry {
52
+ private readonly adapters;
53
+ register(adapter: ProtocolAdapterLike): void;
54
+ get(protocol: string): ProtocolAdapterLike | undefined;
55
+ startAll(): Promise<void>;
56
+ stopAll(): Promise<void>;
57
+ }
58
+ //#endregion
59
+ //#region src/core/config.d.ts
60
+ /** 协议配置基类:zod schema + 文本读写(JSON/TOML,文件路径由装配层传入)。 */
61
+ declare class ProtocolConfig<T> extends ConfigBase<T> {
62
+ constructor(opts: {
63
+ path: string;
64
+ schema: ZodType<T>;
65
+ defaults: T;
66
+ /** 内存初值(全局 TOML 分段装配:seed 存在时 load() 直接用它)。 */
67
+ seed?: T;
68
+ format?: ConfigFormat;
69
+ });
70
+ }
71
+ //#endregion
72
+ //#region src/core/base-protocol-adapter.d.ts
73
+ /** 适配器生命周期钩子:由协议层实现(配置校验、初始化、资源清理)。 */
74
+ interface ProtocolHooks {
75
+ /** 配置校验通过后初始化(如建立 kernel 事件订阅)。 */
76
+ onStart: (config: unknown) => Promise<void>;
77
+ /** 停止时清理资源(退订、关闭传输等)。 */
78
+ onStop: () => Promise<void>;
79
+ /** 配置热更新。 */
80
+ onReload: (config: unknown) => Promise<void>;
81
+ }
82
+ /**
83
+ * 协议适配器骨架。
84
+ * @typeParam TConfig - 协议配置类型
85
+ */
86
+ declare abstract class BaseProtocolAdapter<TConfig> {
87
+ abstract readonly protocol: string;
88
+ protected readonly config: ProtocolConfig<TConfig>;
89
+ protected readonly hooks: ProtocolHooks;
90
+ private readonly broadcaster;
91
+ private started;
92
+ constructor(opts: {
93
+ config: ProtocolConfig<TConfig>;
94
+ hooks: ProtocolHooks;
95
+ broadcaster?: EventBroadcaster;
96
+ });
97
+ /** 启动:加载配置 → 校验 → 协议层初始化。 */
98
+ start(): Promise<void>;
99
+ /** 停止:协议层清理资源。 */
100
+ stop(): Promise<void>;
101
+ /** 配置热更新:重新加载 → 校验 → 协议层处理。 */
102
+ reload(): Promise<void>;
103
+ /** 广播协议事件给所有 network 适配器。 */
104
+ protected broadcastEvent<T>(event: T): void;
105
+ /** 获取广播器(传输装配等内部使用;未传入返回 undefined)。 */
106
+ protected getBroadcaster(): EventBroadcaster | undefined;
107
+ }
108
+ //#endregion
109
+ //#region src/core/media.d.ts
110
+ /**
111
+ * 语音转码:非 silk 输入(任意音频格式,经 @napuketto/media 归一化)转 silk。
112
+ * 已是 silk(#!SILK_V3 头)原样返回;转码失败原样返回(由 kernel 发送时兜底)。
113
+ */
114
+ declare function ensureSilk(path: string): Promise<string>;
115
+ //#endregion
116
+ //#region src/core/sysmsg.d.ts
117
+ /**
118
+ * sysmsg 解码与识别共享层(2026-11-01 自 onebot11/helper/sysmsg.ts 上移,
119
+ * milky.md §0.8.3/§0.8.6——OB11 与 Milky 共用同一识别机制)
120
+ *
121
+ * Msg/onRecvSysMsg 是群名片/头衔/精华/表情回应等系统事件的 sys msg 总闸,payload =
122
+ * 原始 protobuf 字节(djinni int8 数组透传,实测 `[[10,64,…]]` 形状)。本模块:
123
+ * - decodeProtoTree:手写 protobuf wire-format 解码器(varint/length-delimited,
124
+ * 零依赖,BigInt 保 64 位精度)
125
+ * - narrowSysMsgBlobs:回调参数防御性收窄(未知形状 → null,调用方打 raw 日志)
126
+ * - extractSysMsgEnvelope:按实测样本布局提取信封(逐字段可空)
127
+ * - recognizeSysMsg + SysMsgKindRule<TEvent>:(msgType, subType) → 协议事件。
128
+ * 识别表按协议各自维护(onebot11/helper/sysmsg.ts / milky/helper/sysmsg.ts),
129
+ * 表条目随录制窗口样本扩充;未识别一律走结构化校准日志,不广播。
130
+ *
131
+ * 证据:真实样本(c3 观测窗 2026-09-09 双样本 528/382)+ 批次三轮录制
132
+ * (2026-11-01,732:16 / 732:1 / 732:21 / 528:349/381/382,wire bytes 全量解码,
133
+ * milky.md §0.8.6 识别表)+ wrapper.node OnSysMsg* 处理器分类学(原生分发键 =
134
+ * msg_type/sub_type)。翻译纯函数(ADR-008)。
135
+ */
136
+ /** protobuf 字段树节点(判别联合)。 */
137
+ type SysMsgField = {
138
+ readonly no: number;
139
+ readonly kind: "varint";
140
+ /** 原始 64 位值(BigInt;安全转换走 varintToNumber)。 */
141
+ readonly value: bigint;
142
+ } | {
143
+ readonly no: number;
144
+ readonly kind: "bytes";
145
+ readonly value: Uint8Array;
146
+ /** 子树(try-parse 成功时;null = 不透明字节,empty [] = 空消息)。 */
147
+ readonly children: readonly SysMsgField[] | null;
148
+ };
149
+ /**
150
+ * 解码 protobuf wire-format 为递归字段树(不维护字段重复/顺序语义以外的信息)。
151
+ *
152
+ * - wire 0 varint / wire 2 length-delimited:支持;wire 2 递归 try-parse,
153
+ * 子解析失败按不透明字节挂树(ASCII 串偶发误判嵌套无实害——树仅用于观测)。
154
+ * - wire 1/5(fixed64/32):跳过(QQ NT blob 未观测到,防御性兼容)。
155
+ * - wire 3/4(group)、截断、field 0、超限:判失败返回 null。
156
+ */
157
+ declare function decodeProtoTree(data: Uint8Array, depth?: number): readonly SysMsgField[] | null;
158
+ /** 取字段号首个命中的节点(规则实现用,路径导航原语)。 */
159
+ declare function firstField(tree: readonly SysMsgField[] | null, no: number): SysMsgField | undefined;
160
+ /** bytes 节点的子树(非 bytes/不透明 → null)。 */
161
+ declare function getChildren(field: SysMsgField | undefined): readonly SysMsgField[] | null;
162
+ /** varint → number(超安全整数返回 null,调用方按缺字段处理)。 */
163
+ declare function varintToNumber(value: bigint): number | null;
164
+ /** UTF-8 严格解码 + 可打印检查(含控制字符判不可解码,返回 null)。 */
165
+ declare function decodeText(bytes: Uint8Array): string | null;
166
+ /** 递归收集树内全部可打印字符串(校准观测用;先序遍历,空字节段跳过)。 */
167
+ declare function collectStrings(tree: readonly SysMsgField[]): string[];
168
+ /** 按字段号路径下钻 bytes 子树(每段取首个命中;任一段不成立 → null)。 */
169
+ declare function nodeAt(tree: readonly SysMsgField[] | null, path: readonly number[]): readonly SysMsgField[] | null;
170
+ /** 按路径取 varint 数值(bytes 子树末段的 varint 字段;缺失 → null)。 */
171
+ declare function varintAt(tree: readonly SysMsgField[] | null, path: readonly number[]): number | null;
172
+ /** 单节点内 varint 字段数值(缺失 → null)。 */
173
+ declare function varintOf(node: readonly SysMsgField[] | null, no: number): number | null;
174
+ /** 单节点内 UTF-8 字符串字段(缺失/不可解码 → null)。 */
175
+ declare function textOf(node: readonly SysMsgField[] | null, no: number): string | null;
176
+ /**
177
+ * onRecvSysMsg 参数 → sysmsg 字节块列表(防御性收窄)。
178
+ * 接受批数组(实测形状)/ 单块裸数组 / TypedArray;零有效块返回 null
179
+ * (调用方打 raw 日志,与 narrowOfflineFiles 同模式)。
180
+ */
181
+ declare function narrowSysMsgBlobs(arg: unknown): readonly Uint8Array[] | null;
182
+ /** 实测样本信封(全部可空 = 提取失败不打死整条事件)。 */
183
+ interface SysMsgEnvelope {
184
+ /** f1.f1:行为人 uin(观测 = 自身账号;语义待校准)。 */
185
+ actorUin: number | null;
186
+ /** f1.f2:行为人 uid。 */
187
+ actorUid: string | null;
188
+ /** f1.f5:对象 uin(观测与 actor 相等)。 */
189
+ targetUin: number | null;
190
+ /** f1.f6:对象 uid。 */
191
+ targetUid: string | null;
192
+ /** f2.f1:msgType(原生分发键之一)。 */
193
+ msgType: number | null;
194
+ /** f2.f2:subType(原生分发键之一)。 */
195
+ subType: number | null;
196
+ /** f2.f3:备用 subType(观测恒等于 subType)。 */
197
+ subTypeAlt: number | null;
198
+ /** f2.f4/f5:群标识对(观测恒相邻整数,语义待校准)。 */
199
+ groupCodes: readonly [number, number] | null;
200
+ /** f2.f6:事件时间戳(秒)。 */
201
+ time: number | null;
202
+ /** 树内全部可打印字符串(校准观测用,含 base64 文本)。 */
203
+ strings: readonly string[];
204
+ }
205
+ /** 字段树 → 信封(任何字段缺失/非法 = null,不抛错)。 */
206
+ declare function extractSysMsgEnvelope(tree: readonly SysMsgField[]): SysMsgEnvelope;
207
+ /**
208
+ * 单条识别规则:表命中后从字段树提取协议事件体;提取失败 → null(降级校准日志)。
209
+ *
210
+ * - `kind`:协议侧事件种类(OB11 notice_type / Milky event_type)。
211
+ * - `collectUids`(可选):声明提取所需的 uid 集合——调用方批量 uid→uin 后经
212
+ * `uinOf` 解析器传入 extract(OB11 group_card 场景;不需要则不声明)。
213
+ * - `uinOf`:uid → uin 解析器(未收集/解析失败返回 0,协议侧口径自定)。
214
+ */
215
+ /** 规则执行上下文(信封与调用方装配信息,OB11 补 base 事件头用)。 */
216
+ interface SysMsgRuleContext {
217
+ /** 机器人自身 uin(数值)。 */
218
+ selfUin: number;
219
+ /** 事件时间(Unix 秒;sysmsg 信封 f2.f6,缺省进程当时)。 */
220
+ time: number;
221
+ }
222
+ interface SysMsgKindRule<TEvent> {
223
+ readonly kind: string;
224
+ collectUids?(tree: readonly SysMsgField[], env: SysMsgEnvelope): readonly string[];
225
+ extract(tree: readonly SysMsgField[], env: SysMsgEnvelope, uinOf: (uid: string) => number, ctx: SysMsgRuleContext): TEvent | null;
226
+ }
227
+ /** 识别结果三态。 */
228
+ type SysMsgRecognition<TEvent> = {
229
+ readonly kind: "notice";
230
+ readonly rule: SysMsgKindRule<TEvent>;
231
+ } | {
232
+ readonly kind: "observed_unnamed";
233
+ } | {
234
+ readonly kind: "unknown";
235
+ };
236
+ /** 字节块 → 小写 hex(校准日志用;超长由调用方截断)。 */
237
+ declare function toHex(bytes: Uint8Array): string;
238
+ //#endregion
239
+ export { ProtocolAdapterLike as C, ErrorCodeMap as D, BaseAction as E, AdapterRegistry as S, ActionResult as T, varintToNumber as _, collectStrings as a, ProtocolHooks as b, extractSysMsgEnvelope as c, narrowSysMsgBlobs as d, nodeAt as f, varintOf as g, varintAt as h, SysMsgRecognition as i, firstField as l, toHex as m, SysMsgField as n, decodeProtoTree as o, textOf as p, SysMsgKindRule as r, decodeText as s, SysMsgEnvelope as t, getChildren as u, ensureSilk as v, ActionRegistry as w, ProtocolConfig as x, BaseProtocolAdapter as y };
240
+ //# sourceMappingURL=index-h-tsUu0j.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-h-tsUu0j.d.mts","names":[],"sources":["../src/core/base-action.ts","../src/core/action-registry.ts","../src/core/adapter-registry.ts","../src/core/config.ts","../src/core/base-protocol-adapter.ts","../src/core/media.ts","../src/core/sysmsg.ts"],"mappings":";;;;;UAgBiB,aAAa;EAC1B;EACA;EACA,MAAM;EACN;EACA;;;KAIQ,eAAe,OAAO;;uBAGZ,WAAW,UAAU;oBACrB;oBACA,QAAQ,QAAQ;8BACN,cAAc;;EAG1C,OAAO,mBAAmB,QAAQ,aAAa;;EAKzC,gBAAgB,kBAAkB,iBAAiB,QAAQ,aAAa;UAQhE;qBAaK,QAAQ,SAAS,WAAW,QAAQ;UAE/C;UAaA;;;;cCrEC,eAAe;EAAkB;IAAiB;mBAC1C;EAEjB,SAAS,QAAQ;EAIjB,IAAI,eAAe;EAInB,IAAI;MAIA;;;;;;;;UChBS;WACJ;EACT,aAAa;EACb,YAAY;;cAGH;mBACQ;EAEjB,SAAS,SAAS;EAIlB,IAAI,mBAAmB;EAIjB,YAAY;EAIZ,WAAW;;;;;cClBR,eAAe,WAAW,WAAW;EAC9C,YAAY;IACR;IACA,QAAQ,QAAQ;IAChB,UAAU;;IAEV,OAAO;IACP,SAAS;;;;;;UCJA;;EAEb,UAAU,oBAAoB;;EAE9B,cAAc;;EAEd,WAAW,oBAAoB;;;;;;uBAOb,oBAAoB;oBACpB;qBAEC,QAAQ,eAAe;qBACvB,OAAO;mBACT;UACT;EAER,YAAY;IACR,QAAQ,eAAe;IACvB,OAAO;IACP,cAAc;;;EAQZ,SAAS;;EAUT,QAAQ;;EASR,UAAU;;YAQN,eAAe,GAAG,OAAO;;YAKzB,kBAAkB;;;;;;;;iBCjDV,WAAW,eAAe;;;;;;;;;;;;;;;;;;;;;;;KCQpC;WAEO;WACA;;WAEA;;WAGA;WACA;WACA,OAAO;;WAEP,mBAAmB;;;;;;;;;;iBAoItB,gBAAgB,MAAM,YAAY,0BAAqB;;iBAuBvD,WACZ,eAAe,sBACf,aACD;;iBAKa,YAAY,OAAO,mCAAmC;;iBAKtD,eAAe;;iBAKf,WAAW,OAAO;;iBAgBlB,eAAe,eAAe;;iBAkB9B,OACZ,eAAe,sBACf,mCACQ;;iBAYI,SACZ,eAAe,sBACf;;iBAWY,SAAS,eAAe,sBAAsB;;iBAM9C,OAAO,eAAe,sBAAsB;;;;;;iBAsD5C,kBAAkB,wBAAwB;;UAoBzC;;EAEb;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;iBA0CY,sBAAsB,eAAe,gBAAgB;;;;;;;;;;UAyBpD;;EAEb;;EAEA;;UAGa,eAAe;WACnB;EACT,aAAa,eAAe,eAAe,KAAK;EAChD,QACI,eAAe,eACf,KAAK,gBACL,QAAQ,wBACR,KAAK,oBACN;;;KAIK,kBAAkB;WACb;WAAyB,MAAM,eAAe;;WAC9C;;WACA;;;iBAyBD,MAAM,OAAO"}
@@ -1,4 +1,4 @@
1
- import { i as ProtocolConfig, n as BaseProtocolAdapter } from "../index-CDKj-jus.mjs";
1
+ import { x as ProtocolConfig, y as BaseProtocolAdapter } from "../index-h-tsUu0j.mjs";
2
2
  import { CanonicalElement, MsgEventChannel, Peer, RawMessage } from "@napuketto/kernel";
3
3
  import { z } from "zod";
4
4
  //#region src/kurobot/config.d.ts
@@ -1,4 +1,4 @@
1
- import { r as BaseProtocolAdapter } from "../core-DyXyDUcU.mjs";
1
+ import { _ as BaseProtocolAdapter } from "../core-DW5i42XH.mjs";
2
2
  import { t as forEachRawMessage } from "../raw-message-D_ecJy4C.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import { ChatType, toCanonicalElements } from "@napuketto/kernel";
@@ -1,5 +1,5 @@
1
- import { i as ProtocolConfig, n as BaseProtocolAdapter, s as ActionRegistry } from "../index-CDKj-jus.mjs";
2
- import { BuddyEventChannel, ChatType, FriendApi, GroupApi, GroupCache, GroupEventChannel, GroupNotifyApi, KernelErrorCode, MsgApi, MsgEventChannel, Peer, ProfileApi, ProfileLikeApi, RawMessage, RecentContactApi, RichMediaApi, TicketApi, WebApi } from "@napuketto/kernel";
1
+ import { w as ActionRegistry, x as ProtocolConfig, y as BaseProtocolAdapter } from "../index-h-tsUu0j.mjs";
2
+ import { BuddyEventChannel, ChatType, FriendApi, GroupApi, GroupCache, GroupEventChannel, GroupNotifyApi, KernelErrorCode, LoginEventChannel, MsgApi, MsgEventChannel, Peer, ProfileApi, ProfileLikeApi, RawMessage, RecentContactApi, RecentContactEventChannel, RichMediaApi, TicketApi, WebApi } from "@napuketto/kernel";
3
3
  import { ZodType, z } from "zod";
4
4
  import { EventBroadcaster, TransportAdapter } from "@napuketto/network";
5
5
  //#region src/milky/helper/seq-index.d.ts
@@ -81,8 +81,9 @@ declare const milkyConfigSchema: z.ZodObject<{
81
81
  type MilkyConfig = z.infer<typeof milkyConfigSchema>;
82
82
  //#endregion
83
83
  //#region src/milky/transport.d.ts
84
- /** 校准 logger 最小面(webhook 失败 / 配置异常提示;缺省静默)。 */
84
+ /** 校准 logger 最小面(webhook 失败 / 配置异常 / 批次三事件校准数据;缺省静默)。 */
85
85
  interface MilkyLoggerLike {
86
+ debug(obj: unknown, msg?: string): void;
86
87
  warn(obj: unknown, msg?: string): void;
87
88
  info(obj: unknown, msg?: string): void;
88
89
  }
@@ -187,6 +188,10 @@ interface MilkyAdapterOptions extends MilkyApiOptions {
187
188
  groupChannel?: GroupEventChannel;
188
189
  /** kernel 好友事件通道(P1:好友申请推送;缺省不订阅)。 */
189
190
  buddyChannel?: BuddyEventChannel;
191
+ /** kernel 会话列表事件通道(批次三:peer_pin_change;缺省不订阅)。 */
192
+ recentContactChannel?: RecentContactEventChannel;
193
+ /** kernel 登录状态事件通道(批次三:bot_offline;缺省不订阅)。 */
194
+ loginChannel?: LoginEventChannel;
190
195
  /** 校准日志(webhook 失败 / 启停提示 / 未知事件形状;IPC 模式传 loader pino 实例)。 */
191
196
  logger?: MilkyLoggerLike;
192
197
  }
@@ -195,6 +200,18 @@ declare class NapukettoMilkyAdapter extends BaseProtocolAdapter<MilkyConfig> {
195
200
  private readonly msgChannel;
196
201
  private readonly groupChannel;
197
202
  private readonly buddyChannel;
203
+ private readonly recentContactChannel;
204
+ private readonly loginChannel;
205
+ /** peer_pin 翻转检测(批次三;启动期 getPinnedContacts 播种)。 */
206
+ private readonly pinWatch;
207
+ /** friend_file_upload 双回调去重(同载荷,按 msgId)。 */
208
+ private readonly fileKeys;
209
+ /** essence 双路径去重(732:1 快路径 vs 列表 diff,键 群:seq:方向)。 */
210
+ private readonly essenceKeys;
211
+ /** 精华列表缓存(群号 → seq → 操作者 uin,空串 = 未知)。 */
212
+ private readonly essenceCaches;
213
+ /** 精华列表拉取串行链(并发回写乱序会把新列表覆盖成旧列表)。 */
214
+ private essenceChain;
198
215
  private readonly calibLogger;
199
216
  private readonly api;
200
217
  private readonly seqIndex;
@@ -211,6 +228,10 @@ declare class NapukettoMilkyAdapter extends BaseProtocolAdapter<MilkyConfig> {
211
228
  private stopAll;
212
229
  /** 订阅 kernel 事件(消息 + 群通知 + 好友请求,幂等)。 */
213
230
  private subscribe;
231
+ /** 群通知 + 好友请求通道(P1 事件源;通道缺省不订阅)。 */
232
+ private subscribeGroupAndBuddy;
233
+ /** 批次三通道:精华列表变更 / 置顶翻转(含播种基线)/ bot_offline。 */
234
+ private subscribeBatch3;
214
235
  /** 退订(幂等)。 */
215
236
  private unsubscribeAll;
216
237
  /** 单条消息:seq 登记 → grayTip→notice / 群文件上传 / message_receive(自消息不上报)。 */
@@ -235,6 +256,39 @@ declare class NapukettoMilkyAdapter extends BaseProtocolAdapter<MilkyConfig> {
235
256
  private fillGroupEntities;
236
257
  /** 转发 resId → 定位登记(get_forwarded_messages 反查用)。 */
237
258
  private recordForward;
259
+ /**
260
+ * sysmsg 总闸:解码 → 识别 → 表命中才广播(732:16 表情回应 / 732:1 精华
261
+ * 设置);未识别 debug 校准日志。规则提取失败不广播半成品事件。
262
+ */
263
+ private handleSysMsg;
264
+ /** 单条字节块:解码 → 识别 → 提取;任一步失败走校准日志返回 null。 */
265
+ private handleSysMsgBlob;
266
+ /** 解码 + 识别 + 提取(每步失败各自打 debug 校准日志)。 */
267
+ private sysMsgHit;
268
+ /** 识别 + 规则提取(未识别/提取失败 → 校准日志 + null)。 */
269
+ private sysMsgRule;
270
+ /** 精华快路径去重守卫:非精华事件恒 true;精华事件 claim 失败(已由列表 diff 抢发)→ false。 */
271
+ private claimEssenceFastPath;
272
+ /** 私聊文件消息 → friend_file_upload(双回调同载荷,按 msgId 去重)。 */
273
+ private handleFileMessages;
274
+ /** 精华列表变更:拉全量列表 diff(remove 路径 + operator 回填;串行防乱序)。 */
275
+ private handleEssenceChange;
276
+ /** 单群精华列表同步:拉取 → diff → 广播 → 更新缓存(基线未建立只建基线)。 */
277
+ private syncEssenceList;
278
+ /** diff 新增项广播(is_set=true;operator = add_digest_uin;快路径已发则跳过)。 */
279
+ private broadcastEssenceAdded;
280
+ /** diff 移除项广播(is_set=false;取消无 sysmsg,operator 不可得省略)。 */
281
+ private broadcastEssenceRemoved;
282
+ /** 会话列表变更 → peer_pin_change(topFlag 翻转检测,条目自带 chatType 判场景)。 */
283
+ private handlePinChanges;
284
+ /** 单个变更列表:changedList 逐条目翻转检测 + 广播。 */
285
+ private handlePinChangeList;
286
+ /** 单个变更条目:翻译 + 翻转检测 + 广播(首见/未变/不支持场景静默跳过)。 */
287
+ private handlePinEntry;
288
+ /** 启动基线:置顶会话播种(重启后首个取消置顶也能观测到翻转;失败静默)。 */
289
+ private seedPinWatch;
290
+ /** bot_offline:Login 桥回调(载荷零样本,reason 固定值 + raw 校准日志待野捕)。 */
291
+ private broadcastBotOffline;
238
292
  /** uid 批量 → uin(空集/失败返回 undefined 语义:调用方用空 Map)。 */
239
293
  private resolveUidToUin;
240
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/milky/helper/seq-index.ts","../../src/milky/action/error-map.ts","../../src/milky/action/base-action.ts","../../src/milky/config.ts","../../src/milky/transport.ts","../../src/milky/api.ts","../../src/milky/action/index.ts","../../src/milky/adapter.ts"],"mappings":";;;;;;UAuBiB;EACb,UAAU;EACV;EACA;;cAGS;;mBAEQ;;mBAEA;;mBAEA;;EAGjB,OAAO,KAAK;;EAeZ,aAAa,UAAU,UAAU,iBAAiB;;;;;EAQlD,iBACI,mBACD;IAAc;IAAoB;IAAkB;;;UAgB/C;;;;;EAQR,cAAc,eAAe,OAAO;;EAepC,eAAe,gBAAgB;;UAKvB;;;;;KClGA,oBAAoB,OAAO;;;;UCItB,kBAAkB;EAC/B;EACA;EACA,MAAM;EACN;;uBAYkB,YAAY,UAAU;oBACtB;oBACA,QAAQ,QAAQ;8BACN,cAAc;qBAEvB,QAAQ,SAAS,WAAW,QAAQ;;EAGjD,OAAO,mBAAmB,QAAQ,kBAAkB;;;;;cC5BjD,mBAAiB,EAAA;;;;;;;;;;;GAe5B,EAAA,KAAA;;KAGU,cAAc,EAAE,aAAa;;;;UCQxB;EACb,KAAK,cAAc;EACnB,KAAK,cAAc;;;;;UCTN;EACb,QAAQ;EACR,UAAU;EACV,WAAW;EACX,YAAY;;EAEZ,gBAAgB;EAChB,WAAW;EACX,QAAQ;EACR,gBAAgB;EAChB,cAAc;;EAEd,kBAAkB;;EAElB;IAAQ;IAAa;IAAkB;;;EAEvC,aAAa;;EAEb;;EAEA;;EAEA;;EAEA,SAAS;;cAGA;WACA,QAAQ;WACR,UAAU;WACV,WAAW;WACX,YAAY;WACZ,gBAAgB;WAChB,WAAW;WACX,QAAQ;WACR,gBAAgB;WAChB,cAAc;WACd,kBAAkB;WAClB;IAAQ;IAAa;IAAkB;;WACvC,YAAY;WACZ;WACA;WACA;;WAEA,QAAQ;;WAER,UAAU;EAEnB,YAAY,MAAM,iBAAiB,UAAU;;EAqB7C,SAAS,iBAAiB,QAAQ;;EAKlC,SAAS,iBAAiB,QAAQ;;;;;EAQ5B,kBAAkB,uBAAuB;;;;;EAiBzC,YAAY,oCAAoC,aAAa,QAAQ;;;;;EAqBrE,kBACF,MAAM,MACN,aACA,UAAU,mBACX;;EAeG,kBACF,MAAM,MACN,gBACD;IAAU;IAAqB;;;;;;iBCrFtB,0BAA0B;EACtC,KAAK;IACL,eAAe;;;;UCxCF,4BAA4B;EACzC,QAAQ,eAAe;EACvB,aAAa;;EAEb,YAAY;;EAEZ,eAAe;;EAEf,eAAe;;EAEf,SAAS;;cAGA,8BAA8B,oBAAoB;WAClD;mBAEQ;mBACA;mBACA;mBACA;mBACA;mBACA;;WAER,UAAU,kBAAkB;UAC7B;UACA;EAER,YAAY,MAAM;;UAoBJ;;UA2BA;;UAMA;;UASN;;UA4BA;;UAQM;;UAuBA;;UAeN;;UASM;;UAWN;;UAkBM;;UASA;;UAgBA;;UAkBN;;UAWM;;UAaN;;UAcA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/milky/helper/seq-index.ts","../../src/milky/action/error-map.ts","../../src/milky/action/base-action.ts","../../src/milky/config.ts","../../src/milky/transport.ts","../../src/milky/api.ts","../../src/milky/action/index.ts","../../src/milky/adapter.ts"],"mappings":";;;;;;UAuBiB;EACb,UAAU;EACV;EACA;;cAGS;;mBAEQ;;mBAEA;;mBAEA;;EAGjB,OAAO,KAAK;;EAeZ,aAAa,UAAU,UAAU,iBAAiB;;;;;EAQlD,iBACI,mBACD;IAAc;IAAoB;IAAkB;;;UAgB/C;;;;;EAQR,cAAc,eAAe,OAAO;;EAepC,eAAe,gBAAgB;;UAKvB;;;;;KClGA,oBAAoB,OAAO;;;;UCItB,kBAAkB;EAC/B;EACA;EACA,MAAM;EACN;;uBAYkB,YAAY,UAAU;oBACtB;oBACA,QAAQ,QAAQ;8BACN,cAAc;qBAEvB,QAAQ,SAAS,WAAW,QAAQ;;EAGjD,OAAO,mBAAmB,QAAQ,kBAAkB;;;;;cC5BjD,mBAAiB,EAAA;;;;;;;;;;;GAe5B,EAAA,KAAA;;KAGU,cAAc,EAAE,aAAa;;;;UCQxB;EACb,MAAM,cAAc;EACpB,KAAK,cAAc;EACnB,KAAK,cAAc;;;;;UCVN;EACb,QAAQ;EACR,UAAU;EACV,WAAW;EACX,YAAY;;EAEZ,gBAAgB;EAChB,WAAW;EACX,QAAQ;EACR,gBAAgB;EAChB,cAAc;;EAEd,kBAAkB;;EAElB;IAAQ;IAAa;IAAkB;;;EAEvC,aAAa;;EAEb;;EAEA;;EAEA;;EAEA,SAAS;;cAGA;WACA,QAAQ;WACR,UAAU;WACV,WAAW;WACX,YAAY;WACZ,gBAAgB;WAChB,WAAW;WACX,QAAQ;WACR,gBAAgB;WAChB,cAAc;WACd,kBAAkB;WAClB;IAAQ;IAAa;IAAkB;;WACvC,YAAY;WACZ;WACA;WACA;;WAEA,QAAQ;;WAER,UAAU;EAEnB,YAAY,MAAM,iBAAiB,UAAU;;EAqB7C,SAAS,iBAAiB,QAAQ;;EAKlC,SAAS,iBAAiB,QAAQ;;;;;EAQ5B,kBAAkB,uBAAuB;;;;;EAiBzC,YAAY,oCAAoC,aAAa,QAAQ;;;;;EAqBrE,kBACF,MAAM,MACN,aACA,UAAU,mBACX;;EAeG,kBACF,MAAM,MACN,gBACD;IAAU;IAAqB;;;;;;iBCrFtB,0BAA0B;EACtC,KAAK;IACL,eAAe;;;;UCpBF,4BAA4B;EACzC,QAAQ,eAAe;EACvB,aAAa;;EAEb,YAAY;;EAEZ,eAAe;;EAEf,eAAe;;EAEf,uBAAuB;;EAEvB,eAAe;;EAEf,SAAS;;cAUA,8BAA8B,oBAAoB;WAClD;mBAEQ;mBACA;mBACA;mBACA;mBACA;;mBAEA;;mBAEA;;mBAEA;;mBAEA;;UAET;mBACS;mBACA;mBACA;;WAER,UAAU,kBAAkB;UAC7B;UACA;EAER,YAAY,MAAM;;UAsBJ;;UA2BA;;UAMA;;UASN;;UA6BA;;UAoBA;;UAiCA;;UAQM;;UAuBA;;UAeN;;UASM;;UAWN;;UAkBM;;UASA;;UAgBA;;UAkBN;;UAWM;;UAaN;;;;;UAsBA;;UAeA;;UAiBA;;UAkBA;;UAmCA;;UASA;;UA2BA;;UAgBM;;UAwBN;;UAsBA;;UAoBA;;UAQA;;UAOA;;UAiBA;;UAUA;;UAcA"}