@agentunion/fastaun-browser 0.5.16 → 0.5.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/CHANGELOG.md +309 -274
- package/_packed_docs/CHANGELOG.md +309 -274
- package/_packed_docs/INDEX.md +8 -2
- package/_packed_docs/KITE_DOCS_GUIDE.md +2 -0
- package/_packed_docs/agent.md/SCHEMA.md +15 -15
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +1178 -1178
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +1213 -1213
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +58 -43
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +80 -17
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +27 -6
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +7 -4
- package/_packed_docs/sdk/09-group-rpc-manual.md +167 -35
- package/_packed_docs/sdk/09-message-rpc-manual.md +72 -42
- package/_packed_docs/sdk/09-storage-rpc-manual.md +23 -14
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +16 -12
- package/_packed_docs/sdk/INDEX.md +12 -12
- package/dist/agent-md.d.ts +2 -0
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +7 -1
- package/dist/agent-md.js.map +1 -1
- package/dist/bundle.js +2274 -1789
- package/dist/client/delivery.d.ts +18 -0
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +147 -5
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.d.ts +4 -0
- package/dist/client/group-state.d.ts.map +1 -1
- package/dist/client/group-state.js +63 -0
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +37 -4
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +7 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +180 -25
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +60 -12
- package/dist/client.js.map +1 -1
- package/dist/facades.d.ts +5 -0
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +15 -0
- package/dist/facades.js.map +1 -1
- package/dist/group-fs.d.ts.map +1 -1
- package/dist/group-fs.js +8 -5
- package/dist/group-fs.js.map +1 -1
- package/dist/storage/vfs.d.ts +1 -0
- package/dist/storage/vfs.d.ts.map +1 -1
- package/dist/storage/vfs.js +68 -5
- package/dist/storage/vfs.js.map +1 -1
- package/dist/tools/cross-sdk-agent.js +34 -3
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.js +34 -34
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +10 -10
|
@@ -29,6 +29,10 @@ export declare class MessageDeliveryEngine {
|
|
|
29
29
|
private pendingP2PInlineAcks;
|
|
30
30
|
private pendingGroupInlineAcks;
|
|
31
31
|
private pendingGroupInlineAckNamespaces;
|
|
32
|
+
private volatileContext;
|
|
33
|
+
private volatilePullCursorValue;
|
|
34
|
+
private volatileSeenMessages;
|
|
35
|
+
private volatileInFlightMessages;
|
|
32
36
|
private inlineGeneration;
|
|
33
37
|
private seqTrackerWriteChain;
|
|
34
38
|
constructor(runtime: ClientRuntime);
|
|
@@ -116,6 +120,20 @@ export declare class MessageDeliveryEngine {
|
|
|
116
120
|
event: string;
|
|
117
121
|
payload: EventPayload;
|
|
118
122
|
};
|
|
123
|
+
isVolatileMessage(message: unknown): boolean;
|
|
124
|
+
volatileMessages(value: unknown): JsonObject[];
|
|
125
|
+
private ensureVolatileContext;
|
|
126
|
+
volatilePullCursor(): string;
|
|
127
|
+
resetVolatilePullCursor(): void;
|
|
128
|
+
shouldResetVolatileCursor(cursor: string, error: unknown): boolean;
|
|
129
|
+
private volatileSeenKey;
|
|
130
|
+
isVolatileSeen(message: JsonObject): boolean;
|
|
131
|
+
markVolatileSeen(message: JsonObject): void;
|
|
132
|
+
beginVolatileDelivery(message: JsonObject): 'claimed' | 'seen' | 'inflight';
|
|
133
|
+
finishVolatileDelivery(message: JsonObject): void;
|
|
134
|
+
publicVolatileMessage(message: JsonObject): JsonObject;
|
|
135
|
+
ackVolatileMessages(messages: JsonObject[], v2: boolean, advanceCursor: boolean): Promise<unknown>;
|
|
136
|
+
publishPlainVolatileMessages(messages: JsonObject[], source: string, advanceCursor: boolean): Promise<JsonObject[]>;
|
|
119
137
|
messageRecallDedupKey(payload: JsonObject): string;
|
|
120
138
|
publishMessageRecallTombstone(seq: unknown, message: EventPayload, source?: string): Promise<boolean>;
|
|
121
139
|
recallEventFromGroupMessage(message: EventPayload): JsonObject | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/client/delivery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAiC,KAAK,UAAU,EAAkB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/client/delivery.ts"],"names":[],"mappings":"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"}
|
package/dist/client/delivery.js
CHANGED
|
@@ -6,6 +6,7 @@ const PUSHED_SEQS_LIMIT = 50_000;
|
|
|
6
6
|
const PENDING_ORDERED_LIMIT = 50_000;
|
|
7
7
|
const MESSAGE_RECALL_SEEN_LIMIT = 10_000;
|
|
8
8
|
const GROUP_RECALL_SEEN_LIMIT = 10_000;
|
|
9
|
+
const VOLATILE_SEEN_LIMIT = 10_000;
|
|
9
10
|
const SEQ_TRACKER_PERSIST_FLUSH_DELAY_MS = 200;
|
|
10
11
|
const P2P_GAP_FILL_RETRY_LIMIT = 12;
|
|
11
12
|
const P2P_GAP_FILL_RETRY_BASE_MS = 1000;
|
|
@@ -32,7 +33,7 @@ const APP_SEND_ENVELOPE_METHODS = new Set([
|
|
|
32
33
|
const APP_GROUP_EVENT_ENVELOPE_KEYS = [
|
|
33
34
|
'module_id', 'event_id', 'event_seq', 'seq', 'event_type', 'action', 'group_id',
|
|
34
35
|
'actor_aid', 'sender_aid', 'member_aid', 'target_aid', 'operator_aid',
|
|
35
|
-
'created_at', 'timestamp', 't_server', 'status', 'device_id',
|
|
36
|
+
'created_at', 'timestamp', 't_server', 'status', 'device_id',
|
|
36
37
|
];
|
|
37
38
|
const MAX_INLINE_PENDING_ACK_NAMESPACES = 4096;
|
|
38
39
|
function formatDeliveryError(error) {
|
|
@@ -135,6 +136,10 @@ export class MessageDeliveryEngine {
|
|
|
135
136
|
pendingP2PInlineAcks = null;
|
|
136
137
|
pendingGroupInlineAcks = null;
|
|
137
138
|
pendingGroupInlineAckNamespaces = null;
|
|
139
|
+
volatileContext = '';
|
|
140
|
+
volatilePullCursorValue = '';
|
|
141
|
+
volatileSeenMessages = new Map();
|
|
142
|
+
volatileInFlightMessages = new Set();
|
|
138
143
|
// reset 后旧 inline Promise 只能自行结束,不能触碰新身份上下文的状态。
|
|
139
144
|
inlineGeneration = 0;
|
|
140
145
|
// 同一实例的 tracker 写入必须串行,避免旧的延迟 flush 覆盖新的 Forward 提交。
|
|
@@ -937,6 +942,10 @@ export class MessageDeliveryEngine {
|
|
|
937
942
|
const client = this.runtime.client;
|
|
938
943
|
this.ensurePullOperationCurrent(ns);
|
|
939
944
|
const response = result;
|
|
945
|
+
const volatileMessages = this.volatileMessages(response.messages);
|
|
946
|
+
if (method === 'message.pull' && volatileMessages.length > 0) {
|
|
947
|
+
await this.publishPlainVolatileMessages(volatileMessages, 'pull', true);
|
|
948
|
+
}
|
|
940
949
|
const messages = deduplicatePlainForwardPageMessages(response.messages, afterSeq);
|
|
941
950
|
const coordinator = this.forwardCoordinator();
|
|
942
951
|
const pageContigBefore = client._seqTracker.getContiguousSeq(ns);
|
|
@@ -1145,17 +1154,22 @@ export class MessageDeliveryEngine {
|
|
|
1145
1154
|
}
|
|
1146
1155
|
else if (this.isGroupScopedEvent(event)) {
|
|
1147
1156
|
payload = this.stripInlineInternalFields(payload);
|
|
1148
|
-
normalized = this.attachAppGroupEventEnvelope(this.attachCurrentInstanceContext(payload));
|
|
1157
|
+
normalized = this.attachAppGroupEventEnvelope(this.stripInternalSenderDeviceFields(this.attachCurrentInstanceContext(payload)));
|
|
1149
1158
|
}
|
|
1150
1159
|
else {
|
|
1151
1160
|
normalized = payload;
|
|
1152
1161
|
}
|
|
1162
|
+
if (this.isVolatileMessage(normalized) && isJsonObject(normalized)) {
|
|
1163
|
+
normalized = { ...normalized };
|
|
1164
|
+
delete normalized.seq;
|
|
1165
|
+
}
|
|
1153
1166
|
const canonicalSource = canonicalDeliverySource(source);
|
|
1154
1167
|
if (canonicalSource === 'direct' || !isJsonObject(normalized))
|
|
1155
1168
|
return normalized;
|
|
1156
1169
|
if (!this.isInstanceScopedMessageEvent(event) && !this.isGroupScopedEvent(event))
|
|
1157
1170
|
return normalized;
|
|
1158
|
-
|
|
1171
|
+
normalized = { ...normalized, source: canonicalSource };
|
|
1172
|
+
return normalized;
|
|
1159
1173
|
}
|
|
1160
1174
|
stripInlineInternalFields(payload) {
|
|
1161
1175
|
if (!isJsonObject(payload))
|
|
@@ -1330,10 +1344,13 @@ export class MessageDeliveryEngine {
|
|
|
1330
1344
|
if (!isJsonObject(payload))
|
|
1331
1345
|
return payload;
|
|
1332
1346
|
const result = { ...payload };
|
|
1333
|
-
delete result.sender_device_id;
|
|
1334
1347
|
delete result._sender_device_id;
|
|
1335
1348
|
delete result.from_device_id;
|
|
1336
1349
|
delete result.from_device;
|
|
1350
|
+
delete result.slot_id;
|
|
1351
|
+
delete result.sender_slot_id;
|
|
1352
|
+
delete result.target_slot_id;
|
|
1353
|
+
delete result.owner_slot_id;
|
|
1337
1354
|
return result;
|
|
1338
1355
|
}
|
|
1339
1356
|
recallEventFromMessage(message) {
|
|
@@ -1398,6 +1415,122 @@ export class MessageDeliveryEngine {
|
|
|
1398
1415
|
return { event: 'message.recalled', payload: recall };
|
|
1399
1416
|
return { event: 'message.received', payload: message };
|
|
1400
1417
|
}
|
|
1418
|
+
isVolatileMessage(message) {
|
|
1419
|
+
return isJsonObject(message)
|
|
1420
|
+
&& String(message.storage ?? '').trim() === 'volatile';
|
|
1421
|
+
}
|
|
1422
|
+
volatileMessages(value) {
|
|
1423
|
+
if (!Array.isArray(value))
|
|
1424
|
+
return [];
|
|
1425
|
+
return value.filter((item) => this.isVolatileMessage(item)).map((item) => ({ ...item }));
|
|
1426
|
+
}
|
|
1427
|
+
ensureVolatileContext() {
|
|
1428
|
+
const client = this.runtime.client;
|
|
1429
|
+
const context = JSON.stringify([client._aid ?? '', client._deviceId ?? '', client._slotId ?? '']);
|
|
1430
|
+
if (context === this.volatileContext)
|
|
1431
|
+
return;
|
|
1432
|
+
this.volatileContext = context;
|
|
1433
|
+
this.volatilePullCursorValue = '';
|
|
1434
|
+
this.volatileSeenMessages.clear();
|
|
1435
|
+
this.volatileInFlightMessages.clear();
|
|
1436
|
+
}
|
|
1437
|
+
volatilePullCursor() {
|
|
1438
|
+
this.ensureVolatileContext();
|
|
1439
|
+
return this.volatilePullCursorValue;
|
|
1440
|
+
}
|
|
1441
|
+
resetVolatilePullCursor() {
|
|
1442
|
+
this.ensureVolatileContext();
|
|
1443
|
+
this.volatilePullCursorValue = '';
|
|
1444
|
+
}
|
|
1445
|
+
shouldResetVolatileCursor(cursor, error) {
|
|
1446
|
+
const text = error instanceof Error ? error.message : String(error);
|
|
1447
|
+
return Boolean(cursor) && cursor === this.volatilePullCursor()
|
|
1448
|
+
&& text.toLowerCase().includes('volatile cursor epoch mismatch');
|
|
1449
|
+
}
|
|
1450
|
+
volatileSeenKey(message) {
|
|
1451
|
+
const sender = String(message.from_aid ?? message.from ?? '').trim();
|
|
1452
|
+
const messageId = String(message.message_id ?? '').trim();
|
|
1453
|
+
const cursor = String(message.volatile_cursor ?? '').trim();
|
|
1454
|
+
return `${sender}|${messageId || cursor}`;
|
|
1455
|
+
}
|
|
1456
|
+
isVolatileSeen(message) {
|
|
1457
|
+
this.ensureVolatileContext();
|
|
1458
|
+
const now = Date.now();
|
|
1459
|
+
for (const [key, expiresAt] of this.volatileSeenMessages) {
|
|
1460
|
+
if (expiresAt <= now)
|
|
1461
|
+
this.volatileSeenMessages.delete(key);
|
|
1462
|
+
}
|
|
1463
|
+
return this.volatileSeenMessages.has(this.volatileSeenKey(message));
|
|
1464
|
+
}
|
|
1465
|
+
markVolatileSeen(message) {
|
|
1466
|
+
this.ensureVolatileContext();
|
|
1467
|
+
const now = Date.now();
|
|
1468
|
+
const expiresAt = Math.max(now + 60_000, Number(message.expires_at ?? now + 1_800_000) || now + 1_800_000);
|
|
1469
|
+
this.volatileSeenMessages.set(this.volatileSeenKey(message), expiresAt);
|
|
1470
|
+
while (this.volatileSeenMessages.size > VOLATILE_SEEN_LIMIT) {
|
|
1471
|
+
const oldest = this.volatileSeenMessages.keys().next().value;
|
|
1472
|
+
if (oldest === undefined)
|
|
1473
|
+
break;
|
|
1474
|
+
this.volatileSeenMessages.delete(oldest);
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
beginVolatileDelivery(message) {
|
|
1478
|
+
if (this.isVolatileSeen(message))
|
|
1479
|
+
return 'seen';
|
|
1480
|
+
const key = this.volatileSeenKey(message);
|
|
1481
|
+
if (this.volatileInFlightMessages.has(key))
|
|
1482
|
+
return 'inflight';
|
|
1483
|
+
this.volatileInFlightMessages.add(key);
|
|
1484
|
+
return 'claimed';
|
|
1485
|
+
}
|
|
1486
|
+
finishVolatileDelivery(message) {
|
|
1487
|
+
this.ensureVolatileContext();
|
|
1488
|
+
this.volatileInFlightMessages.delete(this.volatileSeenKey(message));
|
|
1489
|
+
}
|
|
1490
|
+
publicVolatileMessage(message) {
|
|
1491
|
+
const result = this.stripInternalSenderDeviceFields(message);
|
|
1492
|
+
delete result.seq;
|
|
1493
|
+
return result;
|
|
1494
|
+
}
|
|
1495
|
+
async ackVolatileMessages(messages, v2, advanceCursor) {
|
|
1496
|
+
const cursors = [...new Set(messages
|
|
1497
|
+
.map((item) => String(item.volatile_cursor ?? '').trim())
|
|
1498
|
+
.filter(Boolean))];
|
|
1499
|
+
if (cursors.length === 0)
|
|
1500
|
+
return undefined;
|
|
1501
|
+
const method = v2 ? 'message.v2.ack' : 'message.ack';
|
|
1502
|
+
const result = await this.runtime.client._rpcPipeline.rawCall(method, { volatile_cursors: cursors }, { background: true });
|
|
1503
|
+
if (advanceCursor) {
|
|
1504
|
+
this.ensureVolatileContext();
|
|
1505
|
+
this.volatilePullCursorValue = cursors[cursors.length - 1];
|
|
1506
|
+
}
|
|
1507
|
+
return result;
|
|
1508
|
+
}
|
|
1509
|
+
async publishPlainVolatileMessages(messages, source, advanceCursor) {
|
|
1510
|
+
const processed = [];
|
|
1511
|
+
for (const rawMessage of messages) {
|
|
1512
|
+
const message = this.publicVolatileMessage(rawMessage);
|
|
1513
|
+
const claim = this.beginVolatileDelivery(message);
|
|
1514
|
+
if (claim === 'seen') {
|
|
1515
|
+
processed.push(rawMessage);
|
|
1516
|
+
continue;
|
|
1517
|
+
}
|
|
1518
|
+
if (claim === 'inflight')
|
|
1519
|
+
continue;
|
|
1520
|
+
try {
|
|
1521
|
+
const appEvent = this.p2pAppEventForMessage(message);
|
|
1522
|
+
await this.runtime.client._publishAppEvent(appEvent.event, appEvent.payload, source);
|
|
1523
|
+
this.markVolatileSeen(message);
|
|
1524
|
+
}
|
|
1525
|
+
finally {
|
|
1526
|
+
this.finishVolatileDelivery(message);
|
|
1527
|
+
}
|
|
1528
|
+
processed.push(rawMessage);
|
|
1529
|
+
}
|
|
1530
|
+
if (processed.length > 0)
|
|
1531
|
+
await this.ackVolatileMessages(processed, false, advanceCursor);
|
|
1532
|
+
return processed.map((item) => this.publicVolatileMessage(item));
|
|
1533
|
+
}
|
|
1401
1534
|
messageRecallDedupKey(payload) {
|
|
1402
1535
|
const ids = payload.message_ids;
|
|
1403
1536
|
const idPart = Array.isArray(ids)
|
|
@@ -1757,7 +1890,8 @@ export class MessageDeliveryEngine {
|
|
|
1757
1890
|
? `p2p:${client._aid}`
|
|
1758
1891
|
: '';
|
|
1759
1892
|
const seq = isJsonObject(data) ? positiveSafeSequenceHint(data.seq) : 0;
|
|
1760
|
-
if (client._v2Session && ns && seq > 0 && this.
|
|
1893
|
+
if (client._v2Session && ns && seq > 0 && !this.isVolatileMessage(data)
|
|
1894
|
+
&& this.messageTargetsCurrentInstance(data)) {
|
|
1761
1895
|
client._seqTracker.updateMaxSeen(ns, seq);
|
|
1762
1896
|
}
|
|
1763
1897
|
const hasInlineObject = isJsonObject(data)
|
|
@@ -1799,6 +1933,10 @@ export class MessageDeliveryEngine {
|
|
|
1799
1933
|
if (!this.messageTargetsCurrentInstance(msg)) {
|
|
1800
1934
|
return;
|
|
1801
1935
|
}
|
|
1936
|
+
if (this.isVolatileMessage(msg)) {
|
|
1937
|
+
await this.publishPlainVolatileMessages([msg], 'push', false);
|
|
1938
|
+
return;
|
|
1939
|
+
}
|
|
1802
1940
|
// 新 SDK 的所有带合法 seq P2P Push 都只作为 Head 通知处理。
|
|
1803
1941
|
// 新服务端为兼容旧 SDK 仍可能发送 message.received;V2 会话下必须
|
|
1804
1942
|
// 在旧 seq tracking / ordered publish 之前转入前台 Tail 协调器。
|
|
@@ -3153,6 +3291,10 @@ export class MessageDeliveryEngine {
|
|
|
3153
3291
|
const ns = client._aid ? `p2p:${client._aid}` : '';
|
|
3154
3292
|
if (!ns)
|
|
3155
3293
|
return;
|
|
3294
|
+
if (this.isVolatileMessage(data)) {
|
|
3295
|
+
await client._v2E2EE.publishV2VolatileMessages([data], 'push', false);
|
|
3296
|
+
return;
|
|
3297
|
+
}
|
|
3156
3298
|
if (isJsonObject(data) && String(data.kind ?? '').trim() === 'message.online_unread_hint') {
|
|
3157
3299
|
if (client._sessionOptions?.background_sync === false)
|
|
3158
3300
|
return;
|