@agentunion/fastaun 0.5.19 → 0.5.21
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 +176 -78
- package/_packed_docs/CHANGELOG.md +176 -78
- package/_packed_docs/INDEX.md +288 -269
- package/_packed_docs/KITE_DOCS_GUIDE.md +101 -95
- package/_packed_docs/agent.md/SCHEMA.md +7 -7
- package/_packed_docs/agent.md/working/AID/347/261/273/345/236/213-owner/345/205/263/347/263/273/344/270/216/346/215/242owner/347/274/226/346/216/222/346/226/271/346/241/210.md +530 -0
- package/_packed_docs/agent.md/working/AID/347/261/273/345/236/213-owner/345/205/263/347/263/273/345/256/214/346/225/264/350/256/276/350/256/241/344/270/216/345/256/236/346/226/275/350/256/241/345/210/222.md +685 -0
- package/_packed_docs/agent.md/working/agent.md-schema/344/270/216/347/255/276/345/217/221/351/252/214/347/255/276/346/265/201/347/250/213/346/276/204/346/270/205.md +349 -0
- package/_packed_docs/agent.md/working//346/234/254/345/234/260Docker/346/265/213/350/257/225Bug/346/270/205/345/215/225.md +40 -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 +11 -11
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +372 -331
- package/_packed_docs/protocol/08-AUN-E2EE.md +17 -12
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +676 -676
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +8 -12
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +445 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +666 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +1 -1
- package/_packed_docs/sdk/0.5.21-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +368 -0
- package/_packed_docs/sdk/0.5.21-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +350 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +5 -1
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +64 -64
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +70 -63
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +43 -40
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +179 -19
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +50 -49
- package/_packed_docs/sdk/09-group-rpc-manual.md +261 -254
- package/_packed_docs/sdk/09-message-rpc-manual.md +253 -160
- package/_packed_docs/sdk/09-storage-rpc-manual.md +18 -26
- package/_packed_docs/sdk/09-/345/207/255/350/257/201/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +71 -0
- package/_packed_docs/sdk/09-/347/273/204/347/273/207/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +88 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +105 -92
- package/_packed_docs/sdk/INDEX.md +197 -167
- package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +930 -0
- package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +363 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +553 -0
- package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +480 -0
- package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
- package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
- package/dist/agent-md-schema.d.ts +13 -1
- package/dist/agent-md-schema.js +63 -33
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +30 -3
- package/dist/agent-md.js +293 -152
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +42 -0
- package/dist/aid-store.js +224 -44
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.js +18 -13
- package/dist/aid.js.map +1 -1
- package/dist/auth.js +78 -2
- package/dist/auth.js.map +1 -1
- package/dist/cert-utils.d.ts +44 -1
- package/dist/cert-utils.js +157 -56
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +68 -1
- package/dist/client/delivery.js +1196 -135
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +5 -1
- package/dist/client/rpc-pipeline.js +240 -111
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +12 -2
- package/dist/client/v2-e2ee.js +842 -379
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +26 -2
- package/dist/client.js +420 -75
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/events.d.ts +23 -4
- package/dist/events.js +171 -15
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +43 -1
- package/dist/facades.js +368 -12
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/aid-db.d.ts +7 -2
- package/dist/keystore/aid-db.js +194 -43
- package/dist/keystore/aid-db.js.map +1 -1
- package/dist/keystore/index.d.ts +15 -1
- package/dist/keystore/local-token-store.d.ts +10 -2
- package/dist/keystore/local-token-store.js +81 -16
- package/dist/keystore/local-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +45 -0
- package/dist/org-protocol.js +829 -22
- package/dist/org-protocol.js.map +1 -1
- package/dist/ownership-v21.d.ts +40 -9
- package/dist/ownership-v21.js +174 -79
- package/dist/ownership-v21.js.map +1 -1
- package/dist/ownership-workflow.d.ts +22 -0
- package/dist/ownership-workflow.js +861 -66
- package/dist/ownership-workflow.js.map +1 -1
- package/dist/secret-store/file-store.js +84 -0
- package/dist/secret-store/file-store.js.map +1 -1
- package/dist/seq-tracker.d.ts +1 -0
- package/dist/seq-tracker.js +2 -2
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +67 -3
- package/dist/tools/cross-sdk-agent.js +575 -42
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +4 -0
- package/dist/transport.js +108 -44
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/v2/e2ee/encrypt-group.js +1 -0
- package/dist/v2/e2ee/encrypt-group.js.map +1 -1
- package/dist/v2/e2ee/encrypt-p2p.js +1 -0
- package/dist/v2/e2ee/encrypt-p2p.js.map +1 -1
- package/dist/v2/e2ee/types.d.ts +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/transport.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export declare class RPCTransport {
|
|
|
55
55
|
private _backgroundRpcQueue;
|
|
56
56
|
private _drainingRpcQueue;
|
|
57
57
|
_onForegroundDrained?: () => void;
|
|
58
|
+
_onRpcResponse?: () => void;
|
|
58
59
|
private _sendChain;
|
|
59
60
|
private _idCounter;
|
|
60
61
|
private _metaObserver;
|
|
@@ -107,6 +108,7 @@ export declare class RPCTransport {
|
|
|
107
108
|
setMetaObserver(observer: MetaObserver | null): void;
|
|
108
109
|
setProtocolMetaObserver(observer: MetaObserver | null): void;
|
|
109
110
|
setProtocolDisconnectCallback(callback: DisconnectCallback | null): void;
|
|
111
|
+
getTraceMode(): string;
|
|
110
112
|
/** 设置 trace 模式:off / log / diag */
|
|
111
113
|
setTraceMode(mode: string): void;
|
|
112
114
|
/** 注册 trace observer;observer(traceInfo) 在每次 RPC/事件携带 _trace 时调用。 */
|
|
@@ -141,6 +143,8 @@ export declare class RPCTransport {
|
|
|
141
143
|
* 发送 JSON-RPC 2.0 请求并等待响应。
|
|
142
144
|
*/
|
|
143
145
|
call(method: string, params?: RpcParams, timeout?: number, trace?: string, background?: boolean): Promise<RpcResult>;
|
|
146
|
+
private _callWithSent;
|
|
147
|
+
private _call;
|
|
144
148
|
private _callLocal;
|
|
145
149
|
/** 发送 JSON-RPC 2.0 Notification,不分配 id,也不等待响应。 */
|
|
146
150
|
notify(method: string, params?: RpcParams | null): Promise<void>;
|
package/dist/transport.js
CHANGED
|
@@ -571,6 +571,7 @@ export class RPCTransport {
|
|
|
571
571
|
_backgroundRpcQueue = [];
|
|
572
572
|
_drainingRpcQueue = false;
|
|
573
573
|
_onForegroundDrained;
|
|
574
|
+
_onRpcResponse;
|
|
574
575
|
_sendChain = Promise.resolve();
|
|
575
576
|
_idCounter = 0;
|
|
576
577
|
// Gateway 在 RPC envelope 注入 _meta 字段(与 result 同级),由 client 层 observer 接收。
|
|
@@ -682,6 +683,11 @@ export class RPCTransport {
|
|
|
682
683
|
this._onForegroundDrained?.();
|
|
683
684
|
return;
|
|
684
685
|
}
|
|
686
|
+
if (message.type === 'rpc_response') {
|
|
687
|
+
if (this._workerConnected && message.generation === this._workerGeneration)
|
|
688
|
+
this._onRpcResponse?.();
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
685
691
|
if (!message.id)
|
|
686
692
|
return;
|
|
687
693
|
const pending = this._workerPending.get(message.id);
|
|
@@ -707,6 +713,12 @@ export class RPCTransport {
|
|
|
707
713
|
pending.reject(new ConnectionError('stale transport worker response'));
|
|
708
714
|
return;
|
|
709
715
|
}
|
|
716
|
+
if (message.type === 'sent') {
|
|
717
|
+
const onSent = pending.onSent;
|
|
718
|
+
delete pending.onSent;
|
|
719
|
+
void onSent?.();
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
710
722
|
this._workerPending.delete(message.id);
|
|
711
723
|
if (pending.timer !== null)
|
|
712
724
|
clearTimeout(pending.timer);
|
|
@@ -714,15 +726,22 @@ export class RPCTransport {
|
|
|
714
726
|
&& message.ok && typeof message.generation === 'number') {
|
|
715
727
|
this._workerGeneration = message.generation;
|
|
716
728
|
}
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
this.
|
|
722
|
-
|
|
729
|
+
const settleReply = () => {
|
|
730
|
+
if (message.ok)
|
|
731
|
+
pending.resolve(message.result);
|
|
732
|
+
else {
|
|
733
|
+
if (pending.commandType === 'connect' && pending.connectAttempt === this._workerConnectAttempt) {
|
|
734
|
+
this._workerGeneration = null;
|
|
735
|
+
this._workerBufferedEvents = [];
|
|
736
|
+
}
|
|
737
|
+
pending.reject(deserializeWorkerError(message.error));
|
|
723
738
|
}
|
|
724
|
-
|
|
739
|
+
};
|
|
740
|
+
if (pending.sentCheckpoint && (message.ok || !pending.onSent)) {
|
|
741
|
+
void pending.sentCheckpoint.then(settleReply, pending.reject);
|
|
725
742
|
}
|
|
743
|
+
else
|
|
744
|
+
settleReply();
|
|
726
745
|
});
|
|
727
746
|
worker.on('error', (error) => {
|
|
728
747
|
this._disableNetworkWorker(worker, error);
|
|
@@ -861,7 +880,7 @@ export class RPCTransport {
|
|
|
861
880
|
for (const message of buffered)
|
|
862
881
|
this._handleWorkerEvent(message);
|
|
863
882
|
}
|
|
864
|
-
_workerCommand(command, connectAttempt) {
|
|
883
|
+
_workerCommand(command, connectAttempt, onSent, sentCheckpoint) {
|
|
865
884
|
this._ensureNetworkWorker();
|
|
866
885
|
if (!this._worker)
|
|
867
886
|
return Promise.reject(new ConnectionError('transport worker unavailable'));
|
|
@@ -892,6 +911,8 @@ export class RPCTransport {
|
|
|
892
911
|
timer,
|
|
893
912
|
commandType: command.type,
|
|
894
913
|
connectAttempt,
|
|
914
|
+
onSent,
|
|
915
|
+
sentCheckpoint,
|
|
895
916
|
});
|
|
896
917
|
const postCommand = () => {
|
|
897
918
|
if (!this._workerPending.has(id))
|
|
@@ -981,6 +1002,9 @@ export class RPCTransport {
|
|
|
981
1002
|
this._onDisconnect = callback;
|
|
982
1003
|
this._protocolDisconnectCallback = callback !== null;
|
|
983
1004
|
}
|
|
1005
|
+
getTraceMode() {
|
|
1006
|
+
return this._traceMode;
|
|
1007
|
+
}
|
|
984
1008
|
/** 设置 trace 模式:off / log / diag */
|
|
985
1009
|
setTraceMode(mode) {
|
|
986
1010
|
if (mode !== 'off' && mode !== 'log' && mode !== 'diag') {
|
|
@@ -1482,12 +1506,34 @@ export class RPCTransport {
|
|
|
1482
1506
|
* 发送 JSON-RPC 2.0 请求并等待响应。
|
|
1483
1507
|
*/
|
|
1484
1508
|
call(method, params, timeout, trace, background = false) {
|
|
1509
|
+
return this._call(method, params, timeout, trace, background);
|
|
1510
|
+
}
|
|
1511
|
+
_callWithSent(method, params, onSent, timeout, trace, background = false) {
|
|
1512
|
+
let resolveSent;
|
|
1513
|
+
let rejectSent;
|
|
1514
|
+
const sent = new Promise((resolve, reject) => { resolveSent = resolve; rejectSent = reject; });
|
|
1515
|
+
let request;
|
|
1516
|
+
const recordSent = async () => {
|
|
1517
|
+
try {
|
|
1518
|
+
await onSent();
|
|
1519
|
+
resolveSent();
|
|
1520
|
+
}
|
|
1521
|
+
catch (error) {
|
|
1522
|
+
rejectSent(error);
|
|
1523
|
+
request?.cancel?.();
|
|
1524
|
+
}
|
|
1525
|
+
};
|
|
1526
|
+
request = this._call(method, params, timeout, trace, background, recordSent, sent);
|
|
1527
|
+
const result = Promise.all([request, sent]).then(([response]) => response);
|
|
1528
|
+
return Object.assign(result, { cancel: request.cancel });
|
|
1529
|
+
}
|
|
1530
|
+
_call(method, params, timeout, trace, background = false, onSent, sentCheckpoint) {
|
|
1485
1531
|
if (this._worker) {
|
|
1486
1532
|
const requestContext = trafficLogContext('outbound', params ?? {});
|
|
1487
1533
|
const requestLog = withLogContext(this._logger, requestContext);
|
|
1488
1534
|
const responseLog = withLogContext(requestLog, { direction: 'inbound', peerAid: requestContext.peerAid });
|
|
1489
1535
|
requestLog.debug(`RPC request queued: method=${method}`);
|
|
1490
|
-
const request = this._workerCommand({ type: 'call', method, params, timeout, trace, background });
|
|
1536
|
+
const request = this._workerCommand({ type: 'call', method, params, timeout, trace, background, ...(onSent ? { trackSent: true } : {}) }, undefined, onSent, sentCheckpoint);
|
|
1491
1537
|
const result = request.then((result) => {
|
|
1492
1538
|
responseLog.debug(`RPC response ok: method=${method}`);
|
|
1493
1539
|
return result;
|
|
@@ -1497,9 +1543,9 @@ export class RPCTransport {
|
|
|
1497
1543
|
});
|
|
1498
1544
|
return Object.assign(result, { cancel: request.cancel });
|
|
1499
1545
|
}
|
|
1500
|
-
return this._enqueueActorStart(() => this._callLocal(method, params, timeout, trace, background), () => new TimeoutError(`rpc cancelled: ${method}`, { retryable: true }));
|
|
1546
|
+
return this._enqueueActorStart(() => this._callLocal(method, params, timeout, trace, background, onSent, sentCheckpoint), () => new TimeoutError(`rpc cancelled: ${method}`, { retryable: true }));
|
|
1501
1547
|
}
|
|
1502
|
-
_callLocal(method, params, timeout, trace, background = false) {
|
|
1548
|
+
_callLocal(method, params, timeout, trace, background = false, onSent, sentCheckpoint) {
|
|
1503
1549
|
if (this._closed || !this._ws) {
|
|
1504
1550
|
const suffix = this._lastCloseCode !== null ? `: close code ${this._lastCloseCode}` : '';
|
|
1505
1551
|
throw new ConnectionError(`transport not connected${suffix}`, {
|
|
@@ -1552,42 +1598,48 @@ export class RPCTransport {
|
|
|
1552
1598
|
const pending = {
|
|
1553
1599
|
resolve: (response) => {
|
|
1554
1600
|
clearTimeout(timer);
|
|
1555
|
-
const
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
else if (response.result !== undefined) {
|
|
1569
|
-
responseLog.debug(`RPC response ok: method=${method}, id=${rpcId}, elapsed=${elapsed}ms ${summarizeDict(response.result, DIAG_RESULT_FIELDS)}`);
|
|
1570
|
-
if (traceId) {
|
|
1571
|
-
responseLog.info(`[trace=${traceId}] rpc_recv method=${method} rpc_id=${rpcId} duration_ms=${elapsed} status=ok`);
|
|
1601
|
+
const acceptResponse = () => {
|
|
1602
|
+
const elapsed = Date.now() - tStart;
|
|
1603
|
+
if (response.error !== undefined) {
|
|
1604
|
+
responseLog.debug(`RPC error response: method=${method}, id=${rpcId}, elapsed=${elapsed}ms, error=${JSON.stringify(response.error)}`);
|
|
1605
|
+
if (traceId) {
|
|
1606
|
+
responseLog.info(`[trace=${traceId}] rpc_recv method=${method} rpc_id=${rpcId} duration_ms=${elapsed} status=error`);
|
|
1607
|
+
}
|
|
1608
|
+
// 处理 error 路径的 _trace
|
|
1609
|
+
const respTrace = response._trace;
|
|
1610
|
+
if (respTrace && typeof respTrace === 'object' && !Array.isArray(respTrace)) {
|
|
1611
|
+
this._handleResponseTrace(method, 'error', elapsed, respTrace, responseLog);
|
|
1612
|
+
}
|
|
1613
|
+
reject(mapRemoteError(response.error));
|
|
1572
1614
|
}
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
this._queueObserver('meta_observer', this._metaObserver, meta);
|
|
1615
|
+
else if (response.result !== undefined) {
|
|
1616
|
+
responseLog.debug(`RPC response ok: method=${method}, id=${rpcId}, elapsed=${elapsed}ms ${summarizeDict(response.result, DIAG_RESULT_FIELDS)}`);
|
|
1617
|
+
if (traceId) {
|
|
1618
|
+
responseLog.info(`[trace=${traceId}] rpc_recv method=${method} rpc_id=${rpcId} duration_ms=${elapsed} status=ok`);
|
|
1578
1619
|
}
|
|
1620
|
+
// 透传 envelope._meta 给 observer
|
|
1621
|
+
if (this._metaObserver !== null) {
|
|
1622
|
+
const meta = response._meta;
|
|
1623
|
+
if (meta !== null && typeof meta === 'object' && !Array.isArray(meta)) {
|
|
1624
|
+
this._queueObserver('meta_observer', this._metaObserver, meta);
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
// 处理 success 路径的 _trace
|
|
1628
|
+
const respTrace = response._trace;
|
|
1629
|
+
if (respTrace && typeof respTrace === 'object' && !Array.isArray(respTrace)) {
|
|
1630
|
+
this._handleResponseTrace(method, 'ok', elapsed, respTrace, responseLog);
|
|
1631
|
+
}
|
|
1632
|
+
resolve(response.result);
|
|
1579
1633
|
}
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
this._handleResponseTrace(method, 'ok', elapsed, respTrace, responseLog);
|
|
1634
|
+
else {
|
|
1635
|
+
responseLog.warn(`RPC response missing result or error: method=${method}, id=${rpcId}, elapsed=${elapsed}ms`);
|
|
1636
|
+
reject(new SerializationError(`rpc response missing result and error: ${method}`));
|
|
1584
1637
|
}
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
}
|
|
1638
|
+
};
|
|
1639
|
+
if (sentCheckpoint)
|
|
1640
|
+
void sentCheckpoint.then(acceptResponse, reject);
|
|
1641
|
+
else
|
|
1642
|
+
acceptResponse();
|
|
1591
1643
|
},
|
|
1592
1644
|
reject: (err) => {
|
|
1593
1645
|
clearTimeout(timer);
|
|
@@ -1609,6 +1661,7 @@ export class RPCTransport {
|
|
|
1609
1661
|
timeoutMs: effectiveTimeout,
|
|
1610
1662
|
background: backgroundRpc,
|
|
1611
1663
|
logger: requestLog,
|
|
1664
|
+
onSent,
|
|
1612
1665
|
});
|
|
1613
1666
|
if (backgroundRpc) {
|
|
1614
1667
|
this._rpcQueue.pop();
|
|
@@ -1621,6 +1674,7 @@ export class RPCTransport {
|
|
|
1621
1674
|
timeoutMs: effectiveTimeout,
|
|
1622
1675
|
background: true,
|
|
1623
1676
|
logger: requestLog,
|
|
1677
|
+
onSent,
|
|
1624
1678
|
});
|
|
1625
1679
|
}
|
|
1626
1680
|
this._drainRpcQueue();
|
|
@@ -1798,6 +1852,7 @@ export class RPCTransport {
|
|
|
1798
1852
|
}
|
|
1799
1853
|
this._sendText(entry.payload, `rpc ${entry.method}`, () => this._pending.get(entry.rpcId) === entry.pending).then(() => {
|
|
1800
1854
|
entry.logger.debug(`RPC request sent: method=${entry.method}, id=${entry.rpcId}, background=${entry.background}`);
|
|
1855
|
+
return entry.onSent?.();
|
|
1801
1856
|
}).catch((err) => {
|
|
1802
1857
|
if (this._pending.get(entry.rpcId) !== entry.pending)
|
|
1803
1858
|
return;
|
|
@@ -1997,6 +2052,7 @@ export class RPCTransport {
|
|
|
1997
2052
|
this._pendingBackground.delete(rpcId);
|
|
1998
2053
|
pending.resolve(message);
|
|
1999
2054
|
this._drainRpcQueue();
|
|
2055
|
+
this._onRpcResponse?.();
|
|
2000
2056
|
}
|
|
2001
2057
|
return;
|
|
2002
2058
|
}
|
|
@@ -2155,6 +2211,9 @@ if (!isMainThread && Boolean(workerData?.aunTransportWorker) && parentPort) {
|
|
|
2155
2211
|
actor._onForegroundDrained = () => parentPort.postMessage({
|
|
2156
2212
|
type: 'foreground_drained', generation: bridgeGeneration(),
|
|
2157
2213
|
});
|
|
2214
|
+
actor._onRpcResponse = () => parentPort.postMessage({
|
|
2215
|
+
type: 'rpc_response', generation: bridgeGeneration(),
|
|
2216
|
+
});
|
|
2158
2217
|
actor.setProtocolMetaObserver((meta) => workerDispatcher.enqueueProtocol('_transport.observer', {
|
|
2159
2218
|
kind: 'meta_observer', payload: meta,
|
|
2160
2219
|
}));
|
|
@@ -2189,7 +2248,12 @@ if (!isMainThread && Boolean(workerData?.aunTransportWorker) && parentPort) {
|
|
|
2189
2248
|
break;
|
|
2190
2249
|
}
|
|
2191
2250
|
case 'call': {
|
|
2192
|
-
const request =
|
|
2251
|
+
const request = (command.trackSent
|
|
2252
|
+
? actor['_callWithSent'](String(command.method ?? ''), command.params ?? undefined, async () => {
|
|
2253
|
+
if (id)
|
|
2254
|
+
parentPort.postMessage({ type: 'sent', id, generation: bridgeGeneration() });
|
|
2255
|
+
}, command.timeout, command.trace, Boolean(command.background))
|
|
2256
|
+
: actor.call(String(command.method ?? ''), command.params ?? undefined, command.timeout, command.trace, Boolean(command.background)));
|
|
2193
2257
|
if (id)
|
|
2194
2258
|
active.set(id, request);
|
|
2195
2259
|
result = await request;
|