@agentunion/fastaun-browser 0.4.12 → 0.5.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.
- package/CHANGELOG.md +480 -359
- package/_packed_docs/CHANGELOG.md +480 -359
- package/_packed_docs/INDEX.md +111 -53
- package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
- package/_packed_docs/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
- package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
- package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
- package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
- package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +2 -0
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +2 -0
- package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +2 -0
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +2 -0
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
- package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
- package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
- package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
- package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/README.md +2 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/protocol/aun-docs-guide.md +2 -0
- package/_packed_docs/protocol/index.md +3 -1
- package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
- package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
- package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
- package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
- package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-payload-reference.md +2 -0
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
- package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
- package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +2 -0
- package/_packed_docs/sdk/INDEX.md +46 -29
- package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/sdk/README.md +17 -15
- package/dist/aid-store.d.ts +25 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +89 -8
- package/dist/aid-store.js.map +1 -1
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +98 -9
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +19156 -16554
- package/dist/client/delivery.d.ts +5 -0
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +169 -15
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +76 -34
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +67 -8
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +31 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +313 -23
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +39 -0
- package/dist/collab/client.d.ts.map +1 -0
- package/dist/collab/client.js +124 -0
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/errors.d.ts +16 -0
- package/dist/collab/errors.d.ts.map +1 -0
- package/dist/collab/errors.js +60 -0
- package/dist/collab/errors.js.map +1 -0
- package/dist/collab/index.d.ts +4 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +4 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/types.d.ts +111 -0
- package/dist/collab/types.d.ts.map +1 -0
- package/dist/collab/types.js +2 -0
- package/dist/collab/types.js.map +1 -0
- package/dist/crypto.d.ts +6 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +6 -0
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -1
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +89 -0
- package/dist/facades.d.ts.map +1 -0
- package/dist/facades.js +228 -0
- package/dist/facades.js.map +1 -0
- package/dist/group-fs.d.ts +103 -0
- package/dist/group-fs.d.ts.map +1 -0
- package/dist/group-fs.js +496 -0
- package/dist/group-fs.js.map +1 -0
- package/dist/group-resources.d.ts +98 -0
- package/dist/group-resources.d.ts.map +1 -0
- package/dist/group-resources.js +635 -0
- package/dist/group-resources.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/register-flow.d.ts +1 -0
- package/dist/register-flow.d.ts.map +1 -1
- package/dist/register-flow.js +3 -0
- package/dist/register-flow.js.map +1 -1
- package/dist/service-proxy.d.ts +1 -0
- package/dist/service-proxy.d.ts.map +1 -1
- package/dist/service-proxy.js +15 -3
- package/dist/service-proxy.js.map +1 -1
- package/dist/storage/errors.d.ts +28 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +65 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lowlevel.d.ts +314 -0
- package/dist/storage/lowlevel.d.ts.map +1 -0
- package/dist/storage/lowlevel.js +460 -0
- package/dist/storage/lowlevel.js.map +1 -0
- package/dist/storage/types.d.ts +59 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +113 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/vfs.d.ts +144 -0
- package/dist/storage/vfs.d.ts.map +1 -0
- package/dist/storage/vfs.js +403 -0
- package/dist/storage/vfs.js.map +1 -0
- package/dist/tools/cross-sdk-agent.d.ts +3 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
- package/dist/tools/cross-sdk-agent.js +1089 -0
- package/dist/tools/cross-sdk-agent.js.map +1 -0
- package/dist/transport.d.ts +3 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +33 -13
- package/dist/transport.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +44 -44
|
@@ -6,6 +6,8 @@ export declare class MessageDeliveryEngine {
|
|
|
6
6
|
constructor(runtime: ClientRuntime);
|
|
7
7
|
prunePushedSeqs(ns: string): void;
|
|
8
8
|
markPublishedSeq(ns: string, seq: number): void;
|
|
9
|
+
fireGroupEventAck(groupId: string, ns: string, eventSeq: number, label: string): void;
|
|
10
|
+
fireGroupV2Ack(groupId: string, ns: string, seq: number, label: string): void;
|
|
9
11
|
enqueueOrderedMessage(ns: string, event: string, seq: number, payload: EventPayload): void;
|
|
10
12
|
isGroupEventNamespace(ns: string): boolean;
|
|
11
13
|
publishOrderedQueueItem(ns: string, event: string, seq: number, payload: EventPayload): Promise<void>;
|
|
@@ -13,10 +15,13 @@ export declare class MessageDeliveryEngine {
|
|
|
13
15
|
isInstanceScopedMessageEvent(event: string): boolean;
|
|
14
16
|
attachCurrentInstanceContext(payload: EventPayload): EventPayload;
|
|
15
17
|
normalizePublishedMessagePayload(event: string, payload: EventPayload): EventPayload;
|
|
18
|
+
private envelopeMetadata;
|
|
16
19
|
appMessageEnvelope(payload: EventPayload): JsonObject;
|
|
17
20
|
isGroupScopedEvent(event: string): boolean;
|
|
18
21
|
appGroupEventEnvelope(payload: EventPayload): JsonObject;
|
|
19
22
|
attachAppMessageEnvelope(payload: EventPayload): EventPayload;
|
|
23
|
+
sendResultEnvelope(method: string, params: RpcParams, result: unknown, encrypted: boolean): JsonObject;
|
|
24
|
+
attachSendResultEnvelope(method: string, params: RpcParams, result: unknown, encrypted: boolean): unknown;
|
|
20
25
|
attachAppGroupEventEnvelope(payload: EventPayload): EventPayload;
|
|
21
26
|
stripInternalSenderDeviceFields(payload: EventPayload): EventPayload;
|
|
22
27
|
recallEventFromMessage(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,EAAgB,KAAK,UAAU,EAAkB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1G,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
|
@@ -5,11 +5,17 @@ const PUSHED_SEQS_LIMIT = 50_000;
|
|
|
5
5
|
const PENDING_ORDERED_LIMIT = 50_000;
|
|
6
6
|
const GROUP_RECALL_SEEN_LIMIT = 10_000;
|
|
7
7
|
const APP_MESSAGE_ENVELOPE_KEYS = [
|
|
8
|
-
'module_id', '
|
|
8
|
+
'module_id', 'message_type', 'type', 'kind', 'version',
|
|
9
9
|
'from', 'from_aid', 'sender_aid', 'to', 'to_aid', 'group_id',
|
|
10
|
-
'timestamp', 'created_at', '
|
|
11
|
-
'
|
|
10
|
+
'timestamp', 'created_at', 'encrypted',
|
|
11
|
+
'context', 'protected_headers', 'headers', 'payload_type',
|
|
12
12
|
];
|
|
13
|
+
const APP_SEND_ENVELOPE_METHODS = new Set([
|
|
14
|
+
'message.send',
|
|
15
|
+
'group.send',
|
|
16
|
+
'message.thought.put',
|
|
17
|
+
'group.thought.put',
|
|
18
|
+
]);
|
|
13
19
|
const APP_GROUP_EVENT_ENVELOPE_KEYS = [
|
|
14
20
|
'module_id', 'event_id', 'event_seq', 'seq', 'event_type', 'action', 'group_id',
|
|
15
21
|
'actor_aid', 'sender_aid', 'member_aid', 'target_aid', 'operator_aid',
|
|
@@ -46,6 +52,34 @@ export class MessageDeliveryEngine {
|
|
|
46
52
|
client._pushedSeqs.set(ns, new Set(keep));
|
|
47
53
|
}
|
|
48
54
|
}
|
|
55
|
+
fireGroupEventAck(groupId, ns, eventSeq, label) {
|
|
56
|
+
const client = this.runtime.client;
|
|
57
|
+
const ackSeq = this.clampAckSeq('group.ack_events', 'event_seq', ns, eventSeq);
|
|
58
|
+
if (ackSeq <= 0)
|
|
59
|
+
return;
|
|
60
|
+
void client.call('group.ack_events', {
|
|
61
|
+
group_id: groupId,
|
|
62
|
+
event_seq: ackSeq,
|
|
63
|
+
device_id: client._deviceId,
|
|
64
|
+
slot_id: client._slotId,
|
|
65
|
+
_rpc_background: true,
|
|
66
|
+
}).catch((e) => {
|
|
67
|
+
client._clientLog.warn(`${label} failed: group=${groupId}`, e);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
fireGroupV2Ack(groupId, ns, seq, label) {
|
|
71
|
+
const client = this.runtime.client;
|
|
72
|
+
const ackSeq = this.clampAckSeq('group.v2.ack', 'up_to_seq', ns, seq);
|
|
73
|
+
if (ackSeq <= 0)
|
|
74
|
+
return;
|
|
75
|
+
void client._callRawV2Rpc('group.v2.ack', {
|
|
76
|
+
group_id: groupId,
|
|
77
|
+
up_to_seq: ackSeq,
|
|
78
|
+
_rpc_background: true,
|
|
79
|
+
}).catch((e) => {
|
|
80
|
+
client._clientLog.debug(`${label} failed: group=${groupId} seq=${ackSeq} err=${String(e)}`);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
49
83
|
enqueueOrderedMessage(ns, event, seq, payload) {
|
|
50
84
|
const client = this.runtime.client;
|
|
51
85
|
let queue = client._pendingOrderedMsgs.get(ns);
|
|
@@ -114,15 +148,62 @@ export class MessageDeliveryEngine {
|
|
|
114
148
|
}
|
|
115
149
|
return payload;
|
|
116
150
|
}
|
|
151
|
+
envelopeMetadata(value) {
|
|
152
|
+
let source = value;
|
|
153
|
+
if (source && typeof source === 'object') {
|
|
154
|
+
const maybeHeaders = source;
|
|
155
|
+
if (typeof maybeHeaders.toObject === 'function')
|
|
156
|
+
source = maybeHeaders.toObject();
|
|
157
|
+
}
|
|
158
|
+
if (!isJsonObject(source))
|
|
159
|
+
return undefined;
|
|
160
|
+
const out = {};
|
|
161
|
+
for (const [key, item] of Object.entries(source)) {
|
|
162
|
+
if (key === '_auth')
|
|
163
|
+
continue;
|
|
164
|
+
out[key] = item;
|
|
165
|
+
}
|
|
166
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
167
|
+
}
|
|
117
168
|
appMessageEnvelope(payload) {
|
|
118
169
|
if (!isJsonObject(payload))
|
|
119
170
|
return {};
|
|
120
171
|
const message = payload;
|
|
172
|
+
const body = isJsonObject(message.payload) ? message.payload : {};
|
|
121
173
|
const envelope = {};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
174
|
+
const firstValue = (...values) => {
|
|
175
|
+
for (const value of values) {
|
|
176
|
+
if (value === undefined || value === null)
|
|
177
|
+
continue;
|
|
178
|
+
if (typeof value === 'string' && !value.trim())
|
|
179
|
+
continue;
|
|
180
|
+
return value;
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
};
|
|
184
|
+
const setIfPresent = (key, value) => {
|
|
185
|
+
if (value === undefined || value === null)
|
|
186
|
+
return;
|
|
187
|
+
if (typeof value === 'string' && !value.trim())
|
|
188
|
+
return;
|
|
189
|
+
envelope[key] = value;
|
|
190
|
+
};
|
|
191
|
+
setIfPresent('from', firstValue(message.from, message.from_aid, message.sender_aid));
|
|
192
|
+
setIfPresent('to', firstValue(message.to, message.to_aid));
|
|
193
|
+
setIfPresent('group_id', message.group_id);
|
|
194
|
+
setIfPresent('type', firstValue(body.type, message.type, message.message_type, message.payload_type));
|
|
195
|
+
setIfPresent('kind', firstValue(body.kind, message.kind));
|
|
196
|
+
setIfPresent('version', firstValue(body.version, message.version));
|
|
197
|
+
setIfPresent('timestamp', firstValue(message.timestamp, message.created_at, message.t_server));
|
|
198
|
+
if ('encrypted' in message)
|
|
199
|
+
envelope.encrypted = Boolean(message.encrypted);
|
|
200
|
+
const context = this.envelopeMetadata(message.context);
|
|
201
|
+
if (context)
|
|
202
|
+
envelope.context = context;
|
|
203
|
+
const protectedHeaders = this.envelopeMetadata(message.protected_headers) ?? this.envelopeMetadata(message.headers);
|
|
204
|
+
if (protectedHeaders)
|
|
205
|
+
envelope.protected_headers = protectedHeaders;
|
|
206
|
+
setIfPresent('payload_type', firstValue(message.payload_type, protectedHeaders?.payload_type));
|
|
126
207
|
return envelope;
|
|
127
208
|
}
|
|
128
209
|
isGroupScopedEvent(event) {
|
|
@@ -147,6 +228,63 @@ export class MessageDeliveryEngine {
|
|
|
147
228
|
result.envelope = this.appMessageEnvelope(result);
|
|
148
229
|
return result;
|
|
149
230
|
}
|
|
231
|
+
sendResultEnvelope(method, params, result, encrypted) {
|
|
232
|
+
if (!APP_SEND_ENVELOPE_METHODS.has(method))
|
|
233
|
+
return {};
|
|
234
|
+
const body = isJsonObject(params.payload) ? params.payload : {};
|
|
235
|
+
const resultObj = isJsonObject(result) ? result : {};
|
|
236
|
+
const envelope = {};
|
|
237
|
+
const firstValue = (...values) => {
|
|
238
|
+
for (const value of values) {
|
|
239
|
+
if (value === undefined || value === null)
|
|
240
|
+
continue;
|
|
241
|
+
if (typeof value === 'string' && !value.trim())
|
|
242
|
+
continue;
|
|
243
|
+
return value;
|
|
244
|
+
}
|
|
245
|
+
return undefined;
|
|
246
|
+
};
|
|
247
|
+
const setIfPresent = (key, value) => {
|
|
248
|
+
if (value === undefined || value === null)
|
|
249
|
+
return;
|
|
250
|
+
if (typeof value === 'string' && !value.trim())
|
|
251
|
+
return;
|
|
252
|
+
envelope[key] = value;
|
|
253
|
+
};
|
|
254
|
+
setIfPresent('from', this.runtime.client._aid);
|
|
255
|
+
if (method.startsWith('message.')) {
|
|
256
|
+
setIfPresent('to', params.to);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
setIfPresent('group_id', params.group_id);
|
|
260
|
+
}
|
|
261
|
+
setIfPresent('type', firstValue(body.type, params.type, params.message_type, params.payload_type));
|
|
262
|
+
setIfPresent('kind', firstValue(body.kind, params.kind));
|
|
263
|
+
setIfPresent('version', firstValue(body.version, params.version));
|
|
264
|
+
setIfPresent('timestamp', firstValue(params.timestamp, resultObj.timestamp, resultObj.created_at, resultObj.t_server, Date.now()));
|
|
265
|
+
envelope.encrypted = Boolean(encrypted);
|
|
266
|
+
const context = this.envelopeMetadata(params.context);
|
|
267
|
+
if (context)
|
|
268
|
+
envelope.context = context;
|
|
269
|
+
const protectedHeaders = this.envelopeMetadata(params.protected_headers) ?? this.envelopeMetadata(params.headers);
|
|
270
|
+
if (protectedHeaders)
|
|
271
|
+
envelope.protected_headers = protectedHeaders;
|
|
272
|
+
setIfPresent('payload_type', firstValue(params.payload_type, protectedHeaders?.payload_type, body.type));
|
|
273
|
+
return envelope;
|
|
274
|
+
}
|
|
275
|
+
attachSendResultEnvelope(method, params, result, encrypted) {
|
|
276
|
+
if (!APP_SEND_ENVELOPE_METHODS.has(method) || !isJsonObject(result))
|
|
277
|
+
return result;
|
|
278
|
+
const out = { ...result };
|
|
279
|
+
out.envelope = this.sendResultEnvelope(method, params, out, encrypted);
|
|
280
|
+
if ('payload' in params) {
|
|
281
|
+
out.payload = params.payload;
|
|
282
|
+
}
|
|
283
|
+
else if ('content' in params) {
|
|
284
|
+
out.payload = params.content;
|
|
285
|
+
}
|
|
286
|
+
return out;
|
|
287
|
+
}
|
|
150
288
|
attachAppGroupEventEnvelope(payload) {
|
|
151
289
|
if (!isJsonObject(payload))
|
|
152
290
|
return payload;
|
|
@@ -368,6 +506,7 @@ export class MessageDeliveryEngine {
|
|
|
368
506
|
msg_seq: ackSeq,
|
|
369
507
|
device_id: client._deviceId,
|
|
370
508
|
slot_id: client._slotId,
|
|
509
|
+
_rpc_background: true,
|
|
371
510
|
}).catch((e) => { client._clientLog.warn('group recall auto-ack failed: group=' + groupId, e); });
|
|
372
511
|
}
|
|
373
512
|
if (contig !== contigBefore)
|
|
@@ -454,6 +593,7 @@ export class MessageDeliveryEngine {
|
|
|
454
593
|
seq: ackSeq,
|
|
455
594
|
device_id: client._deviceId,
|
|
456
595
|
slot_id: client._slotId,
|
|
596
|
+
_rpc_background: true,
|
|
457
597
|
}).catch((e) => { client._clientLog.warn(`P2P auto-ack failed:${String(e)}`); });
|
|
458
598
|
}
|
|
459
599
|
if (contigAfter !== contigBefore)
|
|
@@ -531,6 +671,7 @@ export class MessageDeliveryEngine {
|
|
|
531
671
|
msg_seq: ackSeq,
|
|
532
672
|
device_id: client._deviceId,
|
|
533
673
|
slot_id: client._slotId,
|
|
674
|
+
_rpc_background: true,
|
|
534
675
|
}).catch((e) => { client._clientLog.warn('group recall auto-ack failed: group=' + groupId, e); });
|
|
535
676
|
}
|
|
536
677
|
if (contigAfter !== contigBefore)
|
|
@@ -553,6 +694,7 @@ export class MessageDeliveryEngine {
|
|
|
553
694
|
msg_seq: ackSeq,
|
|
554
695
|
device_id: client._deviceId,
|
|
555
696
|
slot_id: client._slotId,
|
|
697
|
+
_rpc_background: true,
|
|
556
698
|
}).catch((e) => { client._clientLog.warn('group message auto-ack failed: group=' + groupId, e); });
|
|
557
699
|
}
|
|
558
700
|
if (contigAfter !== contigBefore)
|
|
@@ -596,7 +738,7 @@ export class MessageDeliveryEngine {
|
|
|
596
738
|
const afterSeq = client._seqTracker.getContiguousSeq(ns);
|
|
597
739
|
try {
|
|
598
740
|
if (client._v2Session) {
|
|
599
|
-
await client._pullGroupV2Internal({ group_id: groupId, after_seq: afterSeq, limit: 50 });
|
|
741
|
+
await client._withBackgroundRpc(() => client._pullGroupV2Internal({ group_id: groupId, after_seq: afterSeq, limit: 50 }));
|
|
600
742
|
return;
|
|
601
743
|
}
|
|
602
744
|
const result = await client.call('group.pull', {
|
|
@@ -604,6 +746,7 @@ export class MessageDeliveryEngine {
|
|
|
604
746
|
after_message_seq: afterSeq,
|
|
605
747
|
device_id: client._deviceId,
|
|
606
748
|
limit: 50,
|
|
749
|
+
_rpc_background: true,
|
|
607
750
|
});
|
|
608
751
|
if (isJsonObject(result)) {
|
|
609
752
|
const messages = result.messages;
|
|
@@ -657,7 +800,7 @@ export class MessageDeliveryEngine {
|
|
|
657
800
|
this.runtime.delivery.setGapFillActive(true);
|
|
658
801
|
let filled = 0;
|
|
659
802
|
try {
|
|
660
|
-
const messages = await client._pullV2(afterSeq, 50);
|
|
803
|
+
const messages = await client._withBackgroundRpc(() => client._pullV2(afterSeq, 50));
|
|
661
804
|
filled = messages.length;
|
|
662
805
|
this.prunePushedSeqs(ns);
|
|
663
806
|
}
|
|
@@ -688,7 +831,7 @@ export class MessageDeliveryEngine {
|
|
|
688
831
|
this.runtime.delivery.setGapFillActive(true);
|
|
689
832
|
let filled = 0;
|
|
690
833
|
try {
|
|
691
|
-
const messages = await client._pullGroupV2(groupId, afterSeq, 50);
|
|
834
|
+
const messages = await client._withBackgroundRpc(() => client._pullGroupV2(groupId, afterSeq, 50));
|
|
692
835
|
filled = messages.length;
|
|
693
836
|
this.prunePushedSeqs(ns);
|
|
694
837
|
}
|
|
@@ -725,6 +868,7 @@ export class MessageDeliveryEngine {
|
|
|
725
868
|
after_event_seq: nextAfterSeq,
|
|
726
869
|
device_id: client._deviceId,
|
|
727
870
|
limit: 50,
|
|
871
|
+
_rpc_background: true,
|
|
728
872
|
});
|
|
729
873
|
if (!isJsonObject(result))
|
|
730
874
|
return;
|
|
@@ -783,6 +927,7 @@ export class MessageDeliveryEngine {
|
|
|
783
927
|
event_seq: ackSeq,
|
|
784
928
|
device_id: client._deviceId,
|
|
785
929
|
slot_id: client._slotId,
|
|
930
|
+
_rpc_background: true,
|
|
786
931
|
}).catch((e) => { client._clientLog.warn('group event auto-ack failed: group=' + groupId, e); });
|
|
787
932
|
}
|
|
788
933
|
const nextAfter = Math.max(eventSeqs.length > 0 ? Math.max(...eventSeqs) : nextAfterSeq, nextAfterSeq);
|
|
@@ -821,8 +966,15 @@ export class MessageDeliveryEngine {
|
|
|
821
966
|
}
|
|
822
967
|
}
|
|
823
968
|
const contigBefore = client._seqTracker.getContiguousSeq(ns);
|
|
824
|
-
|
|
969
|
+
const publishedDuplicate = client._pushedSeqs.get(ns)?.has(eventSeq) === true;
|
|
970
|
+
if (eventSeq <= contigBefore || publishedDuplicate) {
|
|
825
971
|
client._clientLog.debug(`group.changed skipped duplicate/stale: group=${groupId}, event_seq=${eventSeq}, contiguous=${contigBefore}`);
|
|
972
|
+
if (eventSeq <= contigBefore) {
|
|
973
|
+
this.fireGroupEventAck(groupId, ns, eventSeq, 'group event covered push ack');
|
|
974
|
+
}
|
|
975
|
+
else if (contigBefore > 0) {
|
|
976
|
+
this.fireGroupEventAck(groupId, ns, contigBefore, 'group event covered push ack');
|
|
977
|
+
}
|
|
826
978
|
return;
|
|
827
979
|
}
|
|
828
980
|
this.enqueueOrderedMessage(ns, 'group.changed', eventSeq, data);
|
|
@@ -838,6 +990,7 @@ export class MessageDeliveryEngine {
|
|
|
838
990
|
event_seq: ackSeq,
|
|
839
991
|
device_id: client._deviceId,
|
|
840
992
|
slot_id: client._slotId,
|
|
993
|
+
_rpc_background: true,
|
|
841
994
|
}).catch((e) => {
|
|
842
995
|
client._clientLog.warn('group event push auto-ack failed: group=' + groupId, e);
|
|
843
996
|
});
|
|
@@ -938,8 +1091,9 @@ export class MessageDeliveryEngine {
|
|
|
938
1091
|
const ns = `group:${groupId}`;
|
|
939
1092
|
client._seqTracker.updateMaxSeen(ns, seq);
|
|
940
1093
|
const contigBefore = client._seqTracker.getContiguousSeq(ns);
|
|
941
|
-
if (contigBefore === seq) {
|
|
1094
|
+
if (contigBefore === seq || (eventKind === 'group.online_unread_hint' && contigBefore > seq)) {
|
|
942
1095
|
client._clientLog.debug(`_onRawGroupV2MessageCreated duplicate push already covered: group=${groupId} seq=${seq}`);
|
|
1096
|
+
this.fireGroupV2Ack(groupId, ns, seq, 'group v2 covered push ack');
|
|
943
1097
|
return;
|
|
944
1098
|
}
|
|
945
1099
|
const afterSeq = client._repairPushContiguousBound(ns, seq, false, '_raw.group.v2.message_created');
|
|
@@ -951,7 +1105,7 @@ export class MessageDeliveryEngine {
|
|
|
951
1105
|
client._gapFillDone.add(dedupKey);
|
|
952
1106
|
try {
|
|
953
1107
|
client._clientLog.debug(`_onRawGroupV2MessageCreated -> group.v2.pull group=${groupId} after_seq=${afterSeq}`);
|
|
954
|
-
const messages = await client._pullGroupV2(groupId, afterSeq, 50);
|
|
1108
|
+
const messages = await client._withBackgroundRpc(() => client._pullGroupV2(groupId, afterSeq, 50));
|
|
955
1109
|
client._clientLog.debug(`_onRawGroupV2MessageCreated pulled ${messages.length} msgs for group=${groupId}`);
|
|
956
1110
|
}
|
|
957
1111
|
finally {
|
|
@@ -998,7 +1152,7 @@ export class MessageDeliveryEngine {
|
|
|
998
1152
|
if (newContig > 0 && newContig !== contigBefore) {
|
|
999
1153
|
const ackSeq = this.clampAckSeq('message.v2.ack', 'up_to_seq', ns, newContig);
|
|
1000
1154
|
try {
|
|
1001
|
-
await client._callRawV2Rpc('message.v2.ack', { up_to_seq: ackSeq });
|
|
1155
|
+
await client._callRawV2Rpc('message.v2.ack', { up_to_seq: ackSeq, _rpc_background: true });
|
|
1002
1156
|
}
|
|
1003
1157
|
catch (e) {
|
|
1004
1158
|
client._clientLog.debug(`V2 P2P push-ack failed: ${e}`);
|
|
@@ -1028,7 +1182,7 @@ export class MessageDeliveryEngine {
|
|
|
1028
1182
|
try {
|
|
1029
1183
|
do {
|
|
1030
1184
|
this.runtime.delivery.setV2PullPending(false);
|
|
1031
|
-
await client._pullV2();
|
|
1185
|
+
await client._withBackgroundRpc(() => client._pullV2());
|
|
1032
1186
|
const newContig = ns ? client._seqTracker.getContiguousSeq(ns) : -1;
|
|
1033
1187
|
client._clientLog.debug(`_onV2PushNotification pull done: contiguous_seq=${contigBefore}->${newContig} (push_seq=${pushSeq || 'null'})`);
|
|
1034
1188
|
} while (client._v2PullPending);
|