@f2a/network 0.1.3 → 0.2.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.
Files changed (91) hide show
  1. package/README.md +278 -63
  2. package/dist/cli/commands.d.ts.map +1 -1
  3. package/dist/cli/commands.js +29 -2
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/cli/config.d.ts +176 -0
  6. package/dist/cli/config.d.ts.map +1 -0
  7. package/dist/cli/config.js +386 -0
  8. package/dist/cli/config.js.map +1 -0
  9. package/dist/cli/daemon.d.ts +54 -0
  10. package/dist/cli/daemon.d.ts.map +1 -0
  11. package/dist/cli/daemon.js +572 -0
  12. package/dist/cli/daemon.js.map +1 -0
  13. package/dist/cli/index.js +90 -16
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/init.d.ts +13 -0
  16. package/dist/cli/init.d.ts.map +1 -0
  17. package/dist/cli/init.js +352 -0
  18. package/dist/cli/init.js.map +1 -0
  19. package/dist/core/e2ee-crypto.d.ts +127 -1
  20. package/dist/core/e2ee-crypto.d.ts.map +1 -1
  21. package/dist/core/e2ee-crypto.js +446 -12
  22. package/dist/core/e2ee-crypto.js.map +1 -1
  23. package/dist/core/f2a.d.ts +2 -1
  24. package/dist/core/f2a.d.ts.map +1 -1
  25. package/dist/core/f2a.js +6 -2
  26. package/dist/core/f2a.js.map +1 -1
  27. package/dist/core/identity/encrypted-key-store.d.ts +19 -0
  28. package/dist/core/identity/encrypted-key-store.d.ts.map +1 -0
  29. package/dist/core/identity/encrypted-key-store.js +72 -0
  30. package/dist/core/identity/encrypted-key-store.js.map +1 -0
  31. package/dist/core/identity/identity-manager.d.ts +133 -0
  32. package/dist/core/identity/identity-manager.d.ts.map +1 -0
  33. package/dist/core/identity/identity-manager.js +454 -0
  34. package/dist/core/identity/identity-manager.js.map +1 -0
  35. package/dist/core/identity/index.d.ts +8 -0
  36. package/dist/core/identity/index.d.ts.map +1 -0
  37. package/dist/core/identity/index.js +7 -0
  38. package/dist/core/identity/index.js.map +1 -0
  39. package/dist/core/identity/types.d.ts +70 -0
  40. package/dist/core/identity/types.d.ts.map +1 -0
  41. package/dist/core/identity/types.js +17 -0
  42. package/dist/core/identity/types.js.map +1 -0
  43. package/dist/core/p2p-network.d.ts +26 -0
  44. package/dist/core/p2p-network.d.ts.map +1 -1
  45. package/dist/core/p2p-network.js +434 -105
  46. package/dist/core/p2p-network.js.map +1 -1
  47. package/dist/core/reputation-security.d.ts +15 -0
  48. package/dist/core/reputation-security.d.ts.map +1 -1
  49. package/dist/core/reputation-security.js +73 -3
  50. package/dist/core/reputation-security.js.map +1 -1
  51. package/dist/core/reputation.d.ts +129 -4
  52. package/dist/core/reputation.d.ts.map +1 -1
  53. package/dist/core/reputation.js +294 -1
  54. package/dist/core/reputation.js.map +1 -1
  55. package/dist/core/review-committee.d.ts +2 -2
  56. package/dist/core/review-committee.d.ts.map +1 -1
  57. package/dist/core/review-committee.js +17 -0
  58. package/dist/core/review-committee.js.map +1 -1
  59. package/dist/daemon/control-server.d.ts.map +1 -1
  60. package/dist/daemon/control-server.js +44 -1
  61. package/dist/daemon/control-server.js.map +1 -1
  62. package/dist/daemon/webhook.d.ts +3 -0
  63. package/dist/daemon/webhook.d.ts.map +1 -1
  64. package/dist/daemon/webhook.js +318 -6
  65. package/dist/daemon/webhook.js.map +1 -1
  66. package/dist/index.d.ts +3 -3
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +7 -3
  69. package/dist/index.js.map +1 -1
  70. package/dist/types/index.d.ts +4 -0
  71. package/dist/types/index.d.ts.map +1 -1
  72. package/dist/types/index.js.map +1 -1
  73. package/dist/types/result.d.ts +1 -1
  74. package/dist/types/result.d.ts.map +1 -1
  75. package/dist/types/result.js.map +1 -1
  76. package/dist/utils/crypto-utils.d.ts +17 -0
  77. package/dist/utils/crypto-utils.d.ts.map +1 -0
  78. package/dist/utils/crypto-utils.js +28 -0
  79. package/dist/utils/crypto-utils.js.map +1 -0
  80. package/dist/utils/logger.d.ts +1 -0
  81. package/dist/utils/logger.d.ts.map +1 -1
  82. package/dist/utils/logger.js +9 -3
  83. package/dist/utils/logger.js.map +1 -1
  84. package/dist/utils/rate-limiter.d.ts.map +1 -1
  85. package/dist/utils/rate-limiter.js +3 -1
  86. package/dist/utils/rate-limiter.js.map +1 -1
  87. package/dist/utils/signature.d.ts +47 -1
  88. package/dist/utils/signature.d.ts.map +1 -1
  89. package/dist/utils/signature.js +166 -11
  90. package/dist/utils/signature.js.map +1 -1
  91. package/package.json +2 -1
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { EventEmitter } from 'eventemitter3';
6
6
  import { P2PNetworkConfig, AgentInfo, F2AMessage, PeerInfo, PeerDiscoveredEvent, PeerConnectedEvent, PeerDisconnectedEvent, Result } from '../types/index.js';
7
+ import { IdentityManager } from './identity/index.js';
7
8
  import { Middleware } from '../utils/middleware.js';
8
9
  export interface P2PNetworkEvents {
9
10
  'peer:discovered': (event: PeerDiscoveredEvent) => void;
@@ -23,17 +24,31 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
23
24
  private node;
24
25
  private config;
25
26
  private peerTable;
27
+ /** P2.4 修复:已连接 Peer 索引,用于 O(1) 查询 */
28
+ private connectedPeers;
29
+ /** P1 修复:信任的 Peer 白名单,不会被清理 */
30
+ private trustedPeers;
26
31
  /** 用于保护 peerTable 并发访问的锁 */
27
32
  private peerTableLock;
33
+ /** P2-4 修复:DISCOVER 消息速率限制器(每个 peer) */
34
+ private discoverRateLimiter;
35
+ /** P1 修复:保存事件监听器引用,用于 stop() 中移除 */
36
+ private boundEventHandlers;
28
37
  private agentInfo;
29
38
  private pendingTasks;
30
39
  private cleanupInterval?;
31
40
  private discoveryInterval?;
32
41
  private e2eeCrypto;
33
42
  private enableE2EE;
43
+ private identityManager?;
34
44
  private logger;
35
45
  private middlewareManager;
36
46
  constructor(agentInfo: AgentInfo, config?: P2PNetworkConfig);
47
+ /**
48
+ * 设置 IdentityManager(用于持久化身份)
49
+ * 必须在 start() 之前调用
50
+ */
51
+ setIdentityManager(identityManager: IdentityManager): void;
37
52
  /**
38
53
  * 启动 P2P 网络
39
54
  */
@@ -78,6 +93,13 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
78
93
  * 设置 libp2p 事件处理
79
94
  */
80
95
  private setupEventHandlers;
96
+ /**
97
+ * 建议-2 修复:提取 mDNS 发现后的连接和 DISCOVER 发送逻辑
98
+ * 减少嵌套深度,提高可读性
99
+ * @param peerId 发现的 Peer ID
100
+ * @param multiaddrs 发现的 multiaddr 列表
101
+ */
102
+ private initiateDiscovery;
81
103
  /**
82
104
  * 处理收到的消息
83
105
  */
@@ -101,6 +123,7 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
101
123
  private dispatchMessage;
102
124
  /**
103
125
  * 处理发现消息
126
+ * P2-4 修复:添加速率限制,防止恶意节点大量发送 DISCOVER 消息
104
127
  */
105
128
  private handleDiscoverMessage;
106
129
  /**
@@ -128,6 +151,7 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
128
151
  private handleDiscover;
129
152
  /**
130
153
  * 将发现到的 Agent 信息更新到 Peer 表
154
+ * P2-5 修复:改为 async/await 模式,确保锁正确等待
131
155
  */
132
156
  private upsertPeerFromAgentInfo;
133
157
  /**
@@ -140,6 +164,7 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
140
164
  private handleTaskResponse;
141
165
  /**
142
166
  * 连接引导节点
167
+ * 支持指纹验证,防止中间人攻击
143
168
  */
144
169
  private connectToBootstrapPeers;
145
170
  /**
@@ -192,6 +217,7 @@ export declare class P2PNetwork extends EventEmitter<P2PNetworkEvents> {
192
217
  private hasCapability;
193
218
  /**
194
219
  * 获取已连接的 Peers
220
+ * P2.4 修复:使用 connectedPeers Set 索引,O(1) 查询复杂度
195
221
  */
196
222
  getConnectedPeers(): PeerInfo[];
197
223
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"p2p-network.d.ts","sourceRoot":"","sources":["../../src/core/p2p-network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2p-network.d.ts","sourceRoot":"","sources":["../../src/core/p2p-network.ts"],"names":[],"mappings":"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"}