@agentunion/fastaun-browser 0.2.16 → 0.2.17
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/client.d.ts +5 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +76 -12
- package/dist/client.js.map +1 -1
- package/dist/group-id.d.ts +24 -0
- package/dist/group-id.d.ts.map +1 -0
- package/dist/group-id.js +94 -0
- package/dist/group-id.js.map +1 -0
- package/dist/keystore/index.d.ts +2 -0
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb.d.ts +1 -0
- package/dist/keystore/indexeddb.d.ts.map +1 -1
- package/dist/keystore/indexeddb.js +4 -0
- package/dist/keystore/indexeddb.js.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -383,6 +383,11 @@ export declare class AUNClient {
|
|
|
383
383
|
private _shouldRetryReconnect;
|
|
384
384
|
/** 从 keystore 恢复 SeqTracker 状态(真正可 await,确保在 transport.connect 前完成) */
|
|
385
385
|
private _restoreSeqTrackerState;
|
|
386
|
+
/**
|
|
387
|
+
* 把 seq_tracker state 里 group_event:/group_msg: 前缀的老/污染 group_id 归一化。
|
|
388
|
+
* 冲突取 max;同时落盘删除老 ns、写入新 ns。
|
|
389
|
+
*/
|
|
390
|
+
private _migrateSeqStateGroupIds;
|
|
386
391
|
private _currentSeqTrackerContext;
|
|
387
392
|
private _resetSeqTrackingState;
|
|
388
393
|
private _refreshSeqTrackerContext;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// - 后台任务使用 setTimeout/setInterval
|
|
7
7
|
import { createConfig, getDeviceId, normalizeInstanceId } from './config.js';
|
|
8
8
|
import { EventDispatcher } from './events.js';
|
|
9
|
+
import { normalizeGroupId } from './group-id.js';
|
|
9
10
|
import { GatewayDiscovery } from './discovery.js';
|
|
10
11
|
import { RPCTransport } from './transport.js';
|
|
11
12
|
import { AuthFlow } from './auth.js';
|
|
@@ -604,6 +605,10 @@ export class AUNClient {
|
|
|
604
605
|
const p = { ...(params ?? {}) };
|
|
605
606
|
this._validateOutboundCall(method, p);
|
|
606
607
|
this._injectMessageCursorContext(method, p);
|
|
608
|
+
// group.* 方法的 group_id 归一化为 canonical 格式(兼容老/污染数据)
|
|
609
|
+
if (method.startsWith('group.') && p.group_id !== undefined && p.group_id !== null && p.group_id !== '') {
|
|
610
|
+
p.group_id = normalizeGroupId(p.group_id);
|
|
611
|
+
}
|
|
607
612
|
// group.* 方法注入 device_id(服务端用于多设备消息路由)
|
|
608
613
|
if (method.startsWith('group.') && this._deviceId && p.device_id === undefined) {
|
|
609
614
|
p.device_id = this._deviceId;
|
|
@@ -618,8 +623,7 @@ export class AUNClient {
|
|
|
618
623
|
if (encrypt) {
|
|
619
624
|
return this._sendEncrypted(p);
|
|
620
625
|
}
|
|
621
|
-
|
|
622
|
-
delete p.headers;
|
|
626
|
+
// encrypt=false:明文走通用 RPC 路径;protected_headers/headers 是信封元数据,加密与否都保留
|
|
623
627
|
}
|
|
624
628
|
// 自动加密:group.send 默认加密(encrypt 默认 true)
|
|
625
629
|
if (method === 'group.send') {
|
|
@@ -628,24 +632,20 @@ export class AUNClient {
|
|
|
628
632
|
if (encrypt) {
|
|
629
633
|
return this._sendGroupEncrypted(p);
|
|
630
634
|
}
|
|
631
|
-
delete p.protected_headers;
|
|
632
|
-
delete p.headers;
|
|
633
635
|
}
|
|
634
636
|
if (method === 'group.thought.put') {
|
|
635
637
|
const encrypt = p.encrypt !== undefined ? p.encrypt : true;
|
|
636
638
|
delete p.encrypt;
|
|
637
|
-
if (
|
|
638
|
-
|
|
639
|
+
if (encrypt) {
|
|
640
|
+
return this._putGroupThoughtEncrypted(p);
|
|
639
641
|
}
|
|
640
|
-
return this._putGroupThoughtEncrypted(p);
|
|
641
642
|
}
|
|
642
643
|
if (method === 'message.thought.put') {
|
|
643
644
|
const encrypt = p.encrypt !== undefined ? p.encrypt : true;
|
|
644
645
|
delete p.encrypt;
|
|
645
|
-
if (
|
|
646
|
-
|
|
646
|
+
if (encrypt) {
|
|
647
|
+
return this._putMessageThoughtEncrypted(p);
|
|
647
648
|
}
|
|
648
|
-
return this._putMessageThoughtEncrypted(p);
|
|
649
649
|
}
|
|
650
650
|
// 关键操作自动附加客户端签名
|
|
651
651
|
if (SIGNED_METHODS.has(method)) {
|
|
@@ -5149,10 +5149,11 @@ export class AUNClient {
|
|
|
5149
5149
|
// 优先从 seq_tracker 表按行读取
|
|
5150
5150
|
const loadAll = this._keystore.loadAllSeqs?.bind(this._keystore);
|
|
5151
5151
|
if (typeof loadAll === 'function') {
|
|
5152
|
-
|
|
5152
|
+
let state = await loadAll(aid, deviceId, slotId);
|
|
5153
5153
|
if (this._seqTrackerContext !== context)
|
|
5154
5154
|
return;
|
|
5155
5155
|
if (state && typeof state === 'object' && Object.keys(state).length > 0) {
|
|
5156
|
+
state = await this._migrateSeqStateGroupIds(state);
|
|
5156
5157
|
this._seqTracker.restoreState(state);
|
|
5157
5158
|
}
|
|
5158
5159
|
return;
|
|
@@ -5167,7 +5168,8 @@ export class AUNClient {
|
|
|
5167
5168
|
if (stateHolder && typeof stateHolder === 'object') {
|
|
5168
5169
|
const state = stateHolder.seq_tracker_state;
|
|
5169
5170
|
if (isJsonObject(state)) {
|
|
5170
|
-
this.
|
|
5171
|
+
const migrated = await this._migrateSeqStateGroupIds(state);
|
|
5172
|
+
this._seqTracker.restoreState(migrated);
|
|
5171
5173
|
}
|
|
5172
5174
|
}
|
|
5173
5175
|
}
|
|
@@ -5181,6 +5183,68 @@ export class AUNClient {
|
|
|
5181
5183
|
}).catch(() => { });
|
|
5182
5184
|
}
|
|
5183
5185
|
}
|
|
5186
|
+
/**
|
|
5187
|
+
* 把 seq_tracker state 里 group_event:/group_msg: 前缀的老/污染 group_id 归一化。
|
|
5188
|
+
* 冲突取 max;同时落盘删除老 ns、写入新 ns。
|
|
5189
|
+
*/
|
|
5190
|
+
async _migrateSeqStateGroupIds(state) {
|
|
5191
|
+
if (!state || Object.keys(state).length === 0)
|
|
5192
|
+
return state;
|
|
5193
|
+
const renameMap = {};
|
|
5194
|
+
for (const ns of Object.keys(state)) {
|
|
5195
|
+
for (const prefix of ['group_event:', 'group_msg:']) {
|
|
5196
|
+
if (ns.startsWith(prefix)) {
|
|
5197
|
+
const oldGid = ns.slice(prefix.length);
|
|
5198
|
+
const newGid = normalizeGroupId(oldGid);
|
|
5199
|
+
if (newGid && newGid !== oldGid) {
|
|
5200
|
+
renameMap[ns] = `${prefix}${newGid}`;
|
|
5201
|
+
}
|
|
5202
|
+
break;
|
|
5203
|
+
}
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5206
|
+
if (Object.keys(renameMap).length === 0)
|
|
5207
|
+
return state;
|
|
5208
|
+
const newState = { ...state };
|
|
5209
|
+
for (const [oldNs, newNs] of Object.entries(renameMap)) {
|
|
5210
|
+
const oldVal = Number(newState[oldNs] ?? 0);
|
|
5211
|
+
const curVal = Number(newState[newNs] ?? 0);
|
|
5212
|
+
delete newState[oldNs];
|
|
5213
|
+
newState[newNs] = Math.max(oldVal, curVal);
|
|
5214
|
+
}
|
|
5215
|
+
if (!this._aid)
|
|
5216
|
+
return newState;
|
|
5217
|
+
const aid = this._aid;
|
|
5218
|
+
const deviceId = this._deviceId;
|
|
5219
|
+
const slotId = this._slotId;
|
|
5220
|
+
const saver = this._keystore.saveSeq?.bind(this._keystore);
|
|
5221
|
+
const deleter = this._keystore.deleteSeq?.bind(this._keystore);
|
|
5222
|
+
if (typeof saver === 'function') {
|
|
5223
|
+
for (const [oldNs, newNs] of Object.entries(renameMap)) {
|
|
5224
|
+
if (typeof deleter === 'function') {
|
|
5225
|
+
try {
|
|
5226
|
+
await deleter(aid, deviceId, slotId, oldNs);
|
|
5227
|
+
}
|
|
5228
|
+
catch (e) {
|
|
5229
|
+
this._dispatcher.publish('seq_tracker.persist_error', {
|
|
5230
|
+
phase: 'migrate_delete', aid, device_id: deviceId, slot_id: slotId,
|
|
5231
|
+
ns: oldNs, error: String(e),
|
|
5232
|
+
}).catch(() => { });
|
|
5233
|
+
}
|
|
5234
|
+
}
|
|
5235
|
+
try {
|
|
5236
|
+
await saver(aid, deviceId, slotId, newNs, newState[newNs]);
|
|
5237
|
+
}
|
|
5238
|
+
catch (e) {
|
|
5239
|
+
this._dispatcher.publish('seq_tracker.persist_error', {
|
|
5240
|
+
phase: 'migrate_save', aid, device_id: deviceId, slot_id: slotId,
|
|
5241
|
+
ns: newNs, error: String(e),
|
|
5242
|
+
}).catch(() => { });
|
|
5243
|
+
}
|
|
5244
|
+
}
|
|
5245
|
+
}
|
|
5246
|
+
return newState;
|
|
5247
|
+
}
|
|
5184
5248
|
_currentSeqTrackerContext() {
|
|
5185
5249
|
if (!this._aid)
|
|
5186
5250
|
return null;
|