@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.
- package/dist/F2AComponentRegistry.d.ts +195 -0
- package/dist/F2AComponentRegistry.d.ts.map +1 -0
- package/dist/F2AComponentRegistry.js +385 -0
- package/dist/F2AComponentRegistry.js.map +1 -0
- package/dist/F2ACore.d.ts +227 -0
- package/dist/F2ACore.d.ts.map +1 -0
- package/dist/F2ACore.js +648 -0
- package/dist/F2ACore.js.map +1 -0
- package/dist/F2AMessageRouter.d.ts +108 -0
- package/dist/F2AMessageRouter.d.ts.map +1 -0
- package/dist/F2AMessageRouter.js +157 -0
- package/dist/F2AMessageRouter.js.map +1 -0
- package/dist/F2AToolRegistry.d.ts +45 -0
- package/dist/F2AToolRegistry.d.ts.map +1 -0
- package/dist/F2AToolRegistry.js +79 -0
- package/dist/F2AToolRegistry.js.map +1 -0
- package/dist/F2AWebhookManager.d.ts +79 -0
- package/dist/F2AWebhookManager.d.ts.map +1 -0
- package/dist/F2AWebhookManager.js +241 -0
- package/dist/F2AWebhookManager.js.map +1 -0
- package/dist/agent-manager.js +6 -6
- package/dist/agent-manager.js.map +1 -1
- package/dist/announcement-queue.d.ts +1 -8
- package/dist/announcement-queue.d.ts.map +1 -1
- package/dist/announcement-queue.js +19 -19
- package/dist/announcement-queue.js.map +1 -1
- package/dist/claim-handlers.d.ts +13 -4
- package/dist/claim-handlers.d.ts.map +1 -1
- package/dist/claim-handlers.js +42 -13
- package/dist/claim-handlers.js.map +1 -1
- package/dist/connector-helpers.d.ts +143 -0
- package/dist/connector-helpers.d.ts.map +1 -0
- package/dist/connector-helpers.js +398 -0
- package/dist/connector-helpers.js.map +1 -0
- package/dist/connector.d.ts +87 -265
- package/dist/connector.d.ts.map +1 -1
- package/dist/connector.js +334 -2037
- package/dist/connector.js.map +1 -1
- package/dist/contact-manager.d.ts +1 -1
- package/dist/contact-manager.d.ts.map +1 -1
- package/dist/contact-manager.js +12 -5
- package/dist/contact-manager.js.map +1 -1
- package/dist/contact-tool-handlers.d.ts +72 -0
- package/dist/contact-tool-handlers.d.ts.map +1 -0
- package/dist/contact-tool-handlers.js +413 -0
- package/dist/contact-tool-handlers.js.map +1 -0
- package/dist/f2a-client.d.ts +168 -0
- package/dist/f2a-client.d.ts.map +1 -0
- package/dist/f2a-client.js +425 -0
- package/dist/f2a-client.js.map +1 -0
- package/dist/handshake-protocol.d.ts +3 -2
- package/dist/handshake-protocol.d.ts.map +1 -1
- package/dist/handshake-protocol.js +15 -6
- package/dist/handshake-protocol.js.map +1 -1
- package/dist/index.d.ts +12 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -45
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +31 -9
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +268 -12
- package/dist/logger.js.map +1 -1
- package/dist/network-client.d.ts +1 -8
- package/dist/network-client.d.ts.map +1 -1
- package/dist/network-client.js.map +1 -1
- package/dist/node-manager.d.ts +8 -8
- package/dist/node-manager.d.ts.map +1 -1
- package/dist/node-manager.js +100 -36
- package/dist/node-manager.js.map +1 -1
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +43 -23
- package/dist/plugin.js.map +1 -1
- package/dist/task-guard.d.ts.map +1 -1
- package/dist/task-guard.js +44 -38
- package/dist/task-guard.js.map +1 -1
- package/dist/task-queue.d.ts +2 -8
- package/dist/task-queue.d.ts.map +1 -1
- package/dist/task-queue.js +144 -119
- package/dist/task-queue.js.map +1 -1
- package/dist/tool-handlers.d.ts +15 -3
- package/dist/tool-handlers.d.ts.map +1 -1
- package/dist/tool-handlers.js +90 -57
- package/dist/tool-handlers.js.map +1 -1
- package/dist/tools/contact-tools.d.ts +18 -0
- package/dist/tools/contact-tools.d.ts.map +1 -0
- package/dist/tools/contact-tools.js +176 -0
- package/dist/tools/contact-tools.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/network-tools.d.ts +17 -0
- package/dist/tools/network-tools.d.ts.map +1 -0
- package/dist/tools/network-tools.js +106 -0
- package/dist/tools/network-tools.js.map +1 -0
- package/dist/tools/task-tools.d.ts +25 -0
- package/dist/tools/task-tools.d.ts.map +1 -0
- package/dist/tools/task-tools.js +275 -0
- package/dist/tools/task-tools.js.map +1 -0
- package/dist/types.d.ts +376 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/webhook-handlers.d.ts +50 -0
- package/dist/webhook-handlers.d.ts.map +1 -0
- package/dist/webhook-handlers.js +183 -0
- package/dist/webhook-handlers.js.map +1 -0
- package/dist/webhook-pusher.d.ts +1 -8
- package/dist/webhook-pusher.d.ts.map +1 -1
- package/dist/webhook-pusher.js.map +1 -1
- package/dist/webhook-server.d.ts +3 -8
- package/dist/webhook-server.d.ts.map +1 -1
- package/dist/webhook-server.js +21 -4
- package/dist/webhook-server.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +7 -4
- package/dist/reputation.d.ts +0 -156
- package/dist/reputation.d.ts.map +0 -1
- package/dist/reputation.js +0 -432
- 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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"}
|