@f2a/openclaw-f2a 0.3.3 → 0.3.5

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 (120) hide show
  1. package/dist/F2AComponentRegistry.d.ts +195 -0
  2. package/dist/F2AComponentRegistry.d.ts.map +1 -0
  3. package/dist/F2AComponentRegistry.js +385 -0
  4. package/dist/F2AComponentRegistry.js.map +1 -0
  5. package/dist/F2ACore.d.ts +227 -0
  6. package/dist/F2ACore.d.ts.map +1 -0
  7. package/dist/F2ACore.js +648 -0
  8. package/dist/F2ACore.js.map +1 -0
  9. package/dist/F2AMessageRouter.d.ts +108 -0
  10. package/dist/F2AMessageRouter.d.ts.map +1 -0
  11. package/dist/F2AMessageRouter.js +157 -0
  12. package/dist/F2AMessageRouter.js.map +1 -0
  13. package/dist/F2AToolRegistry.d.ts +45 -0
  14. package/dist/F2AToolRegistry.d.ts.map +1 -0
  15. package/dist/F2AToolRegistry.js +79 -0
  16. package/dist/F2AToolRegistry.js.map +1 -0
  17. package/dist/F2AWebhookManager.d.ts +79 -0
  18. package/dist/F2AWebhookManager.d.ts.map +1 -0
  19. package/dist/F2AWebhookManager.js +241 -0
  20. package/dist/F2AWebhookManager.js.map +1 -0
  21. package/dist/agent-manager.js +6 -6
  22. package/dist/agent-manager.js.map +1 -1
  23. package/dist/announcement-queue.d.ts +1 -8
  24. package/dist/announcement-queue.d.ts.map +1 -1
  25. package/dist/announcement-queue.js +19 -19
  26. package/dist/announcement-queue.js.map +1 -1
  27. package/dist/claim-handlers.d.ts +13 -4
  28. package/dist/claim-handlers.d.ts.map +1 -1
  29. package/dist/claim-handlers.js +42 -13
  30. package/dist/claim-handlers.js.map +1 -1
  31. package/dist/connector-helpers.d.ts +143 -0
  32. package/dist/connector-helpers.d.ts.map +1 -0
  33. package/dist/connector-helpers.js +398 -0
  34. package/dist/connector-helpers.js.map +1 -0
  35. package/dist/connector.d.ts +87 -265
  36. package/dist/connector.d.ts.map +1 -1
  37. package/dist/connector.js +334 -2037
  38. package/dist/connector.js.map +1 -1
  39. package/dist/contact-manager.d.ts +1 -1
  40. package/dist/contact-manager.d.ts.map +1 -1
  41. package/dist/contact-manager.js +12 -5
  42. package/dist/contact-manager.js.map +1 -1
  43. package/dist/contact-tool-handlers.d.ts +72 -0
  44. package/dist/contact-tool-handlers.d.ts.map +1 -0
  45. package/dist/contact-tool-handlers.js +413 -0
  46. package/dist/contact-tool-handlers.js.map +1 -0
  47. package/dist/f2a-client.d.ts +168 -0
  48. package/dist/f2a-client.d.ts.map +1 -0
  49. package/dist/f2a-client.js +425 -0
  50. package/dist/f2a-client.js.map +1 -0
  51. package/dist/handshake-protocol.d.ts +3 -2
  52. package/dist/handshake-protocol.d.ts.map +1 -1
  53. package/dist/handshake-protocol.js +15 -6
  54. package/dist/handshake-protocol.js.map +1 -1
  55. package/dist/index.d.ts +12 -16
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +13 -45
  58. package/dist/index.js.map +1 -1
  59. package/dist/logger.d.ts +31 -9
  60. package/dist/logger.d.ts.map +1 -1
  61. package/dist/logger.js +268 -12
  62. package/dist/logger.js.map +1 -1
  63. package/dist/network-client.d.ts +1 -8
  64. package/dist/network-client.d.ts.map +1 -1
  65. package/dist/network-client.js.map +1 -1
  66. package/dist/node-manager.d.ts +8 -8
  67. package/dist/node-manager.d.ts.map +1 -1
  68. package/dist/node-manager.js +100 -36
  69. package/dist/node-manager.js.map +1 -1
  70. package/dist/plugin.d.ts +2 -2
  71. package/dist/plugin.d.ts.map +1 -1
  72. package/dist/plugin.js +43 -23
  73. package/dist/plugin.js.map +1 -1
  74. package/dist/task-guard.d.ts.map +1 -1
  75. package/dist/task-guard.js +44 -38
  76. package/dist/task-guard.js.map +1 -1
  77. package/dist/task-queue.d.ts +2 -8
  78. package/dist/task-queue.d.ts.map +1 -1
  79. package/dist/task-queue.js +144 -119
  80. package/dist/task-queue.js.map +1 -1
  81. package/dist/tool-handlers.d.ts +15 -3
  82. package/dist/tool-handlers.d.ts.map +1 -1
  83. package/dist/tool-handlers.js +90 -57
  84. package/dist/tool-handlers.js.map +1 -1
  85. package/dist/tools/contact-tools.d.ts +18 -0
  86. package/dist/tools/contact-tools.d.ts.map +1 -0
  87. package/dist/tools/contact-tools.js +176 -0
  88. package/dist/tools/contact-tools.js.map +1 -0
  89. package/dist/tools/index.d.ts +9 -0
  90. package/dist/tools/index.d.ts.map +1 -0
  91. package/dist/tools/index.js +15 -0
  92. package/dist/tools/index.js.map +1 -0
  93. package/dist/tools/network-tools.d.ts +17 -0
  94. package/dist/tools/network-tools.d.ts.map +1 -0
  95. package/dist/tools/network-tools.js +106 -0
  96. package/dist/tools/network-tools.js.map +1 -0
  97. package/dist/tools/task-tools.d.ts +25 -0
  98. package/dist/tools/task-tools.d.ts.map +1 -0
  99. package/dist/tools/task-tools.js +275 -0
  100. package/dist/tools/task-tools.js.map +1 -0
  101. package/dist/types.d.ts +376 -12
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/types.js.map +1 -1
  104. package/dist/webhook-handlers.d.ts +50 -0
  105. package/dist/webhook-handlers.d.ts.map +1 -0
  106. package/dist/webhook-handlers.js +183 -0
  107. package/dist/webhook-handlers.js.map +1 -0
  108. package/dist/webhook-pusher.d.ts +1 -8
  109. package/dist/webhook-pusher.d.ts.map +1 -1
  110. package/dist/webhook-pusher.js.map +1 -1
  111. package/dist/webhook-server.d.ts +3 -8
  112. package/dist/webhook-server.d.ts.map +1 -1
  113. package/dist/webhook-server.js +21 -4
  114. package/dist/webhook-server.js.map +1 -1
  115. package/openclaw.plugin.json +1 -1
  116. package/package.json +7 -4
  117. package/dist/reputation.d.ts +0 -156
  118. package/dist/reputation.d.ts.map +0 -1
  119. package/dist/reputation.js +0 -432
  120. package/dist/reputation.js.map +0 -1
@@ -0,0 +1,195 @@
1
+ /**
2
+ * F2A 组件注册器
3
+ *
4
+ * 负责管理所有 F2A 组件的懒加载和生命周期。
5
+ * 从 connector.ts 拆分(Issue #106),遵循单一职责原则。
6
+ *
7
+ * @module F2AComponentRegistry
8
+ */
9
+ import type { ApiLogger, F2APluginConfig, F2ANodeConfig, OpenClawPluginApi, F2ANetworkClientLike, ReputationSystemLike, NodeManagerLike, TaskQueueLike, AnnouncementQueueLike, ReviewCommitteeLike, ContactManagerLike, HandshakeProtocolLike, F2APublicInterface } from './types.js';
10
+ import { F2ANodeManager } from './node-manager.js';
11
+ import { F2ANetworkClient } from './network-client.js';
12
+ import { ReputationManager } from '@f2a/network';
13
+ import { CapabilityDetector } from './capability-detector.js';
14
+ import { TaskQueue } from './task-queue.js';
15
+ import { AnnouncementQueue } from './announcement-queue.js';
16
+ import { ReviewCommittee, F2A } from '@f2a/network';
17
+ import { ContactManager } from './contact-manager.js';
18
+ import { HandshakeProtocol } from './handshake-protocol.js';
19
+ /**
20
+ * 组件注册器配置
21
+ */
22
+ export interface ComponentRegistryConfig {
23
+ /** 插件配置 */
24
+ pluginConfig: F2APluginConfig;
25
+ /** 节点配置 */
26
+ nodeConfig: F2ANodeConfig;
27
+ /** OpenClaw API */
28
+ api?: OpenClawPluginApi;
29
+ /** Logger */
30
+ logger?: ApiLogger;
31
+ }
32
+ /**
33
+ * 初始化标志(防止重复初始化)
34
+ */
35
+ export interface InitializingFlags {
36
+ nodeManager: boolean;
37
+ taskQueue: boolean;
38
+ contactManager: boolean;
39
+ handshakeProtocol: boolean;
40
+ }
41
+ /**
42
+ * F2A 组件注册器
43
+ *
44
+ * 管理所有组件的懒加载:
45
+ * - 核心组件:nodeManager, networkClient, taskQueue, announcementQueue
46
+ * - 信誉系统:reputationSystem, reviewCommittee
47
+ * - 能力检测:capabilityDetector
48
+ * - 通讯录:contactManager, handshakeProtocol
49
+ */
50
+ export declare class F2AComponentRegistry {
51
+ private config;
52
+ private nodeConfig;
53
+ private api?;
54
+ private logger?;
55
+ private _nodeManager?;
56
+ private _networkClient?;
57
+ private _reputationSystem?;
58
+ private _capabilityDetector?;
59
+ private _taskQueue?;
60
+ private _announcementQueue?;
61
+ private _reviewCommittee?;
62
+ private _contactManager?;
63
+ private _handshakeProtocol?;
64
+ private initializingFlags;
65
+ /** F2A 实例(由外部设置,用于获取 peerId 等) */
66
+ private _f2a?;
67
+ constructor(config: ComponentRegistryConfig);
68
+ /**
69
+ * 获取插件配置
70
+ */
71
+ getConfig(): F2APluginConfig;
72
+ /**
73
+ * 获取 OpenClaw API
74
+ */
75
+ getApi(): OpenClawPluginApi | undefined;
76
+ /**
77
+ * 更新配置
78
+ */
79
+ updateConfig(config: Partial<F2APluginConfig>): void;
80
+ /**
81
+ * 获取默认的 F2A 数据目录
82
+ *
83
+ * 优先级:
84
+ * 1. config.dataDir(用户显式配置)
85
+ * 2. workspace/.f2a(agent workspace 目录)
86
+ * 3. ~/.f2a(兼容旧版本)
87
+ */
88
+ getDefaultDataDir(): string;
89
+ /**
90
+ * 获取节点管理器(懒加载)
91
+ */
92
+ get nodeManager(): F2ANodeManager;
93
+ /**
94
+ * 获取网络客户端(懒加载)
95
+ */
96
+ get networkClient(): F2ANetworkClient;
97
+ /**
98
+ * 获取任务队列(懒加载)
99
+ */
100
+ get taskQueue(): TaskQueue;
101
+ /**
102
+ * 获取公告队列(懒加载)
103
+ */
104
+ get announcementQueue(): AnnouncementQueue;
105
+ /**
106
+ * 获取信誉系统(懒加载)
107
+ * 重构:改用 @f2a/network 的 ReputationManager
108
+ */
109
+ get reputationSystem(): ReputationManager;
110
+ /**
111
+ * 获取评审委员会(懒加载)
112
+ * 重构:直接使用 ReputationManager,不需要 Adapter
113
+ */
114
+ get reviewCommittee(): ReviewCommittee;
115
+ /**
116
+ * 获取能力检测器(懒加载)
117
+ */
118
+ get capabilityDetector(): CapabilityDetector;
119
+ /**
120
+ * 获取联系人管理器(延迟初始化)
121
+ */
122
+ get contactManager(): ContactManager;
123
+ /**
124
+ * 获取握手协议处理器(延迟初始化)
125
+ * 依赖 F2A 实例和 ContactManager
126
+ */
127
+ get handshakeProtocol(): HandshakeProtocol;
128
+ /**
129
+ * 设置 F2A 实例
130
+ */
131
+ setF2A(f2a: F2A | undefined): void;
132
+ /**
133
+ * 更新 Logger
134
+ */
135
+ updateLogger(logger: ApiLogger | undefined): void;
136
+ /**
137
+ * 获取网络客户端(公共接口)
138
+ * @throws Error 如果组件初始化失败
139
+ */
140
+ getNetworkClient(): F2ANetworkClientLike;
141
+ /**
142
+ * 获取信誉系统(公共接口)
143
+ * @throws Error 如果组件初始化失败
144
+ */
145
+ getReputationSystem(): ReputationSystemLike;
146
+ /**
147
+ * 获取节点管理器(公共接口)
148
+ * @throws Error 如果组件初始化失败
149
+ */
150
+ getNodeManager(): NodeManagerLike;
151
+ /**
152
+ * 获取任务队列(公共接口)
153
+ * @throws Error 如果组件初始化失败
154
+ */
155
+ getTaskQueue(): TaskQueueLike;
156
+ /**
157
+ * 获取公告队列(公共接口)
158
+ * @throws Error 如果组件初始化失败
159
+ */
160
+ getAnnouncementQueue(): AnnouncementQueueLike;
161
+ /**
162
+ * 获取评审委员会(公共接口)
163
+ * 触发懒加载
164
+ */
165
+ getReviewCommittee(): ReviewCommitteeLike | undefined;
166
+ /**
167
+ * 获取联系人管理器(公共接口)
168
+ * @throws Error 如果组件初始化失败
169
+ */
170
+ getContactManager(): ContactManagerLike;
171
+ /**
172
+ * 获取握手协议处理器(公共接口)
173
+ * @throws Error 如果 F2A 或 ContactManager 未就绪
174
+ */
175
+ getHandshakeProtocol(): HandshakeProtocolLike;
176
+ /**
177
+ * 获取 F2A 状态(公共接口)
178
+ */
179
+ getF2AStatus(): {
180
+ running: boolean;
181
+ peerId?: string;
182
+ uptime?: number;
183
+ };
184
+ /**
185
+ * 获取 F2A 实例(公共接口)
186
+ * 返回 F2A 公共接口供需要直接访问的场景使用。
187
+ * 注意:返回 undefined 表示 F2A 实例未初始化。
188
+ */
189
+ getF2A(): F2APublicInterface | undefined;
190
+ /**
191
+ * 清理所有组件(用于 shutdown)
192
+ */
193
+ cleanup(): Promise<void>;
194
+ }
195
+ //# sourceMappingURL=F2AComponentRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"F2AComponentRegistry.d.ts","sourceRoot":"","sources":["../src/F2AComponentRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ /**
3
+ * F2A 组件注册器
4
+ *
5
+ * 负责管理所有 F2A 组件的懒加载和生命周期。
6
+ * 从 connector.ts 拆分(Issue #106),遵循单一职责原则。
7
+ *
8
+ * @module F2AComponentRegistry
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.F2AComponentRegistry = void 0;
12
+ const path_1 = require("path");
13
+ const os_1 = require("os");
14
+ const types_js_1 = require("./types.js");
15
+ const node_manager_js_1 = require("./node-manager.js");
16
+ const network_client_js_1 = require("./network-client.js");
17
+ const network_1 = require("@f2a/network");
18
+ const capability_detector_js_1 = require("./capability-detector.js");
19
+ const task_queue_js_1 = require("./task-queue.js");
20
+ const announcement_queue_js_1 = require("./announcement-queue.js");
21
+ const network_2 = require("@f2a/network");
22
+ const contact_manager_js_1 = require("./contact-manager.js");
23
+ const handshake_protocol_js_1 = require("./handshake-protocol.js");
24
+ const connector_helpers_js_1 = require("./connector-helpers.js");
25
+ /**
26
+ * F2A 组件注册器
27
+ *
28
+ * 管理所有组件的懒加载:
29
+ * - 核心组件:nodeManager, networkClient, taskQueue, announcementQueue
30
+ * - 信誉系统:reputationSystem, reviewCommittee
31
+ * - 能力检测:capabilityDetector
32
+ * - 通讯录:contactManager, handshakeProtocol
33
+ */
34
+ class F2AComponentRegistry {
35
+ // ========== 配置和依赖 ==========
36
+ config;
37
+ nodeConfig;
38
+ api;
39
+ logger;
40
+ // ========== 组件实例(懒加载) ==========
41
+ _nodeManager;
42
+ _networkClient;
43
+ _reputationSystem;
44
+ _capabilityDetector;
45
+ _taskQueue;
46
+ _announcementQueue;
47
+ _reviewCommittee;
48
+ _contactManager;
49
+ _handshakeProtocol;
50
+ // ========== 初始化标志 ==========
51
+ initializingFlags = {
52
+ nodeManager: false,
53
+ taskQueue: false,
54
+ contactManager: false,
55
+ handshakeProtocol: false,
56
+ };
57
+ // ========== F2A 实例引用 ==========
58
+ /** F2A 实例(由外部设置,用于获取 peerId 等) */
59
+ _f2a;
60
+ constructor(config) {
61
+ this.config = config.pluginConfig;
62
+ this.nodeConfig = config.nodeConfig;
63
+ this.api = config.api;
64
+ this.logger = config.logger;
65
+ }
66
+ // ========== 配置访问 ==========
67
+ /**
68
+ * 获取插件配置
69
+ */
70
+ getConfig() {
71
+ return this.config;
72
+ }
73
+ /**
74
+ * 获取 OpenClaw API
75
+ */
76
+ getApi() {
77
+ return this.api;
78
+ }
79
+ /**
80
+ * 更新配置
81
+ */
82
+ updateConfig(config) {
83
+ this.config = { ...this.config, ...config };
84
+ }
85
+ // ========== 数据目录 ==========
86
+ /**
87
+ * 获取默认的 F2A 数据目录
88
+ *
89
+ * 优先级:
90
+ * 1. config.dataDir(用户显式配置)
91
+ * 2. workspace/.f2a(agent workspace 目录)
92
+ * 3. ~/.f2a(兼容旧版本)
93
+ */
94
+ getDefaultDataDir() {
95
+ // 优先使用用户配置的 dataDir
96
+ if (this.config?.dataDir) {
97
+ return this.config.dataDir;
98
+ }
99
+ // 默认:使用 agent workspace 目录
100
+ const workspace = this.api?.config?.agents?.defaults?.workspace;
101
+ // 验证 workspace 路径安全性
102
+ if ((0, connector_helpers_js_1.isPathSafe)(workspace)) {
103
+ return (0, path_1.join)(workspace, '.f2a');
104
+ }
105
+ // 兼容旧版本
106
+ return (0, path_1.join)((0, os_1.homedir)(), '.f2a');
107
+ }
108
+ // ========== 核心组件 ==========
109
+ /**
110
+ * 获取节点管理器(懒加载)
111
+ */
112
+ get nodeManager() {
113
+ if (!this._nodeManager && !this.initializingFlags.nodeManager) {
114
+ this.initializingFlags.nodeManager = true;
115
+ try {
116
+ this._nodeManager = new node_manager_js_1.F2ANodeManager(this.nodeConfig, this.logger);
117
+ }
118
+ finally {
119
+ this.initializingFlags.nodeManager = false;
120
+ }
121
+ }
122
+ // P1-4 修复:添加 undefined 检查替代非空断言
123
+ if (!this._nodeManager) {
124
+ throw new Error('F2ANodeManager 初始化失败');
125
+ }
126
+ return this._nodeManager;
127
+ }
128
+ /**
129
+ * 获取网络客户端(懒加载)
130
+ */
131
+ get networkClient() {
132
+ if (!this._networkClient) {
133
+ this._networkClient = new network_client_js_1.F2ANetworkClient(this.nodeConfig, this.logger);
134
+ }
135
+ return this._networkClient;
136
+ }
137
+ /**
138
+ * 获取任务队列(懒加载)
139
+ */
140
+ get taskQueue() {
141
+ if (!this._taskQueue && !this.initializingFlags.taskQueue) {
142
+ this.initializingFlags.taskQueue = true;
143
+ try {
144
+ const dataDir = this.getDefaultDataDir();
145
+ this._taskQueue = new task_queue_js_1.TaskQueue({
146
+ maxSize: this.config.maxQueuedTasks || 100,
147
+ maxAgeMs: 24 * 60 * 60 * 1000, // 24小时
148
+ persistDir: dataDir,
149
+ persistEnabled: true,
150
+ logger: this.logger
151
+ });
152
+ this.logger?.info('[F2A] TaskQueue 已初始化(懒加载)');
153
+ }
154
+ finally {
155
+ this.initializingFlags.taskQueue = false;
156
+ }
157
+ }
158
+ // P1-4 修复:添加 undefined 检查替代非空断言
159
+ if (!this._taskQueue) {
160
+ throw new Error('TaskQueue 初始化失败');
161
+ }
162
+ return this._taskQueue;
163
+ }
164
+ /**
165
+ * 获取公告队列(懒加载)
166
+ */
167
+ get announcementQueue() {
168
+ if (!this._announcementQueue) {
169
+ this._announcementQueue = new announcement_queue_js_1.AnnouncementQueue({
170
+ maxSize: 50,
171
+ maxAgeMs: 30 * 60 * 1000, // 30分钟
172
+ logger: this.logger
173
+ });
174
+ }
175
+ return this._announcementQueue;
176
+ }
177
+ // ========== 信誉系统 ==========
178
+ /**
179
+ * 获取信誉系统(懒加载)
180
+ * 重构:改用 @f2a/network 的 ReputationManager
181
+ */
182
+ get reputationSystem() {
183
+ if (!this._reputationSystem) {
184
+ this._reputationSystem = new network_1.ReputationManager({
185
+ initialScore: types_js_1.INTERNAL_REPUTATION_CONFIG.initialScore,
186
+ minScore: 0,
187
+ maxScore: 100,
188
+ decayRate: types_js_1.INTERNAL_REPUTATION_CONFIG.decayRate,
189
+ });
190
+ }
191
+ return this._reputationSystem;
192
+ }
193
+ /**
194
+ * 获取评审委员会(懒加载)
195
+ * 重构:直接使用 ReputationManager,不需要 Adapter
196
+ */
197
+ get reviewCommittee() {
198
+ if (!this._reviewCommittee) {
199
+ this._reviewCommittee = new network_2.ReviewCommittee(this.reputationSystem, {
200
+ minReviewers: 1,
201
+ maxReviewers: 5,
202
+ minReputation: types_js_1.INTERNAL_REPUTATION_CONFIG.minScoreForReview,
203
+ reviewTimeout: 5 * 60 * 1000 // 5 分钟
204
+ });
205
+ }
206
+ return this._reviewCommittee;
207
+ }
208
+ // ========== 能力检测 ==========
209
+ /**
210
+ * 获取能力检测器(懒加载)
211
+ */
212
+ get capabilityDetector() {
213
+ if (!this._capabilityDetector) {
214
+ this._capabilityDetector = new capability_detector_js_1.CapabilityDetector();
215
+ }
216
+ return this._capabilityDetector;
217
+ }
218
+ // ========== 通讯录和握手 ==========
219
+ /**
220
+ * 获取联系人管理器(延迟初始化)
221
+ */
222
+ get contactManager() {
223
+ if (!this._contactManager && !this.initializingFlags.contactManager) {
224
+ this.initializingFlags.contactManager = true;
225
+ try {
226
+ const dataDir = this.getDefaultDataDir();
227
+ this._contactManager = new contact_manager_js_1.ContactManager(dataDir, this.logger);
228
+ this.logger?.info('[F2A] ContactManager 已初始化');
229
+ }
230
+ finally {
231
+ this.initializingFlags.contactManager = false;
232
+ }
233
+ }
234
+ // P1-4 修复:添加 undefined 检查替代非空断言
235
+ if (!this._contactManager) {
236
+ throw new Error('ContactManager 初始化失败');
237
+ }
238
+ return this._contactManager;
239
+ }
240
+ /**
241
+ * 获取握手协议处理器(延迟初始化)
242
+ * 依赖 F2A 实例和 ContactManager
243
+ */
244
+ get handshakeProtocol() {
245
+ if (!this._handshakeProtocol && !this.initializingFlags.handshakeProtocol && this._f2a && this._contactManager) {
246
+ this.initializingFlags.handshakeProtocol = true;
247
+ try {
248
+ this._handshakeProtocol = new handshake_protocol_js_1.HandshakeProtocol(this._f2a, this._contactManager, this.logger, this.config.handshake // 传递配置
249
+ );
250
+ this.logger?.info('[F2A] HandshakeProtocol 已初始化');
251
+ }
252
+ finally {
253
+ this.initializingFlags.handshakeProtocol = false;
254
+ }
255
+ }
256
+ // P1-4 修复:添加 undefined 检查替代非空断言
257
+ if (!this._handshakeProtocol) {
258
+ throw new Error('HandshakeProtocol 初始化失败(可能 F2A 或 ContactManager 未就绪)');
259
+ }
260
+ return this._handshakeProtocol;
261
+ }
262
+ // ========== F2A 实例管理 ==========
263
+ /**
264
+ * 设置 F2A 实例
265
+ */
266
+ setF2A(f2a) {
267
+ this._f2a = f2a;
268
+ }
269
+ // ========== Logger 管理 ==========
270
+ /**
271
+ * 更新 Logger
272
+ */
273
+ updateLogger(logger) {
274
+ this.logger = logger;
275
+ }
276
+ // ========== 公共接口 getter(F2APluginPublicInterface 实现) ==========
277
+ // P2-1 修复:返回简化接口类型,使用类型断言避免严格的类型匹配问题
278
+ /**
279
+ * 获取网络客户端(公共接口)
280
+ * @throws Error 如果组件初始化失败
281
+ */
282
+ getNetworkClient() {
283
+ return this.networkClient;
284
+ }
285
+ /**
286
+ * 获取信誉系统(公共接口)
287
+ * @throws Error 如果组件初始化失败
288
+ */
289
+ getReputationSystem() {
290
+ return this.reputationSystem;
291
+ }
292
+ /**
293
+ * 获取节点管理器(公共接口)
294
+ * @throws Error 如果组件初始化失败
295
+ */
296
+ getNodeManager() {
297
+ return this.nodeManager;
298
+ }
299
+ /**
300
+ * 获取任务队列(公共接口)
301
+ * @throws Error 如果组件初始化失败
302
+ */
303
+ getTaskQueue() {
304
+ return this.taskQueue;
305
+ }
306
+ /**
307
+ * 获取公告队列(公共接口)
308
+ * @throws Error 如果组件初始化失败
309
+ */
310
+ getAnnouncementQueue() {
311
+ return this.announcementQueue;
312
+ }
313
+ /**
314
+ * 获取评审委员会(公共接口)
315
+ * 触发懒加载
316
+ */
317
+ getReviewCommittee() {
318
+ // 触发懒加载
319
+ return this.reviewCommittee;
320
+ }
321
+ /**
322
+ * 获取联系人管理器(公共接口)
323
+ * @throws Error 如果组件初始化失败
324
+ */
325
+ getContactManager() {
326
+ return this.contactManager;
327
+ }
328
+ /**
329
+ * 获取握手协议处理器(公共接口)
330
+ * @throws Error 如果 F2A 或 ContactManager 未就绪
331
+ */
332
+ getHandshakeProtocol() {
333
+ return this.handshakeProtocol;
334
+ }
335
+ /**
336
+ * 获取 F2A 状态(公共接口)
337
+ */
338
+ getF2AStatus() {
339
+ if (!this._f2a) {
340
+ return { running: false };
341
+ }
342
+ return {
343
+ running: true,
344
+ peerId: this._f2a.peerId,
345
+ };
346
+ }
347
+ /**
348
+ * 获取 F2A 实例(公共接口)
349
+ * 返回 F2A 公共接口供需要直接访问的场景使用。
350
+ * 注意:返回 undefined 表示 F2A 实例未初始化。
351
+ */
352
+ getF2A() {
353
+ return this._f2a;
354
+ }
355
+ // ========== 清理 ==========
356
+ /**
357
+ * 清理所有组件(用于 shutdown)
358
+ */
359
+ async cleanup() {
360
+ // TaskQueue 需要关闭持久化
361
+ if (this._taskQueue) {
362
+ this._taskQueue.close?.();
363
+ this._taskQueue = undefined;
364
+ }
365
+ // 清空其他组件引用
366
+ this._nodeManager = undefined;
367
+ this._networkClient = undefined;
368
+ this._reputationSystem = undefined;
369
+ this._capabilityDetector = undefined;
370
+ this._announcementQueue = undefined;
371
+ this._reviewCommittee = undefined;
372
+ this._contactManager = undefined;
373
+ this._handshakeProtocol = undefined;
374
+ this._f2a = undefined;
375
+ // 重置初始化标志
376
+ this.initializingFlags = {
377
+ nodeManager: false,
378
+ taskQueue: false,
379
+ contactManager: false,
380
+ handshakeProtocol: false,
381
+ };
382
+ }
383
+ }
384
+ exports.F2AComponentRegistry = F2AComponentRegistry;
385
+ //# sourceMappingURL=F2AComponentRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"F2AComponentRegistry.js","sourceRoot":"","sources":["../src/F2AComponentRegistry.ts"],"names":[],"mappings":"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"}