@agentunion/fastaun 0.5.20 → 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.
Files changed (107) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/_packed_docs/CHANGELOG.md +47 -0
  3. package/_packed_docs/INDEX.md +453 -440
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +164 -161
  5. 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
  6. 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
  7. 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
  8. 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
  9. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1433 -1392
  10. package/_packed_docs/protocol/08-AUN-E2EE.md +17 -12
  11. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +2 -0
  12. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +666 -658
  13. 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
  14. 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
  15. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
  16. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +5 -1
  17. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +64 -64
  18. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +4 -1
  19. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +42 -39
  20. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +147 -14
  21. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +48 -47
  22. package/_packed_docs/sdk/09-group-rpc-manual.md +5 -2
  23. package/_packed_docs/sdk/09-message-rpc-manual.md +250 -160
  24. 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
  25. 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
  26. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +134 -130
  27. package/_packed_docs/sdk/INDEX.md +239 -221
  28. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +930 -922
  29. 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 +106 -43
  30. 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 +180 -9
  31. 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 -708
  32. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +480 -476
  33. 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 +1 -1
  34. 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 +2 -2
  35. package/dist/agent-md-schema.js +6 -4
  36. package/dist/agent-md-schema.js.map +1 -1
  37. package/dist/agent-md.d.ts +22 -2
  38. package/dist/agent-md.js +84 -67
  39. package/dist/agent-md.js.map +1 -1
  40. package/dist/aid-store.d.ts +13 -0
  41. package/dist/aid-store.js +50 -15
  42. package/dist/aid-store.js.map +1 -1
  43. package/dist/auth.js +4 -0
  44. package/dist/auth.js.map +1 -1
  45. package/dist/cert-utils.d.ts +1 -0
  46. package/dist/cert-utils.js +13 -0
  47. package/dist/cert-utils.js.map +1 -1
  48. package/dist/client/delivery.d.ts +59 -1
  49. package/dist/client/delivery.js +1018 -125
  50. package/dist/client/delivery.js.map +1 -1
  51. package/dist/client/rpc-pipeline.d.ts +4 -1
  52. package/dist/client/rpc-pipeline.js +123 -37
  53. package/dist/client/rpc-pipeline.js.map +1 -1
  54. package/dist/client/v2-e2ee.d.ts +12 -2
  55. package/dist/client/v2-e2ee.js +751 -294
  56. package/dist/client/v2-e2ee.js.map +1 -1
  57. package/dist/client.d.ts +26 -2
  58. package/dist/client.js +379 -63
  59. package/dist/client.js.map +1 -1
  60. package/dist/config.d.ts +4 -0
  61. package/dist/config.js +1 -0
  62. package/dist/config.js.map +1 -1
  63. package/dist/events.d.ts +18 -1
  64. package/dist/events.js +148 -9
  65. package/dist/events.js.map +1 -1
  66. package/dist/facades.d.ts +43 -1
  67. package/dist/facades.js +363 -7
  68. package/dist/facades.js.map +1 -1
  69. package/dist/index.d.ts +5 -3
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/keystore/aid-db.d.ts +6 -1
  73. package/dist/keystore/aid-db.js +184 -42
  74. package/dist/keystore/aid-db.js.map +1 -1
  75. package/dist/keystore/index.d.ts +14 -0
  76. package/dist/keystore/local-token-store.d.ts +9 -1
  77. package/dist/keystore/local-token-store.js +79 -14
  78. package/dist/keystore/local-token-store.js.map +1 -1
  79. package/dist/org-protocol.d.ts +45 -0
  80. package/dist/org-protocol.js +754 -11
  81. package/dist/org-protocol.js.map +1 -1
  82. package/dist/ownership-v21.d.ts +16 -3
  83. package/dist/ownership-v21.js +35 -17
  84. package/dist/ownership-v21.js.map +1 -1
  85. package/dist/ownership-workflow.d.ts +17 -0
  86. package/dist/ownership-workflow.js +511 -26
  87. package/dist/ownership-workflow.js.map +1 -1
  88. package/dist/secret-store/file-store.js +84 -0
  89. package/dist/secret-store/file-store.js.map +1 -1
  90. package/dist/seq-tracker.d.ts +1 -0
  91. package/dist/seq-tracker.js +2 -2
  92. package/dist/seq-tracker.js.map +1 -1
  93. package/dist/tools/cross-sdk-agent.d.ts +66 -3
  94. package/dist/tools/cross-sdk-agent.js +466 -36
  95. package/dist/tools/cross-sdk-agent.js.map +1 -1
  96. package/dist/transport.d.ts +3 -0
  97. package/dist/transport.js +98 -44
  98. package/dist/transport.js.map +1 -1
  99. package/dist/types.d.ts +1 -0
  100. package/dist/v2/e2ee/encrypt-group.js +1 -0
  101. package/dist/v2/e2ee/encrypt-group.js.map +1 -1
  102. package/dist/v2/e2ee/encrypt-p2p.js +1 -0
  103. package/dist/v2/e2ee/encrypt-p2p.js.map +1 -1
  104. package/dist/v2/e2ee/types.d.ts +1 -0
  105. package/dist/version.d.ts +1 -1
  106. package/dist/version.js +1 -1
  107. package/package.json +1 -1
@@ -108,6 +108,7 @@ export declare class RPCTransport {
108
108
  setMetaObserver(observer: MetaObserver | null): void;
109
109
  setProtocolMetaObserver(observer: MetaObserver | null): void;
110
110
  setProtocolDisconnectCallback(callback: DisconnectCallback | null): void;
111
+ getTraceMode(): string;
111
112
  /** 设置 trace 模式:off / log / diag */
112
113
  setTraceMode(mode: string): void;
113
114
  /** 注册 trace observer;observer(traceInfo) 在每次 RPC/事件携带 _trace 时调用。 */
@@ -142,6 +143,8 @@ export declare class RPCTransport {
142
143
  * 发送 JSON-RPC 2.0 请求并等待响应。
143
144
  */
144
145
  call(method: string, params?: RpcParams, timeout?: number, trace?: string, background?: boolean): Promise<RpcResult>;
146
+ private _callWithSent;
147
+ private _call;
145
148
  private _callLocal;
146
149
  /** 发送 JSON-RPC 2.0 Notification,不分配 id,也不等待响应。 */
147
150
  notify(method: string, params?: RpcParams | null): Promise<void>;
package/dist/transport.js CHANGED
@@ -713,6 +713,12 @@ export class RPCTransport {
713
713
  pending.reject(new ConnectionError('stale transport worker response'));
714
714
  return;
715
715
  }
716
+ if (message.type === 'sent') {
717
+ const onSent = pending.onSent;
718
+ delete pending.onSent;
719
+ void onSent?.();
720
+ return;
721
+ }
716
722
  this._workerPending.delete(message.id);
717
723
  if (pending.timer !== null)
718
724
  clearTimeout(pending.timer);
@@ -720,15 +726,22 @@ export class RPCTransport {
720
726
  && message.ok && typeof message.generation === 'number') {
721
727
  this._workerGeneration = message.generation;
722
728
  }
723
- if (message.ok)
724
- pending.resolve(message.result);
725
- else {
726
- if (pending.commandType === 'connect' && pending.connectAttempt === this._workerConnectAttempt) {
727
- this._workerGeneration = null;
728
- this._workerBufferedEvents = [];
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));
729
738
  }
730
- pending.reject(deserializeWorkerError(message.error));
739
+ };
740
+ if (pending.sentCheckpoint && (message.ok || !pending.onSent)) {
741
+ void pending.sentCheckpoint.then(settleReply, pending.reject);
731
742
  }
743
+ else
744
+ settleReply();
732
745
  });
733
746
  worker.on('error', (error) => {
734
747
  this._disableNetworkWorker(worker, error);
@@ -867,7 +880,7 @@ export class RPCTransport {
867
880
  for (const message of buffered)
868
881
  this._handleWorkerEvent(message);
869
882
  }
870
- _workerCommand(command, connectAttempt) {
883
+ _workerCommand(command, connectAttempt, onSent, sentCheckpoint) {
871
884
  this._ensureNetworkWorker();
872
885
  if (!this._worker)
873
886
  return Promise.reject(new ConnectionError('transport worker unavailable'));
@@ -898,6 +911,8 @@ export class RPCTransport {
898
911
  timer,
899
912
  commandType: command.type,
900
913
  connectAttempt,
914
+ onSent,
915
+ sentCheckpoint,
901
916
  });
902
917
  const postCommand = () => {
903
918
  if (!this._workerPending.has(id))
@@ -987,6 +1002,9 @@ export class RPCTransport {
987
1002
  this._onDisconnect = callback;
988
1003
  this._protocolDisconnectCallback = callback !== null;
989
1004
  }
1005
+ getTraceMode() {
1006
+ return this._traceMode;
1007
+ }
990
1008
  /** 设置 trace 模式:off / log / diag */
991
1009
  setTraceMode(mode) {
992
1010
  if (mode !== 'off' && mode !== 'log' && mode !== 'diag') {
@@ -1488,12 +1506,34 @@ export class RPCTransport {
1488
1506
  * 发送 JSON-RPC 2.0 请求并等待响应。
1489
1507
  */
1490
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) {
1491
1531
  if (this._worker) {
1492
1532
  const requestContext = trafficLogContext('outbound', params ?? {});
1493
1533
  const requestLog = withLogContext(this._logger, requestContext);
1494
1534
  const responseLog = withLogContext(requestLog, { direction: 'inbound', peerAid: requestContext.peerAid });
1495
1535
  requestLog.debug(`RPC request queued: method=${method}`);
1496
- 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);
1497
1537
  const result = request.then((result) => {
1498
1538
  responseLog.debug(`RPC response ok: method=${method}`);
1499
1539
  return result;
@@ -1503,9 +1543,9 @@ export class RPCTransport {
1503
1543
  });
1504
1544
  return Object.assign(result, { cancel: request.cancel });
1505
1545
  }
1506
- 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 }));
1507
1547
  }
1508
- _callLocal(method, params, timeout, trace, background = false) {
1548
+ _callLocal(method, params, timeout, trace, background = false, onSent, sentCheckpoint) {
1509
1549
  if (this._closed || !this._ws) {
1510
1550
  const suffix = this._lastCloseCode !== null ? `: close code ${this._lastCloseCode}` : '';
1511
1551
  throw new ConnectionError(`transport not connected${suffix}`, {
@@ -1558,42 +1598,48 @@ export class RPCTransport {
1558
1598
  const pending = {
1559
1599
  resolve: (response) => {
1560
1600
  clearTimeout(timer);
1561
- const elapsed = Date.now() - tStart;
1562
- if (response.error !== undefined) {
1563
- responseLog.debug(`RPC error response: method=${method}, id=${rpcId}, elapsed=${elapsed}ms, error=${JSON.stringify(response.error)}`);
1564
- if (traceId) {
1565
- responseLog.info(`[trace=${traceId}] rpc_recv method=${method} rpc_id=${rpcId} duration_ms=${elapsed} status=error`);
1566
- }
1567
- // 处理 error 路径的 _trace
1568
- const respTrace = response._trace;
1569
- if (respTrace && typeof respTrace === 'object' && !Array.isArray(respTrace)) {
1570
- this._handleResponseTrace(method, 'error', elapsed, respTrace, responseLog);
1571
- }
1572
- reject(mapRemoteError(response.error));
1573
- }
1574
- else if (response.result !== undefined) {
1575
- responseLog.debug(`RPC response ok: method=${method}, id=${rpcId}, elapsed=${elapsed}ms ${summarizeDict(response.result, DIAG_RESULT_FIELDS)}`);
1576
- if (traceId) {
1577
- 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));
1578
1614
  }
1579
- // 透传 envelope._meta 给 observer
1580
- if (this._metaObserver !== null) {
1581
- const meta = response._meta;
1582
- if (meta !== null && typeof meta === 'object' && !Array.isArray(meta)) {
1583
- 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`);
1584
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);
1585
1633
  }
1586
- // 处理 success 路径的 _trace
1587
- const respTrace = response._trace;
1588
- if (respTrace && typeof respTrace === 'object' && !Array.isArray(respTrace)) {
1589
- 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}`));
1590
1637
  }
1591
- resolve(response.result);
1592
- }
1593
- else {
1594
- responseLog.warn(`RPC response missing result or error: method=${method}, id=${rpcId}, elapsed=${elapsed}ms`);
1595
- reject(new SerializationError(`rpc response missing result and error: ${method}`));
1596
- }
1638
+ };
1639
+ if (sentCheckpoint)
1640
+ void sentCheckpoint.then(acceptResponse, reject);
1641
+ else
1642
+ acceptResponse();
1597
1643
  },
1598
1644
  reject: (err) => {
1599
1645
  clearTimeout(timer);
@@ -1615,6 +1661,7 @@ export class RPCTransport {
1615
1661
  timeoutMs: effectiveTimeout,
1616
1662
  background: backgroundRpc,
1617
1663
  logger: requestLog,
1664
+ onSent,
1618
1665
  });
1619
1666
  if (backgroundRpc) {
1620
1667
  this._rpcQueue.pop();
@@ -1627,6 +1674,7 @@ export class RPCTransport {
1627
1674
  timeoutMs: effectiveTimeout,
1628
1675
  background: true,
1629
1676
  logger: requestLog,
1677
+ onSent,
1630
1678
  });
1631
1679
  }
1632
1680
  this._drainRpcQueue();
@@ -1804,6 +1852,7 @@ export class RPCTransport {
1804
1852
  }
1805
1853
  this._sendText(entry.payload, `rpc ${entry.method}`, () => this._pending.get(entry.rpcId) === entry.pending).then(() => {
1806
1854
  entry.logger.debug(`RPC request sent: method=${entry.method}, id=${entry.rpcId}, background=${entry.background}`);
1855
+ return entry.onSent?.();
1807
1856
  }).catch((err) => {
1808
1857
  if (this._pending.get(entry.rpcId) !== entry.pending)
1809
1858
  return;
@@ -2199,7 +2248,12 @@ if (!isMainThread && Boolean(workerData?.aunTransportWorker) && parentPort) {
2199
2248
  break;
2200
2249
  }
2201
2250
  case 'call': {
2202
- const request = actor.call(String(command.method ?? ''), command.params ?? undefined, command.timeout, command.trace, Boolean(command.background));
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)));
2203
2257
  if (id)
2204
2258
  active.set(id, request);
2205
2259
  result = await request;