@f2a/openclaw-f2a 0.3.3 → 0.3.4

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 +85 -54
  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
@@ -1,432 +0,0 @@
1
- "use strict";
2
- /**
3
- * 信誉系统
4
- * 管理 Peer 的信誉分数
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ReputationManagerAdapter = exports.ReputationSystem = void 0;
8
- const fs_1 = require("fs");
9
- const path_1 = require("path");
10
- const types_js_1 = require("./types.js");
11
- const logger_js_1 = require("./logger.js");
12
- class ReputationSystem {
13
- config;
14
- entries = new Map();
15
- dataPath;
16
- // 防抖写入相关
17
- savePending = false;
18
- saveTimer;
19
- lastSaveTime = Date.now(); // 初始化为当前时间,避免首次调用立即触发
20
- debounceConfig = {
21
- delayMs: 100, // 100ms 防抖延迟
22
- maxWaitMs: 1000 // 最多等待 1 秒
23
- };
24
- constructor(config, dataDir) {
25
- this.config = config;
26
- this.dataPath = (0, path_1.join)(dataDir, 'reputation.json');
27
- this.load();
28
- }
29
- /**
30
- * 获取 Peer 信誉
31
- */
32
- getReputation(peerId) {
33
- if (!this.entries.has(peerId)) {
34
- this.entries.set(peerId, this.createDefaultEntry(peerId));
35
- }
36
- return this.entries.get(peerId);
37
- }
38
- /**
39
- * 记录任务成功
40
- */
41
- recordSuccess(peerId, taskId, latency) {
42
- const entry = this.getReputation(peerId);
43
- entry.successfulTasks++;
44
- entry.totalTasks++;
45
- entry.score = Math.min(100, entry.score + 10);
46
- entry.avgResponseTime = this.updateAvgResponseTime(entry, latency);
47
- entry.lastInteraction = Date.now();
48
- entry.history.push({
49
- type: 'task_success',
50
- taskId,
51
- delta: +10,
52
- timestamp: Date.now()
53
- });
54
- this.trimHistory(entry);
55
- this.save();
56
- }
57
- /**
58
- * 记录任务失败
59
- */
60
- recordFailure(peerId, taskId, reason) {
61
- const entry = this.getReputation(peerId);
62
- entry.failedTasks++;
63
- entry.totalTasks++;
64
- entry.score = Math.max(0, entry.score - 20);
65
- entry.lastInteraction = Date.now();
66
- entry.history.push({
67
- type: 'task_failure',
68
- taskId,
69
- delta: -20,
70
- timestamp: Date.now(),
71
- reason
72
- });
73
- this.trimHistory(entry);
74
- this.save();
75
- }
76
- /**
77
- * 记录任务拒绝
78
- */
79
- recordRejection(peerId, taskId, reason) {
80
- const entry = this.getReputation(peerId);
81
- entry.totalTasks++;
82
- entry.score = Math.max(0, entry.score - 5);
83
- entry.lastInteraction = Date.now();
84
- entry.history.push({
85
- type: 'task_rejected',
86
- taskId,
87
- delta: -5,
88
- timestamp: Date.now(),
89
- reason
90
- });
91
- this.trimHistory(entry);
92
- this.save();
93
- }
94
- /**
95
- * 记录超时
96
- */
97
- recordTimeout(peerId, taskId) {
98
- const entry = this.getReputation(peerId);
99
- entry.totalTasks++;
100
- entry.score = Math.max(0, entry.score - 15);
101
- entry.lastInteraction = Date.now();
102
- entry.history.push({
103
- type: 'timeout',
104
- taskId,
105
- delta: -15,
106
- timestamp: Date.now()
107
- });
108
- this.trimHistory(entry);
109
- this.save();
110
- }
111
- /**
112
- * 记录恶意行为
113
- */
114
- recordMalicious(peerId, reason) {
115
- const entry = this.getReputation(peerId);
116
- entry.score = Math.max(0, entry.score - 50);
117
- entry.lastInteraction = Date.now();
118
- entry.history.push({
119
- type: 'malicious',
120
- delta: -50,
121
- timestamp: Date.now(),
122
- reason
123
- });
124
- this.trimHistory(entry);
125
- this.save();
126
- }
127
- /**
128
- * 检查是否允许服务
129
- */
130
- isAllowed(peerId) {
131
- if (!types_js_1.INTERNAL_REPUTATION_CONFIG.enabled)
132
- return true;
133
- const entry = this.getReputation(peerId);
134
- return entry.score >= types_js_1.INTERNAL_REPUTATION_CONFIG.minScoreForService;
135
- }
136
- /**
137
- * 检查节点是否具有指定权限
138
- * 基于信誉分数判断权限等级
139
- *
140
- * 权限等级:
141
- * - restricted (0-20): 仅可执行
142
- * - novice (20-40): 可发布、可执行
143
- * - participant (40-60): 可发布、可执行、可评审
144
- * - contributor (60-80): 可发布、可执行、可评审,发布优先级更高
145
- * - core (80-100): 可发布、可执行、可评审,最高发布优先级
146
- *
147
- * @param peerId - 节点的唯一标识符
148
- * @param permission - 要检查的权限类型:'publish'(发布)、'execute'(执行)、'review'(评审)
149
- * @returns 如果节点具有该权限则返回 true,否则返回 false
150
- */
151
- hasPermission(peerId, permission) {
152
- const entry = this.getReputation(peerId);
153
- const score = entry.score;
154
- // 根据分数确定权限
155
- switch (permission) {
156
- case 'publish':
157
- // 20分以上可发布
158
- return score >= 20;
159
- case 'execute':
160
- // 所有节点都可以执行
161
- return true;
162
- case 'review':
163
- // 40分以上可评审
164
- return score >= 40;
165
- default:
166
- return false;
167
- }
168
- }
169
- /**
170
- * 记录评审奖励
171
- * 当节点完成评审任务时调用,会提高信誉分数
172
- * @param peerId - 节点的唯一标识符
173
- * @param delta - 分数变化量,默认为 3
174
- */
175
- recordReviewReward(peerId, delta = types_js_1.INTERNAL_REPUTATION_CONFIG.reviewReward) {
176
- const entry = this.getReputation(peerId);
177
- entry.score = Math.min(100, entry.score + delta);
178
- entry.lastInteraction = Date.now();
179
- entry.history.push({
180
- type: 'review_reward',
181
- delta,
182
- timestamp: Date.now()
183
- });
184
- this.trimHistory(entry);
185
- this.save();
186
- }
187
- /**
188
- * 记录评审惩罚
189
- * 当节点提供低质量评审或违规时调用,会降低信誉分数
190
- * @param peerId - 节点的唯一标识符
191
- * @param delta - 分数变化量,默认为 -5
192
- * @param reason - 可选的惩罚原因描述
193
- */
194
- recordReviewPenalty(peerId, delta = -types_js_1.INTERNAL_REPUTATION_CONFIG.reviewPenalty, reason) {
195
- const entry = this.getReputation(peerId);
196
- entry.score = Math.max(0, entry.score + delta);
197
- entry.lastInteraction = Date.now();
198
- entry.history.push({
199
- type: 'review_penalty',
200
- delta,
201
- timestamp: Date.now(),
202
- reason
203
- });
204
- this.trimHistory(entry);
205
- this.save();
206
- }
207
- /**
208
- * 获取所有信誉记录
209
- */
210
- getAllReputations() {
211
- return Array.from(this.entries.values());
212
- }
213
- /**
214
- * 清理过期记录
215
- */
216
- cleanup(maxAgeDays = 30) {
217
- const cutoff = Date.now() - (maxAgeDays * 24 * 60 * 60 * 1000);
218
- for (const [peerId, entry] of this.entries) {
219
- if (entry.lastInteraction < cutoff && entry.totalTasks === 0) {
220
- this.entries.delete(peerId);
221
- }
222
- }
223
- this.save();
224
- }
225
- /**
226
- * 获取高信誉节点
227
- */
228
- getHighReputationNodes(minScore) {
229
- return Array.from(this.entries.values())
230
- .filter(entry => entry.score >= minScore);
231
- }
232
- /**
233
- * 创建默认条目
234
- */
235
- createDefaultEntry(peerId) {
236
- return {
237
- peerId,
238
- score: types_js_1.INTERNAL_REPUTATION_CONFIG.initialScore,
239
- successfulTasks: 0,
240
- failedTasks: 0,
241
- totalTasks: 0,
242
- avgResponseTime: 0,
243
- lastInteraction: 0,
244
- history: []
245
- };
246
- }
247
- /**
248
- * 更新平均响应时间
249
- */
250
- updateAvgResponseTime(entry, newLatency) {
251
- if (entry.avgResponseTime === 0) {
252
- return newLatency;
253
- }
254
- // 指数移动平均
255
- return entry.avgResponseTime * 0.7 + newLatency * 0.3;
256
- }
257
- /**
258
- * 修剪历史记录
259
- */
260
- trimHistory(entry, maxSize = 100) {
261
- if (entry.history.length > maxSize) {
262
- entry.history = entry.history.slice(-maxSize);
263
- }
264
- }
265
- /**
266
- * 加载数据
267
- */
268
- load() {
269
- if ((0, fs_1.existsSync)(this.dataPath)) {
270
- try {
271
- const data = JSON.parse((0, fs_1.readFileSync)(this.dataPath, 'utf-8'));
272
- for (const entry of data) {
273
- this.entries.set(entry.peerId, entry);
274
- }
275
- logger_js_1.pluginLogger.info('加载了 %d 条信誉记录', this.entries.size);
276
- }
277
- catch (e) {
278
- logger_js_1.pluginLogger.error('加载信誉数据失败: error=%s', e);
279
- }
280
- }
281
- }
282
- /**
283
- * 保存数据(防抖 + 异步写入)
284
- *
285
- * P0 修复:使用防抖机制避免高并发下的阻塞问题
286
- * - 短时间内多次调用只触发一次实际写入
287
- * - 使用异步写入避免阻塞主线程
288
- * - 原子写入保证数据完整性
289
- */
290
- save() {
291
- // 标记有待保存的数据
292
- this.savePending = true;
293
- // 如果已有定时器,先清除
294
- if (this.saveTimer) {
295
- clearTimeout(this.saveTimer);
296
- }
297
- const now = Date.now();
298
- const timeSinceLastSave = now - this.lastSaveTime;
299
- // 如果距离上次保存超过 maxWaitMs,立即保存
300
- if (timeSinceLastSave >= this.debounceConfig.maxWaitMs) {
301
- this.doSave();
302
- return;
303
- }
304
- // 否则设置防抖定时器
305
- this.saveTimer = setTimeout(() => {
306
- if (this.savePending) {
307
- this.doSave();
308
- }
309
- }, this.debounceConfig.delayMs);
310
- // 防止定时器阻止进程退出
311
- if (this.saveTimer.unref) {
312
- this.saveTimer.unref();
313
- }
314
- }
315
- /**
316
- * 执行实际的保存操作(异步)
317
- */
318
- doSave() {
319
- this.savePending = false;
320
- this.saveTimer = undefined;
321
- this.lastSaveTime = Date.now();
322
- const tempPath = `${this.dataPath}.tmp`;
323
- // 使用 setImmediate 将文件操作移到下一个事件循环
324
- // 避免阻塞当前操作
325
- setImmediate(() => {
326
- try {
327
- const data = Array.from(this.entries.values());
328
- const jsonContent = JSON.stringify(data, null, 2);
329
- // 1. 写入临时文件
330
- (0, fs_1.writeFileSync)(tempPath, jsonContent, { encoding: 'utf-8' });
331
- // 2. 原子重命名(在 POSIX 系统上是原子操作)
332
- (0, fs_1.renameSync)(tempPath, this.dataPath);
333
- }
334
- catch (e) {
335
- logger_js_1.pluginLogger.error('保存信誉数据失败: error=%s', e);
336
- // 清理临时文件(如果存在)
337
- try {
338
- if ((0, fs_1.existsSync)(tempPath)) {
339
- (0, fs_1.unlinkSync)(tempPath);
340
- }
341
- }
342
- catch {
343
- // 忽略清理错误
344
- }
345
- }
346
- });
347
- }
348
- /**
349
- * 强制同步保存(用于关闭时)
350
- */
351
- flush() {
352
- // 清除防抖定时器
353
- if (this.saveTimer) {
354
- clearTimeout(this.saveTimer);
355
- this.saveTimer = undefined;
356
- }
357
- // 如果有待保存的数据,立即同步保存
358
- if (this.savePending) {
359
- this.savePending = false;
360
- this.doSaveSync();
361
- }
362
- }
363
- /**
364
- * 同步保存操作(用于关闭时确保数据持久化)
365
- */
366
- doSaveSync() {
367
- const tempPath = `${this.dataPath}.tmp`;
368
- try {
369
- const data = Array.from(this.entries.values());
370
- const jsonContent = JSON.stringify(data, null, 2);
371
- (0, fs_1.writeFileSync)(tempPath, jsonContent, { encoding: 'utf-8' });
372
- (0, fs_1.renameSync)(tempPath, this.dataPath);
373
- }
374
- catch (e) {
375
- logger_js_1.pluginLogger.error('同步保存信誉数据失败: error=%s', e);
376
- try {
377
- if ((0, fs_1.existsSync)(tempPath)) {
378
- (0, fs_1.unlinkSync)(tempPath);
379
- }
380
- }
381
- catch {
382
- // 忽略清理错误
383
- }
384
- }
385
- }
386
- }
387
- exports.ReputationSystem = ReputationSystem;
388
- /**
389
- * ReputationManager 适配器
390
- *
391
- * 将 ReputationSystem 包装为 ReviewCommittee 所需的 IReputationManager 接口。
392
- * 用于解决 ReviewCommittee (src/core/) 依赖 IReputationManager 接口,
393
- * 而 adapter 使用的是 ReputationSystem 的问题。
394
- */
395
- class ReputationManagerAdapter {
396
- reputationSystem;
397
- constructor(reputationSystem) {
398
- this.reputationSystem = reputationSystem;
399
- }
400
- /**
401
- * 检查节点是否具有指定权限
402
- */
403
- hasPermission(peerId, permission) {
404
- return this.reputationSystem.hasPermission(peerId, permission);
405
- }
406
- /**
407
- * 获取高信誉节点
408
- */
409
- getHighReputationNodes(minScore) {
410
- return this.reputationSystem.getHighReputationNodes(minScore);
411
- }
412
- /**
413
- * 获取所有信誉记录
414
- */
415
- getAllReputations() {
416
- return this.reputationSystem.getAllReputations();
417
- }
418
- /**
419
- * 记录评审惩罚
420
- */
421
- recordReviewPenalty(peerId, delta, reason) {
422
- this.reputationSystem.recordReviewPenalty(peerId, delta, reason);
423
- }
424
- /**
425
- * 记录评审奖励
426
- */
427
- recordReviewReward(peerId, delta) {
428
- this.reputationSystem.recordReviewReward(peerId, delta);
429
- }
430
- }
431
- exports.ReputationManagerAdapter = ReputationManagerAdapter;
432
- //# sourceMappingURL=reputation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../src/reputation.ts"],"names":[],"mappings":"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"}