@agentunion/fastaun 0.5.33 → 0.5.35
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 +59 -2
- package/README.md +28 -26
- package/_packed_docs/CHANGELOG.md +59 -2
- package/_packed_docs/INDEX.md +26 -12
- package/_packed_docs/KITE_DOCS_GUIDE.md +17 -11
- package/_packed_docs/agent.md/SCHEMA.md +1 -1
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +2 -2
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +58 -8
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +17 -17
- package/_packed_docs/protocol/echo-probe-gateway.md +99 -0
- package/_packed_docs/protocol/echo-probe-sdk.md +91 -0
- package/_packed_docs/sdk/0.5.33-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +464 -316
- package/_packed_docs/sdk/0.5.33-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +499 -304
- package/_packed_docs/sdk/0.5.34-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +133 -0
- package/_packed_docs/sdk/0.5.34-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +107 -0
- package/_packed_docs/sdk/0.5.35-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +189 -0
- package/_packed_docs/sdk/0.5.35-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +204 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +16 -13
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +13 -1
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +19 -9
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +87 -20
- package/_packed_docs/sdk/09-collab-rpc-manual.md +48 -30
- package/_packed_docs/sdk/09-custody-api-manual.md +3 -3
- package/_packed_docs/sdk/09-group-rpc-manual.md +60 -13
- package/_packed_docs/sdk/09-message-rpc-manual.md +22 -0
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -1
- package/_packed_docs/sdk/09-payload-reference.md +9 -8
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +20 -14
- package/_packed_docs/sdk/09-storage-rpc-manual.md +1698 -1659
- package/_packed_docs/sdk/09-stream-rpc-manual.md +33 -20
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +19 -17
- package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +125 -30
- package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/274/200/345/217/221/347/247/273/346/244/215/346/214/207/345/215/227.md +109 -33
- package/_packed_docs/sdk/INDEX.md +30 -18
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +1 -1
- 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 +5 -5
- 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 +5 -5
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +9 -9
- package/_packed_docs/sdk/README.md +11 -6
- package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/345/256/236/346/226/275/350/256/241/345/210/222.md +400 -0
- package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/346/226/271/346/241/210.md +485 -0
- package/dist/auth.js +39 -45
- package/dist/auth.js.map +1 -1
- package/dist/client/control-messages.js +2 -2
- package/dist/client/control-messages.js.map +1 -1
- package/dist/client/delivery.d.ts +12 -1
- package/dist/client/delivery.js +281 -46
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/lifecycle.js +13 -1
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-budget.d.ts +21 -0
- package/dist/client/rpc-budget.js +82 -0
- package/dist/client/rpc-budget.js.map +1 -0
- package/dist/client/rpc-pipeline.d.ts +5 -0
- package/dist/client/rpc-pipeline.js +227 -63
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/sync-channels.d.ts +90 -0
- package/dist/client/sync-channels.js +508 -0
- package/dist/client/sync-channels.js.map +1 -0
- package/dist/client/v2-e2ee.d.ts +5 -1
- package/dist/client/v2-e2ee.js +420 -303
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.js +373 -50
- package/dist/client.js.map +1 -1
- package/dist/events.d.ts +1 -0
- package/dist/events.js +5 -0
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mail-client.d.ts +101 -0
- package/dist/mail-client.js +369 -0
- package/dist/mail-client.js.map +1 -0
- package/dist/pubsub/binding.js +23 -3
- package/dist/pubsub/binding.js.map +1 -1
- package/dist/pubsub/channel.d.ts +15 -3
- package/dist/pubsub/channel.js +114 -7
- package/dist/pubsub/channel.js.map +1 -1
- package/dist/pubsub/client.d.ts +17 -2
- package/dist/pubsub/client.js +205 -40
- package/dist/pubsub/client.js.map +1 -1
- package/dist/pubsub/credentials.d.ts +3 -0
- package/dist/pubsub/credentials.js +57 -20
- package/dist/pubsub/credentials.js.map +1 -1
- package/dist/pubsub/index.d.ts +5 -2
- package/dist/pubsub/index.js +70 -54
- package/dist/pubsub/index.js.map +1 -1
- package/dist/pubsub/service.d.ts +9 -0
- package/dist/pubsub/service.js +266 -20
- package/dist/pubsub/service.js.map +1 -1
- package/dist/pubsub/types.d.ts +13 -1
- package/dist/storage/lowlevel.d.ts +3 -1
- package/dist/storage/lowlevel.js +13 -0
- package/dist/storage/lowlevel.js.map +1 -1
- package/dist/storage/types.d.ts +10 -0
- package/dist/storage/types.js.map +1 -1
- package/dist/storage/vfs.d.ts +3 -1
- package/dist/storage/vfs.js +2 -2
- package/dist/storage/vfs.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +55 -5
- package/dist/tools/cross-sdk-agent.js +88 -21
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +16 -0
- package/dist/transport.js +129 -7
- package/dist/transport.js.map +1 -1
- package/dist/udp-standby.d.ts +89 -0
- package/dist/udp-standby.js +487 -0
- package/dist/udp-standby.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -1
- package/scripts/patch-imapflow-external.mjs +69 -0
package/dist/auth.js
CHANGED
|
@@ -16,7 +16,7 @@ import * as http from 'node:http';
|
|
|
16
16
|
import * as https from 'node:https';
|
|
17
17
|
import * as path from 'node:path';
|
|
18
18
|
import { URL, fileURLToPath } from 'node:url';
|
|
19
|
-
import { AuthError, StateError, ValidationError, AUNError, mapRemoteError } from './errors.js';
|
|
19
|
+
import { AuthError, ConnectionError, StateError, ValidationError, AUNError, mapRemoteError } from './errors.js';
|
|
20
20
|
import { shortRpcViaNetworkActor } from './transport.js';
|
|
21
21
|
import { isJsonObject, } from './types.js';
|
|
22
22
|
import { VERSION as AUN_SDK_VERSION } from './version.js';
|
|
@@ -659,7 +659,7 @@ export class AuthFlow {
|
|
|
659
659
|
let identity = this._loadIdentityOrRaise(opts?.aid);
|
|
660
660
|
this._logger.debug(`authenticate enter: aid=${identity.aid}, gateway=${gatewayUrl}`);
|
|
661
661
|
try {
|
|
662
|
-
// 优先复用 tokenStore 里的 cached access_token
|
|
662
|
+
// 优先复用 tokenStore 里的 cached access_token(未过期)
|
|
663
663
|
// 避免每次调 authenticate 都走两阶段重登的网络往返
|
|
664
664
|
// 注意:_loadIdentityOrRaise 不带 instance_state(access_token 等),
|
|
665
665
|
// 这里需要主动走 _loadInstanceState 拿到 token
|
|
@@ -667,7 +667,7 @@ export class AuthFlow {
|
|
|
667
667
|
const identityWithState = { ...identity, ...instanceState };
|
|
668
668
|
const cachedToken = AuthFlow._getCachedAccessToken(identityWithState);
|
|
669
669
|
const cachedRefresh = String(identityWithState.refresh_token ?? '');
|
|
670
|
-
if (cachedToken
|
|
670
|
+
if (cachedToken) {
|
|
671
671
|
// 复用 cached token 前必须验证本地身份完整性:
|
|
672
672
|
// cert 存在 + cert 公钥 == keypair 公钥 + cert 时间窗口有效。
|
|
673
673
|
// 任何一项不通过 → 不复用,走两步重登(或抛错)。
|
|
@@ -824,7 +824,7 @@ export class AuthFlow {
|
|
|
824
824
|
*/
|
|
825
825
|
async connectSession(transport, challenge, gatewayUrl, opts) {
|
|
826
826
|
const tStart = Date.now();
|
|
827
|
-
|
|
827
|
+
let nonce = this._extractChallengeNonce(challenge);
|
|
828
828
|
const deviceId = String(opts?.deviceId ?? '');
|
|
829
829
|
const slotId = String(opts?.slotId ?? '');
|
|
830
830
|
const deliveryMode = opts?.deliveryMode ?? null;
|
|
@@ -832,6 +832,27 @@ export class AuthFlow {
|
|
|
832
832
|
const shortTtlMs = opts?.shortTtlMs;
|
|
833
833
|
const extraInfo = opts?.extraInfo;
|
|
834
834
|
this.setInstanceContext({ deviceId, slotId });
|
|
835
|
+
let reconnectRequired = false;
|
|
836
|
+
const initializeSession = async (token) => {
|
|
837
|
+
if (reconnectRequired && typeof transport.connect === 'function') {
|
|
838
|
+
nonce = this._extractChallengeNonce(await transport.connect(gatewayUrl));
|
|
839
|
+
reconnectRequired = false;
|
|
840
|
+
}
|
|
841
|
+
try {
|
|
842
|
+
return await this._initializeSession(transport, nonce, token, {
|
|
843
|
+
deviceId, slotId, deliveryMode, connectionKind, shortTtlMs, extraInfo,
|
|
844
|
+
});
|
|
845
|
+
}
|
|
846
|
+
catch (err) {
|
|
847
|
+
if (err instanceof AuthError)
|
|
848
|
+
reconnectRequired = true;
|
|
849
|
+
else if (err instanceof ConnectionError && /\bcode=4001\b/.test(err.message)) {
|
|
850
|
+
reconnectRequired = true;
|
|
851
|
+
throw new AuthError(err.message);
|
|
852
|
+
}
|
|
853
|
+
throw err;
|
|
854
|
+
}
|
|
855
|
+
};
|
|
835
856
|
this._logger.debug(`connectSession enter: gateway=${gatewayUrl}, device_id=${deviceId}, slot_id=${slotId}, has_explicit_token=${!!opts?.accessToken}, has_challenge_nonce=${!!nonce}`);
|
|
836
857
|
try {
|
|
837
858
|
let identity;
|
|
@@ -845,14 +866,7 @@ export class AuthFlow {
|
|
|
845
866
|
const explicitToken = String(opts?.accessToken || '');
|
|
846
867
|
if (explicitToken && identity !== null) {
|
|
847
868
|
try {
|
|
848
|
-
const hello = await
|
|
849
|
-
deviceId,
|
|
850
|
-
slotId,
|
|
851
|
-
deliveryMode,
|
|
852
|
-
connectionKind,
|
|
853
|
-
shortTtlMs,
|
|
854
|
-
extraInfo,
|
|
855
|
-
});
|
|
869
|
+
const hello = await initializeSession(explicitToken);
|
|
856
870
|
identity.access_token = explicitToken;
|
|
857
871
|
this._persistIdentity(identity);
|
|
858
872
|
this._logger.debug(`connectSession exit: elapsed=${Date.now() - tStart}ms strategy=explicit_token aid=${String(identity.aid ?? '')}`);
|
|
@@ -868,29 +882,15 @@ export class AuthFlow {
|
|
|
868
882
|
if (identity === null) {
|
|
869
883
|
const authContext = await this.ensureAuthenticated(gatewayUrl);
|
|
870
884
|
const token = String(authContext.token);
|
|
871
|
-
const hello = await
|
|
872
|
-
deviceId,
|
|
873
|
-
slotId,
|
|
874
|
-
deliveryMode,
|
|
875
|
-
connectionKind,
|
|
876
|
-
shortTtlMs,
|
|
877
|
-
extraInfo,
|
|
878
|
-
});
|
|
885
|
+
const hello = await initializeSession(token);
|
|
879
886
|
this._logger.debug(`connectSession exit: elapsed=${Date.now() - tStart}ms strategy=ensure_authenticated aid=${String(authContext.identity?.aid ?? '')}`);
|
|
880
887
|
return { ...authContext, hello };
|
|
881
888
|
}
|
|
882
889
|
// 策略 2:缓存的 access_token
|
|
883
890
|
const cachedToken = AuthFlow._getCachedAccessToken(identity);
|
|
884
|
-
if (cachedToken) {
|
|
891
|
+
if (cachedToken && cachedToken !== explicitToken) {
|
|
885
892
|
try {
|
|
886
|
-
const hello = await
|
|
887
|
-
deviceId,
|
|
888
|
-
slotId,
|
|
889
|
-
deliveryMode,
|
|
890
|
-
connectionKind,
|
|
891
|
-
shortTtlMs,
|
|
892
|
-
extraInfo,
|
|
893
|
-
});
|
|
893
|
+
const hello = await initializeSession(cachedToken);
|
|
894
894
|
this._logger.debug(`connectSession exit: elapsed=${Date.now() - tStart}ms strategy=cached_token aid=${String(identity.aid ?? '')}`);
|
|
895
895
|
return { token: cachedToken, identity, hello };
|
|
896
896
|
}
|
|
@@ -907,14 +907,7 @@ export class AuthFlow {
|
|
|
907
907
|
identity = await this.refreshCachedTokens(gatewayUrl, identity);
|
|
908
908
|
const newCachedToken = AuthFlow._getCachedAccessToken(identity);
|
|
909
909
|
if (newCachedToken) {
|
|
910
|
-
const hello = await
|
|
911
|
-
deviceId,
|
|
912
|
-
slotId,
|
|
913
|
-
deliveryMode,
|
|
914
|
-
connectionKind,
|
|
915
|
-
shortTtlMs,
|
|
916
|
-
extraInfo,
|
|
917
|
-
});
|
|
910
|
+
const hello = await initializeSession(newCachedToken);
|
|
918
911
|
this._logger.debug(`connectSession exit: elapsed=${Date.now() - tStart}ms strategy=refresh_token aid=${String(identity.aid ?? '')}`);
|
|
919
912
|
return { token: newCachedToken, identity, hello };
|
|
920
913
|
}
|
|
@@ -934,14 +927,7 @@ export class AuthFlow {
|
|
|
934
927
|
if (!token) {
|
|
935
928
|
throw new AuthError('authenticate did not return access_token');
|
|
936
929
|
}
|
|
937
|
-
const hello = await
|
|
938
|
-
deviceId,
|
|
939
|
-
slotId,
|
|
940
|
-
deliveryMode,
|
|
941
|
-
connectionKind,
|
|
942
|
-
shortTtlMs,
|
|
943
|
-
extraInfo,
|
|
944
|
-
});
|
|
930
|
+
const hello = await initializeSession(token);
|
|
945
931
|
identity = this.loadIdentity(identity.aid);
|
|
946
932
|
this._logger.debug(`connectSession exit: elapsed=${Date.now() - tStart}ms strategy=full_reauth aid=${String(identity?.aid ?? '')}`);
|
|
947
933
|
return { token, identity, hello };
|
|
@@ -1562,8 +1548,12 @@ export class AuthFlow {
|
|
|
1562
1548
|
agent_md_validation_v1: true,
|
|
1563
1549
|
p2p_peer_pull_v1: true,
|
|
1564
1550
|
gateway_migrate_v1: true,
|
|
1551
|
+
elastic_connections_v1: true,
|
|
1552
|
+
sync_channels_v1: true,
|
|
1565
1553
|
...(this._requestAdmission && this._verifySsl && this._riskCapabilityEnabled?.() ? { risk_test_v1: true } : {}),
|
|
1566
1554
|
};
|
|
1555
|
+
if (connectionKind !== 'long' || typeof extraInfoRaw?._sync_parent === 'string' || capabilities.udp_standby_v1 !== true)
|
|
1556
|
+
delete capabilities.udp_standby_v1;
|
|
1567
1557
|
const request = {
|
|
1568
1558
|
nonce,
|
|
1569
1559
|
auth: { method: 'kite_token', token },
|
|
@@ -1592,6 +1582,10 @@ export class AuthFlow {
|
|
|
1592
1582
|
// 长短连接选项:默认 long 时不写入 options(保持 wire 兼容)
|
|
1593
1583
|
if (connectionKind === 'short') {
|
|
1594
1584
|
const options = { kind: 'short' };
|
|
1585
|
+
if (typeof extraInfoRaw?._sync_parent === 'string') {
|
|
1586
|
+
options.purpose = 'history_sync';
|
|
1587
|
+
options.parent_connection_id = extraInfoRaw._sync_parent;
|
|
1588
|
+
}
|
|
1595
1589
|
const ttl = Number(opts?.shortTtlMs ?? 0);
|
|
1596
1590
|
if (ttl > 0) {
|
|
1597
1591
|
options.short_ttl_ms = ttl;
|